Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
La Vache En Liberté
Publicité
Visiteurs
Depuis la création 26 811
Newsletter
Archives
15 juillet 2022

Recalculer ies logarithmes à la main.

L'utilisation des logarithmes a révolutionné les calculs mathématiques, 300 ans avant l'informatique . Si les tables d'addition et de multiplication sont mémorisables et mémorisées, les tables logarithmiques sont trop complexes et infinies.

Une échelle logarithmique permet de représenter sur un même graphique des nombres dont l'ordre de grandeur est très différent. Les logarithmes sont fréquents dans les formules utilisées en sciences, mesurent la complexité des algorithmes et des fractales et apparaissent dans des formules permettant de dénombrer les nombres premiers.

Mais comment les recalculer ?

Méthode de Newton.

\ln(1+x)=x-{\frac {x^{2}}{2}}+{\frac {x^{3}}3}-{\frac {x^{4}}4}+\cdots +(-1)^{{k}}{\frac {x^{{k+1}}}{k+1}}+\cdotspour x<=1

Tout logarithme transforme


e=2,718281828459045.

Changement de base

 

Logarithmes et valeurs inverses.

log(1)=0

~>log(N/N)=0

~> log(N) + log(1/N) = 0

~> log(N) = - log(1/N)

si N<1 alors log(N)<0



Au final



la méthode de Newton peut être utilisée pour x comprit entre --1 et +1 soit x+1 entre 0 et 2.
Pour les valeur > 2 on calcule sur l'inverse.
Plus x diverge de 0, plus la convergence est  lent

On peut aussi retenir ln(2) et ln(10) par exemlple, et décomposer jusqu'à une valeur <2 : 523 = 10*10*2*2*1.3075
Il reste donc à calculer ln(1.3075).
En fait, tout ceci n'a d'intéret que pour un processeur piloté par un programme sans fonction log par défaut.

Source Tableur

A1=valeur
E1=ln(A1)
B8=PUISSANCE(-1;A8+1)
C8=PUISSANCE(A$1-1;A8)/A8* B8
D8=D7+C8
Les colonnes E à J sont la moyenne des colonnes précédentes et permettent de'obtenir la convergence plus rapidement. Par exemple, E8 = (D8+ D7) /2..

Source Pascal

Function logarithme(n : extended) : extended;
const
  ln10 = 2.30258509299;
  ln2  = 0.69314718056;
  precision = 0.0000000001;
var
  i,j :int;
  log,plog,delta : extended ;
begin
  i:=0;
  while n>2 do begin inc(i); n:=n/2;end;
  x:=n-1;
  j:=0;log:=0;
  repeat
     j:=j+1;
     delta:=power(-1,j+1)*+power(x,j)/j;
     plog:=log;
/     log:=log+delta;
  until abs(log-plog)<=precision;
  Result:=log+(i*log2);
// il suffit de diviiser par ln10 pour les logs décimaux
end;v

 

Publicité
Publicité
Commentaires
Publicité