Méthode de newton : calcul d'une racine carrée

Description

Le programme suivant calcul la racine carrée d'un nombre donné grâce à la méthode de Newton. La marge d'erreur du calcul est de 0.0001.

Source / Exemple :


///////////////////////////////////////////////////////////
//  Fichier              : uNewton.pas                   //
//  Auteur               : Stéphane HAIMET               //
//  Date de création     : 14/02/08                      //
//  Date de modification : 14/02/08                      //
///////////////////////////////////////////////////////////

unit uNewton;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    eIteration: TEdit;
    eCarree: TEdit;
    eNombre: TEdit;
    bCalculer: TBitBtn;
    bFermer: TBitBtn;
    lMessage: TLabel;
    procedure bCalculerClick(Sender: TObject);
    function verifNbre(nombre:string):string;
    procedure eNombreChange(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//Quand on clique sur le bouton calculer :
procedure TForm1.bCalculerClick(Sender: TObject);
var verif : string;
    nombre, x0, x, marge : real;
    n : integer;
begin
   //On vérifie le nombre entré ensuite on fait le calcul
   verif:=verifNbre(eNombre.text);
   if(verif='erreur') then
   begin
      lMessage.caption:='Entrez un nombre réel positif';
   end
   else begin
      n:=0;
      nombre:=strtofloat(eNombre.Text);
      x:=(1+nombre)/2;
      repeat
         x0:=x;
         x:=0.5*(x0+nombre/x0);
         n:=n+1;
         marge:=abs((x-x0)/x0);
      until((marge<0.0001)AND(marge>-0.0001));
      eIteration.text:=inttostr(n);
      eCarree.text:=floattostr(x);
   end;
end;

//Fonction qui vérifie le nombre entré :
function TForm1.verifNbre(nombre:string):string;
begin
   if (strtofloat(nombre)>0) then
      result:='ok'
   else result:='erreur';
end;

//Quand on change l'édit nombre :
procedure TForm1.eNombreChange(Sender: TObject);
begin
   lMessage.caption:='';
   eCarree.Text:='';
   eIteration.text:='';
end;

end.

Conclusion :


Enjoy

Codes Sources

A voir également

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.