begin process at 2012 05 27 14:05:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CALCUL DES RACINES D'UNE FONCTION DU SECOND DEGRÉ DANS LES RÉELS ET LES COMPLEXES

CALCUL DES RACINES D'UNE FONCTION DU SECOND DEGRÉ DANS LES RÉELS ET LES COMPLEXES


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :06/03/2004 Date de mise à jour :06/03/2004 00:16:07 Vu / téléchargé :3 850 / 245

Auteur : lemagicien

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 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.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip AFFICHAGE FORMATÉ DES NOMBRES RÉEL (CHOIX DU NONBRE DE DÉCIM...
Source avec Zip PROGRAMME DE CALCUL DE L'HYPOTÉNUSE D'UN TRIANGLE RECTANGLE
Source avec Zip RÉGRESSION LINÉAIRE PAR LA MÉTHODE DES MOINDRES CARRÉS

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de djl le 06/03/2004 09:26:37

juste une chose, si la fonction (ou plutot procedure) s'occupe elle meme de l'affichage, alors elle est pas variment reutilisable

Commentaire de lemagicien le 06/03/2004 12:19:10

Oui on pourait refaire la fonction qui retourne la valeur de la racine mais le probleme est qu il faut gérer le fait qu'il peut y avoir 2 racines.
Ce qui deviens plus compliqué tout de suite.

Il faut prendre en compte également de retourner le type de racines,
racine réel ou racine complexe.

Si tu as une idée pour faire ca simplement je suis preneur.

Pour ma part la seul solution que je vois c'est de passer un tableau en paramettre et de stocker les valeurs dedant puis seulement d'afficher.

Commentaire de djl le 06/03/2004 12:56:48

ou tu retourne une structure

genre (en c)

typedef struct
{
float racine_double;
float racine_1,racine_2;
...
int type_resultat;
} Resultat;

apres tu passe un Resultat en parametre et tu recupere le type avec type_resultat genre :

swicth(res.type_resultat)
{
case 0 : // 2 racine
case 1 : // racine double
...
}

Commentaire de lemagicien le 06/03/2004 13:11:03

Oui c pas bete ca merci je v voir comment utiliser cela.

Commentaire de Kirua le 07/03/2004 13:29:47

utilise l'en-tête <complex>

//types possibles
enum TypeSolution
{
  Reelle = 1,
  Complexe,
  Vide
};

struct Solution
{
   TypeSolution TypeSol1, TypeSol2;
   double FSol1, FSol2;
   complex CSol1, CSol2;
};

comme ça c'est du tt beau C++, et plus de typedef et tu évites des const ou des #define: tu as un tt beau énum ;-)

Commentaire de lemagicien le 07/03/2004 14:48:12

Merci je vais regarder les 2 solutions que vous me proposez.

Commentaire de MetalDwarf le 07/03/2004 18:13:27

C est sur que calculer les racines d un trinome du second degre est un grand classique mais ca commence un peu a faire deja vu... Sinon renvoyer une structure peut etre interessant, mais pour qui?
Tu devrais essayer de mettre en oeuvre des solutions pour des equations de degres superieurs, la ce serait vraiment interessant...

Commentaire de vecchio56 le 07/03/2004 20:44:20 administrateur CS

c'est sur que s'il peut trouver les solutions exactes de polynomes de degré supérieur à 4 ce serait super, sachant que c'est impossible

Commentaire de lemagicien le 07/03/2004 20:57:05

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

Commentaire de lemagicien le 07/03/2004 21:04:24

bien sur pas exacte mais aprochées

Commentaire de Kirua le 07/03/2004 21:14:36

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 :-/

Commentaire de lemagicien le 07/03/2004 21:47:42

Oui je viens de lire un truc la dessus, en effet c lourd a calculer en plus

Commentaire de mehdizsoft le 18/04/2007 20:18:35

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.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales