[RESOLU] Résoudre une équation à 12 inconnus !!!

Eléphant du PHP | 103 Messages

10 nov. 2013, 18:32

Bonsoir à vous!

Je dois créer un code PHP pour résoudre un système d'équations à 12 inconnus (a/b/c/d/e/f/g/h/i/j/k/l) comme ceci :
31a+b29.47923653+c25.1796961+d18.83570371+e11.5034211+f4.34858146+g8.331126702+h15.46742591+i20.44243628+j22.69734117+k22.17332318+l19.2989756=60
28a+b19.6502789+c0.115892934+d(-18.00327569)+e(-23.86425523)+f(-15.51264469)+g19.56589436+h26.92943631+i18.23722322+j0.205407179+k(-15.18238781)+l(-19.22018428)=80
31a+b8.457914577+c(-25.04563534)+d(-20.6839071)+e11.11101933+f22.2617546+g29.44311022+h15.68357455+i(-18.57021602)+j(-22.8919908)+k3.87049139+l19.25170898=130
30a+b(-7.204891271)+c(-25.30208199)+d18.18538854+e13.87174256+f(-21.02931547)+g28.77995916+h(-13.51549593)+i(-20.08076023)+j20.73637298+k7.540364339+l(-19.27317629)=150
31a+b(-21.33268816)+c(-0.890083477)+d20.52330715+e(-25.39981101)+f14.73012515+g21.98521035+h(-29.53753733)+i18.74755448+j1.532185964+k(-17.13446336)+l19.28464831=180
30a+b(-28.54988761)+c24.44235993+d(-18.35754997)+e11.27847585+f(-4.299426935)+g8.068483416+h(-15.01449381)+i19.92349484+j(-22.25350283)+k21.92268531+l(-19.30326619)=200
31a+b(-29.68450628)+c25.94455032+d(-20.36118681)+e13.7822517+f(-7.167164555)+g(-7.567241603)+h14.14703746+i(-18.9235041)+j21.39036071+k(-21.42890976)+l19.31187319=210
31a+b(-21.70796675)+c0.127173624+d19.52820329+e(-25.44503932)+f16.14855749+g(-21.61474584)+h29.55067151+i(-19.78196683)+j0.219013487+k15.80476233+l(-19.36205774)=170
30a+b(-7.699223476)+c(-24.82186284)+d19.19770623+e12.41215798+f(-21.59967452)+g(-28.65167474)+h14.3784251+i19.11526518+j(-21.64164366)+k(-5.704670358)+l19.36779715=140
31a+b7.949846704+c(-25.57064722)+d(-19.69774328)+e12.65971413+f21.84661946+g(-29.584337)+h(-14.81216934)+i19.61315491+j22.07327867+k(-5.769890761)+l(-19.36349222)=90
30a+b21.02361133+c0.123449603+d(-19.03247011)+e(-24.94747074)+f(-15.96602103)+g(-20.93332926)+h(-28.68534022)+i(-19.27979173)+j(-0.214730757)+k15.62611198+l19.36636235=60
31a+b29.61827551+c25.69718836+d19.86582402+e13.03779366+f6.238609036+g(-7.822455759)+h(-14.59153421)+i(-19.44289)+j(-21.85209211)+k(-21.71741648)+l(-19.35918888)=50
Comment diable puis je faire?!!!

Merci à vous!

Mammouth du PHP | 2278 Messages

11 nov. 2013, 10:30

Problème mathématique inédit du niveau de maternelle supérieure prends ton bouquin de maths pour y chercher l'algorithme. ou tourne-toi vers mathematica, R, ou autre et tu auras une solution du genre:
a = b#+c##+d##....
ou en programmant la méthode de gauss:
http://fr.wikipedia.org/wiki/Éliminatio ... uss-Jordan
ou:
http://forum.codecall.net/topic/34670-gauss-algorithm/
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
ViPHP | 2577 Messages

12 nov. 2013, 11:49

Je pense a un calcul "bestial" de déterminants à partir d'un tableau à 2 dimensions, genre inversion de matrices. Comme dit précédemment, il y a l'algorithme dans les bouquins de math.
Tu peux faire un algo qui prend en compte une matrice NxN (pour les coefficients des variables) et un tableau de N (pour les constantes) et commencer le test avec N=2, puis N=3...

Etape 1 : vérifier que le nombre de lignes = nombres de colonnes pour chaque ligne et nombre de constante = nombre de lignes
Etape 2 : calcul du déterminant pour vérifier qu'il y a une solution et une seule (il doit y avoir de récursivité de mémoire)
Etape 3 : calcul de la solution unique

Mammouth du PHP | 2278 Messages

12 nov. 2013, 22:02

Au passage, on ne résout pas UNE équation à 12 inconnues mais un SYSTEME de 11 équations à 12 inconnues.
Exemple simpliste sur 2 inconnues si je ne trompe pas trop:
3a + 5b = 0=>
a = - 5b/3
il vient:
3* - 5b/3 +5b = 0
qui donne
-5b +5b = 0
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 170 Messages

12 nov. 2013, 22:27

=D>

ViPHP
ViPHP | 2577 Messages

12 nov. 2013, 23:06

C'est N variables et N équations.

On prend un équation qui comporte la premier variable (coef non nul) : Genre axA + bxB .... + constante = 0 avec a <> 0
Puis pour chacun autre N-1 équations on replace par a' x a x A + a' x b x B + .... - a x a' x A - a x b' - ... = 0
Ce qui fait : (a' x b - a x b') x B + ... = 0 (on a supprimé A)
On a donc 1 équation avec N variables et N-1 équations avec N-1 équations.
on recommence jusqu'à avoir 1 équation avec 1 variable ce que l'on sait résoudre.
Ensuite on reporte la solution pour cette variable dans les autres restantes.
L'équation à 2 variables devient à 1, celle à 3 à 2 ... donc ont répète l'opération...

Mais le plus simple par programme, c'est le calcul par les matrices que j'ai oublié. C'est trop loin et c'est pas les math que j'aime. Je suis plus limites, continuité voir des trucs comme la définition des réels par les sections commençante ouverte. Le top c'est les ouverts qui sont fermés :lol:

Eléphant du PHP | 170 Messages

12 nov. 2013, 23:24


Mammouth du PHP | 2278 Messages

13 nov. 2013, 09:57

Réunir 12 personnes qui ne se connaissent pas pour résoudre une équation pourrait ête inscrit au livre des records:
"12 inconnus "
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 103 Messages

14 nov. 2013, 17:14

Bonjour!
Désolé, je n'ai pas de solution à apporter car étant trop lourd, je suis parti sur une autre structure épaulé par bdd qui fonctionne bien mieux!
Désolé du dérangement, je demande la suppression du topic auprès du modérateur.
Merci à tous et bonne continuation!
Bye

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 nov. 2013, 22:57

salut,

pas de suppression des idées sont la.

Il ne s'agit pas forcément d'un problème trivial et même s'il n'y a pas de solution complète les idées peuvent toujours aider quelqu'un :mrgreen:

@+
Il en faut peu pour être heureux ......