Calcul des racines d'une fonction du second degré dans les réels et les complexes

Soyez le premier à donner votre avis sur cette source.

Vue 5 218 fois - Téléchargée 305 fois

Description

Ce programme permet de calculer les racines d'une équation du second degré.

Il prend en compte tous les cas possibles (équation impossible, indéterminée, racines doubles, racines complexes,etc...).

J'ai mis sous forme de fonction pour pouvoir réutilisé dans une autre source si vous en avez besoin.

La protoype de la fonction est:

void racine(float a,float b,float c);

Et l'appel de la fonction comme suite:

racine(a,b,c);

où "a" est coef de X carré,
"b" le coef de X
et "c" le terme indépendent.

LA fonction est de type void elle ne retourne rien et s'occupe elle même de l'affichage des réponses.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
18 avril 2007

J'ai un autre probleme ,avec un autre programme !
voila le programme en Pascal :

program TP3;
var a,b :real ;
i,j :integer ;
begin
a:= 1;
while (((a+1)-a)-1=0) do
begin
a:=a*2;
{writeln(a);}
i:=i+1;
end;
writeln('a=', a,' i=', i);
{-------------------------}
b:=1;
while (((a+b)-a)-b) <> 0 do
begin
b:=b+1;
j:=j+1;
end;
writeln('b=', b, ' j=', j);
end.

et voila l'affichage :

a= 1.0995116278E+12 i=40
b= 2.0000000000E+00 j=1

et voila un résultat plus détaillé :

2.0000000000E+00
4.0000000000E+00
8.0000000000E+00
1.6000000000E+01
3.2000000000E+01
6.4000000000E+01
1.2800000000E+02
2.5600000000E+02
5.1200000000E+02
1.0240000000E+03
2.0480000000E+03
4.0960000000E+03
8.1920000000E+03
1.6384000000E+04
3.2768000000E+04
6.5536000000E+04
1.3107200000E+05
2.6214400000E+05
5.2428800000E+05
1.0485760000E+06
2.0971520000E+06
4.1943040000E+06
8.3886080000E+06
1.6777216000E+07
3.3554432000E+07
6.7108864000E+07
1.3421772800E+08
2.6843545600E+08
5.3687091200E+08
1.0737418240E+09
2.1474836480E+09
4.2949672960E+09
8.5899345920E+09
1.7179869184E+10
3.4359738368E+10
6.8719476736E+10
1.3743895347E+11
2.7487790694E+11
5.4975581389E+11
1.0995116278E+12
a= 1.0995116278E+12 i=40
b= 2.0000000000E+00 j=1

J'ai remarqué d'apres cet l'affichage que la valeur de « a »
se multiplie par « 2 » à chaque fois .
arrivé à la ligne « 36 » il ya un changement au niveau de la valeur de « a »
donc la multiplication n'est pas exacte , elle perd de la précision :
« 6.8719476736E+10 x 2 » différent de « 1.3743895347E+11 »

voila !
Je ne comprends pas pk la 1ere boucle s'arrete et pk la 2eme boucle ne s'execute qu'une seule fois !
Si kélkin a une idée ,kil m'explique :( :)
Merci beaucoup.
Messages postés
95
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2004

Oui je viens de lire un truc la dessus, en effet c lourd a calculer en plus
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

avec la méthode de newton tu dois déjà avoir une idée d'où se trouvent les racines, pour avoir une bonne approximation affine de départ, sinon l'erreur devient énorme et tu tombes complètement à côté. une idée pr trouver une première approximation c'est de générer des points sur un intervalle, mais c'est insatisfaisant comme méthode :-/
Messages postés
95
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2004

bien sur pas exacte mais aprochées
Messages postés
95
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2004

Normalement c'est possible.
Si je me souviens bien c'est avec la méthode de Newton.
Afficher les 13 commentaires

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.