Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2071 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] Résolution d'un systême d'équation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Résolution d'un systême d'équation

n°12908
Krueger
tout salaire demande dutravail
Posté le 06-02-2001 à 13:37:02  profilanswer
 

Salut,
 
J'ai un sytême de type:
a11 * x1 + ... + a1n * xn = 0
.
.
.
an1 * x1 + ... + ann * xn = 0
 
Les inconnues sont x1, ... , xn
 
Comment le résoudre efficacement?
 
Merci d'avance

 

--Message édité par Krueger--


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
mood
Publicité
Posté le 06-02-2001 à 13:37:02  profilanswer
 

n°12910
Gertom
Posté le 06-02-2001 à 13:43:03  profilanswer
 

Pivot de Gauss. Fait une recherche dans le forum, il y a quelques mois, y'avait un très bon topic là-dessus.

n°12912
BENB
100% Lux.
Posté le 06-02-2001 à 13:47:53  profilanswer
 

La solution est triviale : x1 = ... = xi= ...=xn=0

n°12922
BENB
100% Lux.
Posté le 06-02-2001 à 14:24:52  profilanswer
 

A propos du Pivot de Gauss : c'est effectivement une methode, mais autant chasser le tigre a la petite culliere...
 
Pour un syteme AX=B (matriciel)
 
1) Systemes de de petite taille n connu :
resoudre a la main combinaison / substitution ou Cramer
 
2) Systemes de petite taille n inconnu
eventuellement Gauss ou derive, mais il y a les factorisation LR etc
 
3) Systemes de grande taille
Gauss ne marche plus (trop long et resultat faux) car les arrondis deviennent trop importants. Il faut utiliser des algo iteratifs. Tu suppose un vecteur X solution puis tu evalues AX(1) et tu as X(2)=f(AX(1)-B)...
 
Attention ces problemes ont generalement des particularites (matrice creuse, diagonale dominante, etc) qui permettent d'eviter le Pivot de Gauss qui est la pire (la plus lente) des methodes.
 
Attention Le Pivot de Gauss a la reputation de marcher quelque soit la matrice : c'est faux quand la matrice est trop grande le resultat est faux !

n°12923
BENB
100% Lux.
Posté le 06-02-2001 à 14:25:06  profilanswer
 

A propos du Pivot de Gauss : c'est effectivement une methode, mais autant chasser le tigre a la petite culliere...
 
Pour un syteme AX=B (matriciel)
 
1) Systemes de de petite taille n connu :
resoudre a la main combinaison / substitution ou Cramer
 
2) Systemes de petite taille n inconnu
eventuellement Gauss ou derive, mais il y a les factorisation LR etc
 
3) Systemes de grande taille
Gauss ne marche plus (trop long et resultat faux) car les arrondis deviennent trop importants. Il faut utiliser des algo iteratifs. Tu suppose un vecteur X solution puis tu evalues AX(1) et tu as X(2)=f(AX(1)-B)...
 
Attention ces problemes ont generalement des particularites (matrice creuse, diagonale dominante, etc) qui permettent d'eviter le Pivot de Gauss qui est la pire (la plus lente) des methodes.
 
Attention Le Pivot de Gauss a la reputation de marcher quelque soit la matrice : c'est faux quand la matrice est trop grande le resultat est faux !

n°12991
Krueger
tout salaire demande dutravail
Posté le 06-02-2001 à 18:43:37  profilanswer
 

Ok merci. Pour le pivot de Gauss je le savais déjà (théorique), mais je pensais que ça serait trop brutal de l'implémenter comme ça.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°12992
zeltron
Posté le 06-02-2001 à 18:55:18  profilanswer
 

BENB a écrit a écrit :

La solution est triviale : x1 = ... = xi= ...=xn=0




 
Il aurait plutot fallu dire une solution triviale est x1 = ... = xi= ...=xn=0.
Sauf  hypothese tres forte sur les coefficients (a)ij (la matrice  (a)ij doit etre inversible )cette solution est loin d'etre unique.

n°12994
Krueger
tout salaire demande dutravail
Posté le 06-02-2001 à 19:10:24  profilanswer
 

C'est justement pour en trouver une solution non nulle. En fait je voulais trouver le noyau de l'application de matrice M = (aij) =
/a11 ... an1\
| .            . |
\a1n ... ann/
 
Sinon j'ai retrouvé le topic dont vous me parliez. Merci du conseil.

 

--Message édité par Krueger--


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°13111
BENB
100% Lux.
Posté le 07-02-2001 à 10:42:45  profilanswer
 

zeltron a écrit a écrit :

 
 
Il aurait plutot fallu dire une solution triviale est x1 = ... = xi= ...=xn=0.
Sauf  hypothese tres forte sur les coefficients (a)ij (la matrice  (a)ij doit etre inversible )cette solution est loin d'etre unique.




 
Je reconnais, mais tout ce que je propose repose sur l'impothese que la matrice est inversible, et que donc il y a une et une seule solution.
 Si la matrice n'est pas inversible il y a aucune ou une infinite de solutions. Dans notre cas il y en a au moins une (0,0,...0).
 
Resoudre dans ce cas (matrice non inversible) reviens a dire que on va rechercher une relation entre les xn...
 
Le pivot de Gauss est alors une solution...

n°13114
gilou
Modérateur
Modzilla
Posté le 07-02-2001 à 10:46:05  profilanswer
 

Krueger a écrit a écrit :

Salut,
 
J'ai un sytême de type:
a11 * x1 + ... + a1n * xn = 0
.
.
.
an1 * x1 + ... + ann * xn = 0
 
Les inconnues sont x1, ... , xn
 
Comment le résoudre efficacement?
 
Merci d'avance
 
--Message édité par Krueger--




 
Lis qques bouquins d'analyse numerique.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 07-02-2001 à 10:46:05  profilanswer
 

n°13980
janoscoder
Posté le 13-02-2001 à 01:19:30  profilanswer
 

remarque à la con:
une matrice prise au pif à de fortes chances d'être inversible
 
sinon je sais qu'il existe des méthodes de conditionnement de matrices où l'on mesure la capacité de faire un pivot de gauss sans pourrir la matrice. on transforme M en M'*M" bien condirionnées et on les inverse toutes les deux.
Je pense qu'une recherche sur conditionnement peut aider

n°14037
BENB
100% Lux.
Posté le 13-02-2001 à 11:38:33  profilanswer
 

Le systeme est quand meme particulier puisque le vecteur solution est nul.
 
Le coditionnenement est un probleme c'est vrai.
Dans beaucoup de Pb de ce genre la matrice est creuse, a diagonale dominante, et n grand (>1000). Le conditionement est bon mais le Pivot de Gauss est inaplicable les erreurs d'arondis s'ajoutants les unes aux autres.
 
Le principe c'est alors de rearranger la matrice (deplacer les lignes pour s'assurer qu'elle est a diagonale dominante, si elle est creuse ce n'est en general pas un pb) puis resoudre par un systeme iteratif supposer un X de depard puis calculer x(i) a l'aide de l'equation i, et des valeurs de X jusqu'a ce que les valeurs de X ne varient plus.
 
Si l'estimation initiale de X est bonne c'est tres rapide.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] Résolution d'un systême d'équation

 

Sujets relatifs
un mail systeme avec php3 en pop3 ???[C++] utilisation du HP système pour faire des sons
COBOL ET GROS SYSTEME IBM ETC... 
Plus de sujets relatifs à : [C++] Résolution d'un systême d'équation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR