Bouuu je c plus resoudre un polunome [Math je dirais] - Divers - Programmation
Marsh Posté le 20-09-2002 à 14:49:44
équation du 3° degré -> Methode de Ferrari
Je recherche le lien et je reposte
A+
Marsh Posté le 20-09-2002 à 14:52:06
Bon ça fait bien longtemps...mais pourquoi pas mettre le x en facteur...ça te fais deja une solution, et puis apres ton polynome il est plus que du second degres non???
Marsh Posté le 20-09-2002 à 14:53:05
En fait c'était Cardan (de son vrai nom Hyeronimus Cardano), Ferrari lui, c'était l'équation du 4° degré...
voir :
http://chronomath.irem.univ-mrs.fr/Anx1/Equdeg3.html
Mais vu la complexité de la méthode, je ferais à ta place une boucle de 1 à 100...
A+
Marsh Posté le 20-09-2002 à 14:54:10
-> grosmethos : tu peux pas simplifier par x, il y a le terme constant 6A/25 ...
Marsh Posté le 20-09-2002 à 15:31:55
JPA merci ca servira pour ma culture, et oui vu la complexité de la solution je vais rester sur l idée de la boucle.
Marsh Posté le 20-09-2002 à 16:36:59
6A/25 = x (x-1) (2x-1)
Or A divisible par 25 et x entier
donc
1 * 2 * 3A/25 = x (x-1) (2x-1)
=> 1 = x
2 = x-1
3A/25 = 2x-1
A = 25/3 Loupé
ou
1A/25 * 2 * 3 = x (x-1) (2x-1)
=> 1A/25 = x
2 = x-1
3 = 2x-1
Loupé niveau x
ou
1 * 2A/25 * 3 = x (x-1) (2x-1)
=> 1 = x
2A/25 = x-1
3 = 2x-1
A= 25/2 Loupé
ou
2 * A/25 * 3 = x (x-1) (2x-1)
=> 2 = x
A/25 = x-1
3 = 2x-1
A= 25 gagné et x = 2
...
ça fait avancer le bordel ma mise en facteur ?
C Vendredi
Marsh Posté le 21-09-2002 à 00:59:19
Un petit coup de Maple me donne 3 solutions (probablement conjugées ...) avec des racines et des complexes un peu partout.
Converti en C (et optimisé pour minimiser le nombre d'opérations, cool maple), ça donne :
Racine 1
t2 = A*A;
t5 = sqrt(-1875.0+11664.0*t2);
t8 = pow(1620.0*A+15.0*t5,0.3333333333333333);
t12 = t8/30.0+5.0/2.0/t8+1.0/2.0;
racine 2
t2 = A*A;
t5 = sqrt(-1875.0+11664.0*t2);
t8 = pow(1620.0*A+15.0*t5,0.3333333333333333);
t10 = 1/t8;
t12 = sqrt(3.0);
t18 = -t8/60.0-5.0/4.0*t10+1.0/2.0+sqrt(-1.0)*t12*(t8/30.0-5.0/2.0*t10)/2.0;
racine 3
t2 = A*A;
t5 = sqrt(-1875.0+11664.0*t2);
t8 = pow(1620.0*A+15.0*t5,0.3333333333333333);
t10 = 1/t8;
t12 = sqrt(3.0);
t18 = -t8/60.0-5.0/4.0*t10+1.0/2.0-sqrt(-1.0)*t12*(t8/30.0-5.0/2.0*t10)/2.0;
Atention : les 'tx' n'ont pas forcément la même valeur d'une racine à l'autre, met ça dans des fonctions séparées ...
Mais attention : dans les racines 2 et 3, il y a des imaginaires.
Marsh Posté le 21-09-2002 à 01:06:30
la même chose, mais avec le changement de variable Z=6*A/26 :
R1 :
t2 = Z*Z;
t5 = sqrt(-3.0+324.0*t2);
t8 = pow(54.0*Z+3.0*t5,0.3333333333333333);
t12 = t8/6.0+1/t8/2.0+1.0/2.0;
R2 :
t2 = Z*Z;
t5 = sqrt(-3.0+324.0*t2);
t8 = pow(54.0*Z+3.0*t5,0.3333333333333333);
t10 = 1/t8;
t12 = sqrt(3.0);
t18 = -t8/12.0-t10/4.0+1.0/2.0+sqrt(-1.0)*t12*(t8/6.0-t10/2.0)/2.0;
R3 :
t2 = Z*Z;
t5 = sqrt(-3.0+324.0*t2);
t8 = pow(54.0*Z+3.0*t5,0.3333333333333333);
t10 = 1/t8;
t12 = sqrt(3.0);
t18 = -t8/12.0-t10/4.0+1.0/2.0-sqrt(-1.0)*t12*(t8/6.0-t10/2.0)/2.0;
Marsh Posté le 20-09-2002 à 14:15:03
Bon normalement les programmateurs sont pas mauvais en math, et j ai un soucis.
Voila dans un programme je dois inclure ca :
Sachant que A est donne et divisible par 25 et que x sera tjs positif, et entier compris entre 1 et 100
Comme j ai pas envie de faire un boucle de 1 a 100 pour savoir a cb est x je voulais savoir si quelqu'un aurait un resultat expoitable