Tellmarch
Messages postés53Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention27 septembre 2005 5 déc. 2005 à 21:10
euh le zip est disponible, qu'est ce que tu voudrais qu'il t'envoie exactement?
poliZ
Messages postés1Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention 5 décembre 2005 5 déc. 2005 à 18:46
Ton programme m'intéresse beaucoup, j'avoue que cette demande peut paraitre osée mais je compte sur les apitoiments d'un informaticien face à une débutante en VB!!!
si tu pouvais me l'envoyer à paulinerobert@wanadoo.fr je t'en serai super reconnaissante !
Merci beaucoup...
Pauline
ghitaik
Messages postés36Date d'inscriptionlundi 1 novembre 2004StatutMembreDernière intervention11 mai 2009 2 nov. 2004 à 01:06
desolee, mais j'ai besoin d'un produit de 2 Msf(car j'ai declare ma matrice comme etant un msflexgried) pas 2 tableaux,c'est comme ca que j'ai debute mon projet et j'ai trouve du mal pour utiliser votre code dans mon application.si c'est possible fait le pour moi+transpose.merci d'avance
PhenXDesign
Messages postés26Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 2 mai 20052 20 févr. 2004 à 23:29
c'est bon mon prof de maths a fini le cours sur les matrices !
il m'a meme donné des formules pour tout ça
j'ai completement remodelé la source, mais pas encore mis gauss et tout ça, je le fais ce weekend
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 18 févr. 2004 à 23:10
j'avais pas pense a la mise sous forme de developpement limite ...
perso, je suis quasiment obligé de passer par la diagonalisation car c'est pour appliquer a de la modelisation de composants electroniques.
faudra que je trouve un cours/tuto/bouquin la dessus ...
si tu connais un bon site qui trate des maths et des matrices ...
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 18 févr. 2004 à 11:45
Sans faire un cours trop pédant :
Définition de l'exponentielle :
exp(A) = 1 + A + A^2 / 2! + A^3 / 3! + ...
En général, on utilise A comme un nombre réel, et on utilise l'équivalent de l'exponentielle comme exp(A) = 2.71^A
Mais A peut être une matrice ! d'où l'utilisation de la première définition, parce qu'on sait additionner et multiplier des matrices.
Maintenant, y'a un problème : il faut faire une somme infinie.
Ce genre de problème, on peut souvent le faire à la main.
Pour ce faire, on diagonalise la matrice, et comme ça la puissance d'une matrice se réduit à la puissance des termes diagonaux, puis on somme les termes et puis on "voit" souvent apparaître des exponentielles à l'intérieur de la matrice.
Pour l'exponentielle d'une matrice, version informatique :
1) y'a pas besoin de diagonaliser, parce que l'ordinateur est rapide pour multiplier des matrices quelconques !
2) tu calcules la matrice A*A (tu la gardes en mémoire) et tu l'additionnes avec la matrice Id + A, en n'oubliant pas de diviser par 2 factorielle
3) tu calcules la matrice suivante simplement par :
A^(n+1) = A^n * A (avec A^n gardée en mémoire)
(n+1) ! = n! * (n+1) (n! aussi gardé en mémoire)
4) tu sommes le tout, et puis il faut bien que tu t'arrêtes une fois. Pour ça, tu peux par exemple comparer la dernière matrice obtenue avec l'avant dernière (en les soustrayant par exemple) et puis faire la somme des valeurs absolues des éléments de ta matrice, et t'arrêter si cette somme est petite.
5) ne pas oublier de donner un compteur maximum, parce que certaines matrices ne convergent pas !
Enfin bon courage.
Une dernière remarque : si tu t'intéresse vraiment à programmer des opérations sur des matrices, soit tu prends un bon livre de maths et tu regardes les bons algorithmes, soit tu surfes sur ce site et tu t'aperçois qu'il y a tout plein de programmes bien expliqués qui utilisent ces différents algorithmes !
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 17 févr. 2004 à 23:33
me souviens plus :-(
c'est loin le cours sur les matrices !!!
si tu peux faire un petit rappel ... ;-)
a l'occasion, je cherche aussi a calculer l'exponenciele d'une matrice, si si ca existe j'te jure :-)
Tellmarch
Messages postés53Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention27 septembre 2005 16 févr. 2004 à 12:20
C'est la méthode la moins économique pour calculer l'inverse d'une matrice ça... Bcp plus rapide en résolvant un système n équations n inconnues par Gauss.
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 16 févr. 2004 à 00:11
alors si je me souviens bien : l'inverse d'une matrice est egale a la transposee de la matrice de cofacteurs divisee par le determinant de A
donc
-1- besoin du determinant de A (c'est en cours)
-2- besoin de la transposition (ca tu l'as)
-3- la matrice des cofacteurs .... la c'est la bonne question :-)
1erement : c'est quoi un cofacteur ?
supposons la matrice A :
a11 a12 a13
a21 a22 a23
a31 a32 a33
le cofacteur de a11, c'est le determinant de la sous matrice a22,a23,a32,a33
le cofacteur de a12, c'est le determinant de la sous matrice a21,a23,a31,a33 ....
en fait , qd on calcul le cofacteur pr rapot 1terme, on supprime la ligne et la colonne de ce terme, et on calcule le determinant de ce qui reste
la matrice des cofacteurs .... ben c'est la ise en matrice de tous les cofacteurs EN "CHANGEANT LE SIGNE 1 FOIS SUR 2" ...
cofact(A) =
[cofact(a11) , -cofact(a12), cofact(a13)]
[-cofact(a21) .....]
au final, ton inversion de matrice deviens : (pour A 3*3)
-1- calcul de det(A)
-2- calcul des 9 cofacteurs, et mise sous forme matricielle (attention a changer les signes de cofact(a12), cofact(a21), cofact(a23), cofact(a32))
-3- transposition
-4- diviser par det(A)
ex : A =
[1 1 2]
[1 5 2]
[-2 3 1]
-1- det(A) = 20
-2- cofact(A) =
[-1 -(+5) 13]
[-(-5) 5 -(+5)]
[-8 (0) 4]
j'ai fais apparaitre les changements de signes en mettant les valeurs des cofacteurs entre parentheses
-4 tans(cofact(A)) / det(A) =
[-0.05 0.25 -0.4]
[-0.25 0.25 0]
[0.65 -0.25 0.2]
ce qui est egal (d'apres ma calculatrice) a A exp -1 ...
PhenXDesign
Messages postés26Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 2 mai 20052 15 févr. 2004 à 15:30
merci !
je l'ai deja telechargée, et c une mine d'or, a part que c'est assez compliqué, mais je vais m'y pencher serieusement !
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 15 févr. 2004 à 12:30
Et encore une source pour faire joujou avec les matrices !
Bon, d'accord, pour l'instant ta source se démarque un peu des autres, parce que tu mises sur l'interface.
Mais pour la programmation mathématique, je te propose de regarder les autres sources (en particulier http://www.vbfrance.com/code.aspx?ID=18276 pour ne pas faire de pub), ça te donnera des idées pour inverser les matrices ou calculer le déterminant...
PhenXDesign
Messages postés26Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 2 mai 20052 14 févr. 2004 à 22:46
c'est bon, j'ai resolu le petit probleme de produit !
PhenXDesign
Messages postés26Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 2 mai 20052 14 févr. 2004 à 21:31
ouais, c 'est bien ce ke je pensais, pour l'inverse ...
mais je crois que pour trouver l'inverse d'une matrice carrée avec un determinant non nul, il faut resoudre n² equation a n inconnues où n est le nombre de lignes, ce qui est pluto difficile ^^
ensuite, avec le trinagle, on peut resoudre des systemes de n equetions a n inconnues : Gauss
ce qui est bie pratique, mais deja, il faut que j'arrive a faire le produit de 2 matrices, je sais le faire sur papier, mais en vb, j'ai un pti trou, je vais reessayer
Tellmarch
Messages postés53Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention27 septembre 2005 14 févr. 2004 à 21:24
Diagonaliser, c'est mettre la matrice sous une forme diagonale dans une base adaptée (ce n'est pas toujours possible),
trigonaliser c'est la mettre sous la forme triangulaire supérieure (c'est toujours possible dans C)
et l'inverse de A c'est la matrice B si elle existe telle que A*B=Id (matrice identité).
Mais si tu viens juste de voir les matrices, ton programme sera déja assez complet quand tu aura programmé le calcul du determinant :)
PhenXDesign
Messages postés26Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 2 mai 20052 14 févr. 2004 à 16:45
diagonaliser, ça veut dire mettre la matrice en forme de triangle dont l'hypothenuse est la diagonale ?
que veut dire trigonaliser ?
et inverser, c'est quelle operation ? A exposant -1 ?
je viens juste d'apprendre les matrices, alors excuse moi de pas avoir tout ça :-)
Tellmarch
Messages postés53Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention27 septembre 2005 14 févr. 2004 à 15:52
Rajoute aussi la fonction diagonaliser ou trigonaliser, ça peut etre interessant à programmer...Et la fonction inverser surtout!
5 déc. 2005 à 21:10
5 déc. 2005 à 18:46
si tu pouvais me l'envoyer à paulinerobert@wanadoo.fr je t'en serai super reconnaissante !
Merci beaucoup...
Pauline
2 nov. 2004 à 01:06
20 févr. 2004 à 23:29
il m'a meme donné des formules pour tout ça
j'ai completement remodelé la source, mais pas encore mis gauss et tout ça, je le fais ce weekend
18 févr. 2004 à 23:10
perso, je suis quasiment obligé de passer par la diagonalisation car c'est pour appliquer a de la modelisation de composants electroniques.
faudra que je trouve un cours/tuto/bouquin la dessus ...
si tu connais un bon site qui trate des maths et des matrices ...
18 févr. 2004 à 11:45
Définition de l'exponentielle :
exp(A) = 1 + A + A^2 / 2! + A^3 / 3! + ...
En général, on utilise A comme un nombre réel, et on utilise l'équivalent de l'exponentielle comme exp(A) = 2.71^A
Mais A peut être une matrice ! d'où l'utilisation de la première définition, parce qu'on sait additionner et multiplier des matrices.
Maintenant, y'a un problème : il faut faire une somme infinie.
Ce genre de problème, on peut souvent le faire à la main.
Pour ce faire, on diagonalise la matrice, et comme ça la puissance d'une matrice se réduit à la puissance des termes diagonaux, puis on somme les termes et puis on "voit" souvent apparaître des exponentielles à l'intérieur de la matrice.
Pour l'exponentielle d'une matrice, version informatique :
1) y'a pas besoin de diagonaliser, parce que l'ordinateur est rapide pour multiplier des matrices quelconques !
2) tu calcules la matrice A*A (tu la gardes en mémoire) et tu l'additionnes avec la matrice Id + A, en n'oubliant pas de diviser par 2 factorielle
3) tu calcules la matrice suivante simplement par :
A^(n+1) = A^n * A (avec A^n gardée en mémoire)
(n+1) ! = n! * (n+1) (n! aussi gardé en mémoire)
4) tu sommes le tout, et puis il faut bien que tu t'arrêtes une fois. Pour ça, tu peux par exemple comparer la dernière matrice obtenue avec l'avant dernière (en les soustrayant par exemple) et puis faire la somme des valeurs absolues des éléments de ta matrice, et t'arrêter si cette somme est petite.
5) ne pas oublier de donner un compteur maximum, parce que certaines matrices ne convergent pas !
Enfin bon courage.
Une dernière remarque : si tu t'intéresse vraiment à programmer des opérations sur des matrices, soit tu prends un bon livre de maths et tu regardes les bons algorithmes, soit tu surfes sur ce site et tu t'aperçois qu'il y a tout plein de programmes bien expliqués qui utilisent ces différents algorithmes !
17 févr. 2004 à 23:33
c'est loin le cours sur les matrices !!!
si tu peux faire un petit rappel ... ;-)
a l'occasion, je cherche aussi a calculer l'exponenciele d'une matrice, si si ca existe j'te jure :-)
16 févr. 2004 à 12:20
16 févr. 2004 à 00:11
donc
-1- besoin du determinant de A (c'est en cours)
-2- besoin de la transposition (ca tu l'as)
-3- la matrice des cofacteurs .... la c'est la bonne question :-)
1erement : c'est quoi un cofacteur ?
supposons la matrice A :
a11 a12 a13
a21 a22 a23
a31 a32 a33
le cofacteur de a11, c'est le determinant de la sous matrice a22,a23,a32,a33
le cofacteur de a12, c'est le determinant de la sous matrice a21,a23,a31,a33 ....
en fait , qd on calcul le cofacteur pr rapot 1terme, on supprime la ligne et la colonne de ce terme, et on calcule le determinant de ce qui reste
la matrice des cofacteurs .... ben c'est la ise en matrice de tous les cofacteurs EN "CHANGEANT LE SIGNE 1 FOIS SUR 2" ...
cofact(A) =
[cofact(a11) , -cofact(a12), cofact(a13)]
[-cofact(a21) .....]
au final, ton inversion de matrice deviens : (pour A 3*3)
-1- calcul de det(A)
-2- calcul des 9 cofacteurs, et mise sous forme matricielle (attention a changer les signes de cofact(a12), cofact(a21), cofact(a23), cofact(a32))
-3- transposition
-4- diviser par det(A)
ex : A =
[1 1 2]
[1 5 2]
[-2 3 1]
-1- det(A) = 20
-2- cofact(A) =
[-1 -(+5) 13]
[-(-5) 5 -(+5)]
[-8 (0) 4]
j'ai fais apparaitre les changements de signes en mettant les valeurs des cofacteurs entre parentheses
-3- trans(cofact(A)) =
[-1 5 -8]
[-5 5 0]
[13 -5 4]
-4 tans(cofact(A)) / det(A) =
[-0.05 0.25 -0.4]
[-0.25 0.25 0]
[0.65 -0.25 0.2]
ce qui est egal (d'apres ma calculatrice) a A exp -1 ...
15 févr. 2004 à 15:30
je l'ai deja telechargée, et c une mine d'or, a part que c'est assez compliqué, mais je vais m'y pencher serieusement !
15 févr. 2004 à 12:30
Bon, d'accord, pour l'instant ta source se démarque un peu des autres, parce que tu mises sur l'interface.
Mais pour la programmation mathématique, je te propose de regarder les autres sources (en particulier http://www.vbfrance.com/code.aspx?ID=18276 pour ne pas faire de pub), ça te donnera des idées pour inverser les matrices ou calculer le déterminant...
14 févr. 2004 à 22:46
14 févr. 2004 à 21:31
mais je crois que pour trouver l'inverse d'une matrice carrée avec un determinant non nul, il faut resoudre n² equation a n inconnues où n est le nombre de lignes, ce qui est pluto difficile ^^
ensuite, avec le trinagle, on peut resoudre des systemes de n equetions a n inconnues : Gauss
ce qui est bie pratique, mais deja, il faut que j'arrive a faire le produit de 2 matrices, je sais le faire sur papier, mais en vb, j'ai un pti trou, je vais reessayer
14 févr. 2004 à 21:24
trigonaliser c'est la mettre sous la forme triangulaire supérieure (c'est toujours possible dans C)
et l'inverse de A c'est la matrice B si elle existe telle que A*B=Id (matrice identité).
Mais si tu viens juste de voir les matrices, ton programme sera déja assez complet quand tu aura programmé le calcul du determinant :)
14 févr. 2004 à 16:45
que veut dire trigonaliser ?
et inverser, c'est quelle operation ? A exposant -1 ?
je viens juste d'apprendre les matrices, alors excuse moi de pas avoir tout ça :-)
14 févr. 2004 à 15:52