Accueil > > > MÉTHODE DICHOTOMIQUE : CALCUL DE RACINE CUBIQUE
MÉTHODE DICHOTOMIQUE : CALCUL DE RACINE CUBIQUE
Information sur la source
Description
Le programme suivant calcul, grâce à la méthode dichotomique, la racine cubique d'un nombre donné. La marge d'erreur est de 0.0001.
Source
- ///////////////////////////////////////////////////////////
- // Fichier : uDichotomique.pas //
- // Auteur : Stéphane HAIMET //
- // Date de création : 12/02/08 //
- // Date de modification : 13/02/08 //
- ///////////////////////////////////////////////////////////
-
-
- unit uDichotomique;
-
- 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;
- eRacine: TEdit;
- eNombre: TEdit;
- bCalculer: TBitBtn;
- bFermer: TBitBtn;
- lMessage: TLabel;
- procedure eNombreChange(Sender: TObject);
- procedure bCalculerClick(Sender: TObject);
- function psqrt(nombre:real):real;
- private
- { Déclarations privées }
- public
- { Déclarations publiques }
- end;
-
- var
- Form1: TForm1;
- //Variable publique :
- n: integer;
-
- implementation
-
- {$R *.dfm}
-
-
- //Quand on change l'édit nombre
- procedure TForm1.eNombreChange(Sender: TObject);
- begin
- lMessage.caption := '';
- eIteration.Text:='';
- eRacine.Text:='';
- end;
-
-
- //Quand on clique sur le bouton "calculer"
- procedure TForm1.bCalculerClick(Sender: TObject);
- var nombre, resultat : real;
- begin
- nombre:=strtofloat(eNombre.text);
- resultat:=psqrt(nombre);
- eIteration.text:=inttostr(n);
- eRacine.Text:=floattostr(resultat);
- end;
-
-
- //Fonction qui calcul la racine cubique
- function TForm1.psqrt(nombre:real):real;
- var bornInf, bornSup, bornMil : real;
- begin
- n:=0;
- bornMil:=(bornInf+bornSup)/2;
- //Si on a un nombre positif :
- if (nombre>0) then
- begin
- bornInf:=0;
- bornSup:=nombre;
- end
- else begin
- bornInf:=nombre;
- bornSup:=0;
- end;
- //On commence la boucle de recherche
- repeat
- if((bornMil*bornMil*bornMil)<nombre) then
- bornInf:=bornMil
- else
- bornSup:=bornMil;
- bornMil:=(bornInf+bornSup)/2;
- n:=n+1;
- until (((nombre-(bornMil*bornMil*bornMil))>-0.0001)
- AND (nombre-(bornMil*bornMil*bornMil)<0.0001));
- result:=bornmil;
- end;
-
-
- end.
///////////////////////////////////////////////////////////
// Fichier : uDichotomique.pas //
// Auteur : Stéphane HAIMET //
// Date de création : 12/02/08 //
// Date de modification : 13/02/08 //
///////////////////////////////////////////////////////////
unit uDichotomique;
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;
eRacine: TEdit;
eNombre: TEdit;
bCalculer: TBitBtn;
bFermer: TBitBtn;
lMessage: TLabel;
procedure eNombreChange(Sender: TObject);
procedure bCalculerClick(Sender: TObject);
function psqrt(nombre:real):real;
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
//Variable publique :
n: integer;
implementation
{$R *.dfm}
//Quand on change l'édit nombre
procedure TForm1.eNombreChange(Sender: TObject);
begin
lMessage.caption := '';
eIteration.Text:='';
eRacine.Text:='';
end;
//Quand on clique sur le bouton "calculer"
procedure TForm1.bCalculerClick(Sender: TObject);
var nombre, resultat : real;
begin
nombre:=strtofloat(eNombre.text);
resultat:=psqrt(nombre);
eIteration.text:=inttostr(n);
eRacine.Text:=floattostr(resultat);
end;
//Fonction qui calcul la racine cubique
function TForm1.psqrt(nombre:real):real;
var bornInf, bornSup, bornMil : real;
begin
n:=0;
bornMil:=(bornInf+bornSup)/2;
//Si on a un nombre positif :
if (nombre>0) then
begin
bornInf:=0;
bornSup:=nombre;
end
else begin
bornInf:=nombre;
bornSup:=0;
end;
//On commence la boucle de recherche
repeat
if((bornMil*bornMil*bornMil)<nombre) then
bornInf:=bornMil
else
bornSup:=bornMil;
bornMil:=(bornInf+bornSup)/2;
n:=n+1;
until (((nombre-(bornMil*bornMil*bornMil))>-0.0001)
AND (nombre-(bornMil*bornMil*bornMil)<0.0001));
result:=bornmil;
end;
end.
Conclusion
Enjoy
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Racine cubique [ par lanosic ]
J'aimerais savoir comment on fait pour calculer une racine cubique. Pour une racine carée c'est avec (Sqrt), mais il n'y a pas de fonction pour la rac
Exécution d'une méthode incluse dans un package PL/SQL [ par DeadSoul ]
Bonjour,Voici mon problème :Je désire exécuter une méthode PL/SQL incluse dans un package OracleJe connais l'existence de la classe TStoredProcedure,
Affichage écran de demarrage [ par lirva ]
Bonjour,J'ai suivi la méthode de l'aide pour afficher une Form pendant 3 secondes au démarrage de mon appli :<<procedure TForm1.FormActivate(Sen
Appel d'une Form [ par apz ]
salut, pour appeler une form, certains utilisent la méthode suivante : ------------------------------------------------------------Form1.Show---------
Choisir la piste d'un cd audio [ par alexistoulotte ]
Est-ce que qqn connait une méthode pour aller directement a la piste d'un cd audio que l'utilisateur a choisi (par un edit par exemple).Merci d'avance
Libération de ressources [ par nicolaspennaneach ]
j'ai une application MDI où chaque fenètre enfant possède un thread pour effectuer certaines opérations. Lorsque j'exécute la méthode formclose d'une
pointeur de méthode dans une dll ... [ par silmortes ]
Slt !!!!J'ai un soucis j'ai un objet TIBDatabase que je créé dynamiquement dans ma dll : Database := TIBDatabase.Create(NIL); Da
Donner une direction à un objet (bitmap ou autre) [ par Yml ]
Bonjour,J'aimerai développer un casse brique et pour cela, il me faudrait une méthode pour que la balle puisse se diriger dans toutes les directions.P
Méthode AddIndex [ par margout ]
MargoutBonjour à tous,J'ai utilisé la methode AddIndex avec une TTable pour ajouter un index secondaire sur un champsTable1.AddIndex ('Indexdate', 'da
Code Delphi de méthodes de planification [ par abidcha ]
Bonjour,J'aimerai savoir si quelqu'un à le code Delphi des méthodes de planification de la production suivantes:- Méthode MRP - Méthode JIT (Just In T
|
Derniers Blogs
[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE par Audrey
A l'occasion d'un projet client, j'ai utilisé RIA Services avec Silverlight 3 (mais cela fonctionne aussi avec la version 4), et je l'ai utilisé pour une interface façon Maitre / Détail. Voici comment j'ai procédé pour arriver à mes fins. Nous allons pren...
Cliquez pour lire la suite de l'article par Audrey CSDL FUNCTIONCSDL FUNCTION par Matthieu MEZIL
Dans mon post précédent , j'ai utilisé une CSDL Function afin de générer une requête SQL avec un DateDiff utilisant la date courante sur la BD à partir d'une requête LINQ. Dans le cadre de ce post , vous avez probablement remarqué que dans le cadre de plu...
Cliquez pour lire la suite de l'article par Matthieu MEZIL LINQ TO ENTITIESLINQ TO ENTITIES par Matthieu MEZIL
Cette semaine je suis à Montréal en tant que speaker sur Entity Framework pour l'évènement confoo . J'en profite pour remercier les organisateurs de cet évènement de m'avoir fait confiance et Access-IT de m'avoir permis d'y participer. En parallèle, j'ai ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010 par neodante
La nouvelle interface d'Office 2010 à amener quelques modifications par rapport à celle de 2007. Certes mineures, ces modifications ont fait disparaître la case à cocher de l'onglet 'Développeur' en première page du panneau du 'bouton Office' (dans Office...
Cliquez pour lire la suite de l'article par neodante [ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1[ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1 par pierre
Si vous avez téléchargé comme moi Microsoft Forums NNTP Bridge V1 avant le 11 mars 2010 (voir [Astuce] Disponibilité de Microsoft Forum NNTP Bridge Version 1.0), un problème de date localisée pour les non anglais était présent. Un patch est disponibl...
Cliquez pour lire la suite de l'article par pierre
Forum
RE : APPLICATIONSRE : APPLICATIONS par aminazineb
Cliquez pour lire la suite par aminazineb
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|