2009-06-26 5 views
1

Je possède ce peu de VB6 découpé en tranches d'un projet, je travaille sur:Comment calculer le log d'un nombre complexe à une base autre que 'e'?

Public Function C_Ln(c As ComplexNumber) As ComplexNumber 
    Set C_Ln = toComplex(Log(C_Abs(c)), Atan2(c.Imag, c.Real)) 
End Function 

La fonction VB6 Log() est base e. Je voudrais cuisiner des versions de cela pour faire base-2, base-10 et base-n. Où est-ce que je commence?

Répondre

8

Vous pouvez utiliser la identity mathématique suivante:

alt text

En VB ce serait quelque chose comme:

Log10 = Log(X)/Log(10) 
Log2 = Log(X)/Log(2) 
' ... LogN = Log(X)/Log(N) 
+0

et cela fonctionne toujours bien pour les nombres complexes? Désolé si je semble naïf, c'est parce que je suis (w.r.t. numéros complexes) – bugmagnet

+2

Cela fonctionne très bien avec des nombres complexes, mais les journaux complexes sont infiniment évalués. Votre formule calculerait seulement la branche principale, mais c'est probablement assez bon. En pratique, personne n'aime une fonction infiniment valorisée. –

+2

@boost, oui, voir: http://en.wikipedia.org/wiki/Complex_logarithm#Logarithms_to_other_bases (mais notez qu'un nombre complexe a plus d'un logarithme). – molf

1

Si vous divisez le logarithme naturel de x par le journal de la base vous voulez atteindre vous obtenez le résultat désiré, à savoir (ln x)/(ln n) = y

Voir here for an explanation

Questions connexes