Calcul de la fonction logarithme

Soyez le premier à donner votre avis sur cette source.

Vue 16 478 fois - Téléchargée 332 fois

Description

Deux façons de le calculer en base 10 et en népérien
J'utilisais cette méthode sur une calculette 4 opérations.C'était il y a longtemps.

Source / Exemple :


Public Function ZLog10(X) As Double
    Dim Wi As Integer
    Dim N, N1, N2, N3 As Double
    Dim P As Integer
    Dim Sg As Boolean
    Sg = True
    If X <= 0 Then
        xx = MsgBox("Valeur négative ou nulle interdite", vbCritical, "Calcul du Log")
        Exit Function
    End If
    
    If X < 1 And X > 0 Then
        X = 1 / X
        Sg = False
    End If
    
    N1 = X
    P = 0
    N2 = 0
    N3 = 1
    While P < 16
        Wi = 0
        N = N1
        While N >= 10
            N = N / 10
            Wi = Wi + 1
        Wend
        N1 = N * N
        N1 = N1 * N1
        N1 = N1 * N
        N1 = N1 * N1
        N2 = N2 + Wi / N3
        P = P + 1
        N3 = N3 * 10
    Wend
    If Not Sg Then
        N2 = -N2
    End If
    
    ZLog10 = N2
End Function

Public Function ZLog2(X) As Double
    Dim Wi, Wj, Wk, Wl As Integer
    Dim N, N1, N2, N3 As Double
    Dim P As Integer
    Dim Sg As Boolean
    'log(2)=0.693147180559945309417232121458176568075500134360255254120678
    Dim WLOG2 As Double
    WLOG2 = 0.693147180559945
    Sg = True
    If X <= 0 Then
        xx = MsgBox("Valeur négative ou nulle interdite", vbCritical, "Calcul du Log")
        Exit Function
    End If
    
    If X < 1 And X > 0 Then
        X = 1 / X
        Sg = False
    End If
    
    N1 = X
    P = 0
    N2 = 0
    N3 = 1
    While P < 60
        Wi = 0
        N = N1
        While N >= 2
            N = N / 2
            Wi = Wi + 1
        Wend
        N1 = N * N
        N2 = N2 + Wi / N3
        P = P + 1
        N3 = N3 * 2
    Wend
    If Not Sg Then
        N2 = -N2
    End If
    
    ZLog2 = N2 * WLOG2
End Function

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7 -
bonsoir,

J'ai peur de ne pas comprendre...?

Zlog2(X) donne le même résultat que la fonction de base de VB : log(X)
Zlog10(X) // // l'expression : log(X)/log(10)

Quel est donc l'intérêt ?

Une suggestion faire un calcul en multiprécision... au lieu de Double...

Us.
cs_EBArtSoft
Messages postés
4531
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
4 -
... a rien. parfois on programme juste pour le plaisir d'ecrire du code :p
cs_casou
Messages postés
1
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
4 septembre 2008
-
Nickel ce code, sous J2ME y a pas de fonction log, ça m'a bien aidé, merci CFCTABLE

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.