Algorithme logarithme népérien
Exercice corrige Algorithme :
Soit :
Ln(x) = 1 si n=0 ,
x si n= 1 ,
((2n-1)xLn-1(x) - (n-1) Ln-2(x)) / n si n>1
1) Donner un programme Pascal iteratif permettant de calculer Ln(x).
2) Donner une fonction Pascal recursive permettant de calculer Ln(x).
CORRECTION
1.Algorithme Ln(x) :
La fonction logarithme népérien est définie sur l’intervalle ] 0 ; + ∞ [ , Un réel négatif ou nul ne possède donc pas d’image par la fonction logarithme., La fonction logarithme népérien est à valeurs dans R. La fonction logarithme népérien est la fonction réciproque de la fonction exponentielle : Pour tout x > 0 : y = ln x ⇔ x = ey ; Valeurs de référence : ln 1 = 0 et ln e = 1 Ln(x) = 1 si n=0 , x si n= 1 , ((2n-1)xLn-1(x) - (n-1) Ln-2(x)) / n si n>1 Cette définition récursive semble-t-il être utilise pour le calcul de la dérivée n-ième de la fonction logarithme népérien (ln(x)) en fonction de x. Cette formule nécessite d'avoir des valeurs précédentes de la dérivée pour fonctionner (Ln-1(x) et Ln-2(x)) pour calculer la dérivée n-ième (Ln(x)). Il est important de noter que cette formule est valable pour des valeurs de x strictement positives. program LnIteratif; var x, result: real; n: integer;
function Ln(x: real; n: integer): real; var i: integer; prev_result, prev_prev_result: real; begin if n = 0 then Ln := 1 else if n = 1 then Ln := x else begin prev_prev_result := 1; prev_result := x; for i := 2 to n do begin result := ((2 * i - 1)*x*prev_result - (i - 1) * prev_prev_result) / i; prev_prev_result := prev_result; prev_result := result; end; Ln := result; end; end; {www.PandaCodeur.com} begin write('Entrez la valeur de x : '); readln(x); write('Entrez la valeur de n : '); readln(n); writeln('Ln(', x, ') = ', Ln(x, n):0:6); end. {www.PandaCodeur.com}
|
2. fonction recursive Ln(x):
function Ln(x: real; n: integer): real; begin if n = 0 then Ln := 1 else if n = 1 then Ln := x else Ln := ((2*n-1)*x*Ln(x, n-1) - (n-1)*Ln(x, n-2))/n; end; {www.PandaCodeur.com} |
Il suffit de passer la valeur de x et n à la procédure pour obtenir le résultat de Ln(x). Notez que le calcul de Ln(x) pour un n>1 est fait en utilisant une formule recursive et est donc très couteuse en termes de calcul. Il est préférable de trouver une formule fermée pour le calculer si cela est possible.
Ajouter un commentaire