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.

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam