sonyone
Messages postés2Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention22 mars 2005
-
22 mars 2005 à 23:47
Huisne
Messages postés1Date d'inscriptionvendredi 21 février 2014StatutMembreDernière intervention21 février 2014
-
21 févr. 2014 à 17:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Huisne
Messages postés1Date d'inscriptionvendredi 21 février 2014StatutMembreDernière intervention21 février 2014 21 févr. 2014 à 17:56
J'ai téléchargé la macro de diagonalisation d'une matrice nxn.
Elle me permet de résoudre des problèmes relatifs aux calculs parasismiques.
Dans le manuel d'utilisation on indique la méthode pour diagonaliser à l'intérieur d'un programme après avoir copier le module "mdDiagonalisation".
Pas de problème pour copier le code.
Je rencontre des difficultés pour appeler la procédure Diagonalisation(A,V0,eps,itmax)...
Est-il possible de me proposer un exemple concret d'appel de la procédure, notamment pour définir préalablement A, V0, eps et itmax.
reynath
Messages postés1Date d'inscriptionjeudi 5 mai 2011StatutMembreDernière intervention 9 mai 2011 9 mai 2011 à 15:12
J'ai testé sur une matrice 32x32 et ça fonctionne bien hormis sur les 4 derniers vecteurs propres qui sont complètement faux. Si quelqu'un sait pourquoi ?
Et sinon je pense qu'il y a un problème avec les valeurs propres évidentes.
myazou
Messages postés1Date d'inscriptionmardi 11 janvier 2011StatutMembreDernière intervention12 janvier 2011 12 janv. 2011 à 15:04
svp comment on télécharge le code :s merci pour votre aide
ledreff
Messages postés1Date d'inscriptionmardi 13 octobre 2009StatutMembreDernière intervention15 octobre 2009 15 oct. 2009 à 14:05
Bonjour,
Je viens de tester le programme diagonalisation.xls (dans le cadre de la mise en place d'une Analyse Factorielle des Correspondances (Statistiques)) et je trouve les bonnes valeurs propres mais pas les vecteurs propres souhaités, même en les normant (cf : commentaires précédents).
Comment puis-je arriver aux vecteurs propres souhaités?
Merci d'avance.
Vecteurs propres obtenues avec autre programme (et souhaitées):
1 0,547 0,083 -0,005
1 -0,213 -0,167 -0,100
1 -0,492 0,088 0,022
1 0,162 -0,339 0,088
dam81
Messages postés6Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention20 novembre 2008 20 nov. 2008 à 14:41
ok parfait, me voilà rassuré.
(OK aussi pour le M-1=tM, je l'avais oublié... c'est un peu loin pour moi...)
J'aurais peut être du rajouter la matrice normée dans les résultats. Le jour où je maîtriserai les macros VB sous openoffice je me pencherai peut etre sur la question....
Ca me donnera une occasion de faire une source "vraiment" libre....
bonne continuation
Merci
maxpant
Messages postés3Date d'inscriptionmercredi 19 novembre 2008StatutMembreDernière intervention20 novembre 2008 20 nov. 2008 à 14:29
Et voilà, ma normalisation fonctionne et maintenant tout va bien, je vérifie :
matrice à diagonaliser = norm(VP)*D*norm(VP)'
où ' dénote la transposée. Pas d'inversion à faire, le temps de calcul vous dit merci.
Encore merci et bravo pour ton code, sa vitesse est impressionnante.
maxpant
Messages postés3Date d'inscriptionmercredi 19 novembre 2008StatutMembreDernière intervention20 novembre 2008 20 nov. 2008 à 14:19
Le vrai pb c'est que comme la matrice des veps n'est pas normalisée, elle est orthogonale mais pas orthonormale. Et les matrices orthonormales ont cette sympathique propriété que M-1=tM, et donc c'est plus facile à manipuler (évite l'inversion de matrice).
Je pense que je me suis gouré dans la normalisation, sinon ça devrait marcher.
PS : je ne te met pas mon exemple, c'est une matrice 20*20...
dam81
Messages postés6Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention20 novembre 2008 20 nov. 2008 à 14:05
Bonjour Maxpant, ce que vous dites m'étonne, il me semblait que ca fonctionnait, ce qui semblerait être confirmé avec la matrice dont parle LLARBI au dessus.
Mon problème est que je suis passé sous linux et je n'ai pas encore pris le temps de faire fonctionner tout ça sous openoffice... faut dire que je m'en sers plus du tout en fait...
du coup je peux pas tester sur d'autres matrices.
Pourriez vous me donner un exemple qui ne fonctionne pas ?
(NB : pas besoin de normaliser la base propre pour remettre la matrice diagonale dans la base initiale...la norme d'un vecteur propre n'a pour ainsi dire que peu d'importance !)
maxpant
Messages postés3Date d'inscriptionmercredi 19 novembre 2008StatutMembreDernière intervention20 novembre 2008 20 nov. 2008 à 11:37
Très bien foutu, ça tourne au poil. Les valeurs propres sont très bonnes. Mais par contre les vecteurs propres... même après normalisation, quand je fais VP*D*VP', je ne retrouve pas la matrice initiale.
Je suis sur que les valeurs propres sont bonnes, je les ai vérifiées avec un autre logiciel.
Quel est donc le pb avec les vecteurs propres ?
chtebel
Messages postés62Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention 3 janvier 20111 6 nov. 2008 à 15:34
Un bijou ton programme, a premier vue en tout cas. En vba yen a pas des masses qui trainent sur le net.
encore bravo
++
elwely08
Messages postés1Date d'inscriptionmercredi 21 mai 2008StatutMembreDernière intervention21 mai 2008 21 mai 2008 à 16:39
%Merci pour votre aide.
LLARBI
Messages postés3Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention21 avril 2008 21 avril 2008 à 14:41
Je vous remercie pour la réponse que vous m'avez fait parvenir concernant la diagonalisation. Un grand merci pour votre aide et votre intérêt qui m'a donné la joie et un soulagement d'une charge mentale qui a durée plus d'une journée....
dam81
Messages postés6Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention20 novembre 2008 21 avril 2008 à 13:49
les vecteurs propres données par le programme ne sont effectivement pas normés
il faut donc diviser chaques vecteurs par leur normes respectives et tu retombes bien sur la matrice de ton corrigé (enfin dans ton exemple c'est le négatif de la norme qu'il faut appliquer).
la particularité du programme est de toujours renvoyé une coordonnée de valeur 1 sur les vecteurs et de calculer les autres coordonnées à partir de cette valeur.
les 2 matrices données par le programme et ton corrigé sont donc colinéaires !
donc on peut dire que ce sont les meme d'un point de vue diagonalisation (ce qui compte dans une matrice de vecteur propre c'est la base qu'il forme donc la norme importe peu....)
voili, bon courage pour la suite....
LLARBI
Messages postés3Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention21 avril 2008 21 avril 2008 à 13:20
LLARBI
Messages postés3Date d'inscriptionlundi 21 avril 2008StatutMembreDernière intervention21 avril 2008 21 avril 2008 à 13:05
Bonjour,
je ne suis mathématicien mais avoir toujours besoin de diagonalisation de matrice lors d'analyse des données appliquées au marketing.
en utilisant cet utilitaire de diagonalisation, je retrouve des valeurs propres comme annoncé dans le corrigé des exercices. Mais les vecteurs propores sont différents, et surtout non normés. Comment résoudre ce problème ?
MERCI.
adelzeglaoui
Messages postés1Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention28 novembre 2007 28 nov. 2007 à 16:26
Bonjour,
J'essaie de diagonaliser une matrice 111*111 mais ça bug je ne sais pas pourquoi:(
vous avez une idee pourquoi ca bloque?
dam81
Messages postés6Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention20 novembre 2008 26 juil. 2005 à 20:46
alors, y'a un élément qui fait modifier completement le temps de calcul, c'est la précision demandé. comme c'est un calcul basé sur l'itération, il faut se méfier de cette précision car l'erreur se multiplie au fur et à mesure, surtout si les matrices sont grosses (beaucoup d'itérations...). donc tes dernières valeurs propres et vecteurs propres risquent de pas etre tres justes...
méfiances....
cchevali
Messages postés5Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention26 juillet 2005 26 juil. 2005 à 09:09
C'est marrant, j'ai tout recupéré ta fonction de diagonalisation pour mon boulo (j'ai de grosses bestioles à diagonaliser) en finance de marché, et la ca tourne presque instantanement pour une 20x20 !
Donc le temps de calcul devait etre pris par des choses annexes (enfin... j'ai pas trop le temps de regarder). L'espoir renait
;-)
Encore merci pour ta source, ca m'enleve une bonne epine du pied !
dam81
Messages postés6Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention20 novembre 2008 25 juil. 2005 à 19:05
Je ne connais malheureusement pas d'autres sources sur le sujet (sinon je n'aurais surement pas fait celle la :-p)
Pour ce qui est de la rapidité, j'avoue ne m'etre arrêté qu'aux matrices 12x12... je sais pas te dire s'il existe plus rapide. A ma connaissance non... mais en fouillant un peu, on est toujours surpris par les mathématiques... et ca m'interesse de le savoir si tu trouves des infos sur le sujet.
En tout cas merci pour ton commentaire.
cchevali
Messages postés5Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention26 juillet 2005 25 juil. 2005 à 16:06
Une belle source merci.
Tu semble assez bien connaitre le probleme. Tes algorithmes sont ils rapides ? Parce que avec une matrice 20x20 il a un peu de mal (1-2 minutes). Je n'ose pas essayer pour une 50x50...
Si tu connais d'autres sources, je suis preneur.
@+
dam81
Messages postés6Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention20 novembre 2008 25 mars 2005 à 08:57
Désolé, j'avais déjà corriger ce bug, mais j'ai du mettre une mauvaise version de mon fichier sur le site. je la met à jour tout de suite.
Merci d'avoir relever cette erreure
Bonne diagonalisation...
cdunyach
Messages postés1Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention25 mars 2005 25 mars 2005 à 08:48
moi je suis arrivé à rentrer la dimension, mais c'est pendant le calcul qu'il a planté.
Avec le debogueur j'ai réussi à réparer: apparemment c'est la matrice à diagonaliser, qui est dimensionnée sous le nom "MTemp()" et qui est utilisée sous le nom "MT()". Je suis pas du tout un développeur, mais je suis tres fier d'avoir trouvé le problème!!!
sonyone
Messages postés2Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention22 mars 2005 22 mars 2005 à 23:47
j ai l impression que ca marche pas , quand je rentre la dimension il plante ............
21 févr. 2014 à 17:56
Elle me permet de résoudre des problèmes relatifs aux calculs parasismiques.
Dans le manuel d'utilisation on indique la méthode pour diagonaliser à l'intérieur d'un programme après avoir copier le module "mdDiagonalisation".
Pas de problème pour copier le code.
Je rencontre des difficultés pour appeler la procédure Diagonalisation(A,V0,eps,itmax)...
Est-il possible de me proposer un exemple concret d'appel de la procédure, notamment pour définir préalablement A, V0, eps et itmax.
9 mai 2011 à 15:12
Et sinon je pense qu'il y a un problème avec les valeurs propres évidentes.
12 janv. 2011 à 15:04
15 oct. 2009 à 14:05
Je viens de tester le programme diagonalisation.xls (dans le cadre de la mise en place d'une Analyse Factorielle des Correspondances (Statistiques)) et je trouve les bonnes valeurs propres mais pas les vecteurs propres souhaités, même en les normant (cf : commentaires précédents).
Comment puis-je arriver aux vecteurs propres souhaités?
Merci d'avance.
Matrice à diagonaliser :
0,475 0,137 0,274 0,115
0,316 0,170 0,404 0,110
0,268 0,171 0,465 0,096
0,385 0,159 0,332 0,124
Valeurs propres obtenues avec diagonalisation.xls et autre programme :
1 0 0 0
0 0,209 0 0
0 0 0,022 0
0 0 0 0,003
Vecteurs propres obtenues avec diagonalisation.xls :
1 1 -0,245 0,047
1 -0,388 0,494 1
1 -0,899 -0,261 -0,215
1 0,295 1 -0,871
Vecteurs propres obtenues avec autre programme (et souhaitées):
1 0,547 0,083 -0,005
1 -0,213 -0,167 -0,100
1 -0,492 0,088 0,022
1 0,162 -0,339 0,088
20 nov. 2008 à 14:41
(OK aussi pour le M-1=tM, je l'avais oublié... c'est un peu loin pour moi...)
J'aurais peut être du rajouter la matrice normée dans les résultats. Le jour où je maîtriserai les macros VB sous openoffice je me pencherai peut etre sur la question....
Ca me donnera une occasion de faire une source "vraiment" libre....
bonne continuation
Merci
20 nov. 2008 à 14:29
matrice à diagonaliser = norm(VP)*D*norm(VP)'
où ' dénote la transposée. Pas d'inversion à faire, le temps de calcul vous dit merci.
Encore merci et bravo pour ton code, sa vitesse est impressionnante.
20 nov. 2008 à 14:19
Je pense que je me suis gouré dans la normalisation, sinon ça devrait marcher.
PS : je ne te met pas mon exemple, c'est une matrice 20*20...
20 nov. 2008 à 14:05
Mon problème est que je suis passé sous linux et je n'ai pas encore pris le temps de faire fonctionner tout ça sous openoffice... faut dire que je m'en sers plus du tout en fait...
du coup je peux pas tester sur d'autres matrices.
Pourriez vous me donner un exemple qui ne fonctionne pas ?
(NB : pas besoin de normaliser la base propre pour remettre la matrice diagonale dans la base initiale...la norme d'un vecteur propre n'a pour ainsi dire que peu d'importance !)
20 nov. 2008 à 11:37
Je suis sur que les valeurs propres sont bonnes, je les ai vérifiées avec un autre logiciel.
Quel est donc le pb avec les vecteurs propres ?
6 nov. 2008 à 15:34
encore bravo
++
21 mai 2008 à 16:39
21 avril 2008 à 14:41
21 avril 2008 à 13:49
il faut donc diviser chaques vecteurs par leur normes respectives et tu retombes bien sur la matrice de ton corrigé (enfin dans ton exemple c'est le négatif de la norme qu'il faut appliquer).
la particularité du programme est de toujours renvoyé une coordonnée de valeur 1 sur les vecteurs et de calculer les autres coordonnées à partir de cette valeur.
les 2 matrices données par le programme et ton corrigé sont donc colinéaires !
donc on peut dire que ce sont les meme d'un point de vue diagonalisation (ce qui compte dans une matrice de vecteur propre c'est la base qu'il forme donc la norme importe peu....)
voili, bon courage pour la suite....
21 avril 2008 à 13:20
Matrice à diagonaliser Corrigé de l'exercice Soluation proposée par l'utilitaire
1.000 -0.533 0.347 0.445 0.879 -0.167 -0.682917133 1 0.228615005
-0.533 1.000 -0.950 -0.651 0.189 -0.734 1 0.215456797 1
0.347 -0.950 1.000 0.614 -0.436 -0.657 -0.942507508 -0.495975185 0.895350847
?1=2.260 ?2=0.712?3=0.026 ?1=2.259 ?2=0.713 ?3=0.028
Suite du commentaire précédent
21 avril 2008 à 13:05
je ne suis mathématicien mais avoir toujours besoin de diagonalisation de matrice lors d'analyse des données appliquées au marketing.
en utilisant cet utilitaire de diagonalisation, je retrouve des valeurs propres comme annoncé dans le corrigé des exercices. Mais les vecteurs propores sont différents, et surtout non normés. Comment résoudre ce problème ?
MERCI.
28 nov. 2007 à 16:26
J'essaie de diagonaliser une matrice 111*111 mais ça bug je ne sais pas pourquoi:(
vous avez une idee pourquoi ca bloque?
26 juil. 2005 à 20:46
méfiances....
26 juil. 2005 à 09:09
Donc le temps de calcul devait etre pris par des choses annexes (enfin... j'ai pas trop le temps de regarder). L'espoir renait
;-)
Encore merci pour ta source, ca m'enleve une bonne epine du pied !
25 juil. 2005 à 19:05
Pour ce qui est de la rapidité, j'avoue ne m'etre arrêté qu'aux matrices 12x12... je sais pas te dire s'il existe plus rapide. A ma connaissance non... mais en fouillant un peu, on est toujours surpris par les mathématiques... et ca m'interesse de le savoir si tu trouves des infos sur le sujet.
En tout cas merci pour ton commentaire.
25 juil. 2005 à 16:06
Tu semble assez bien connaitre le probleme. Tes algorithmes sont ils rapides ? Parce que avec une matrice 20x20 il a un peu de mal (1-2 minutes). Je n'ose pas essayer pour une 50x50...
Si tu connais d'autres sources, je suis preneur.
@+
25 mars 2005 à 08:57
Merci d'avoir relever cette erreure
Bonne diagonalisation...
25 mars 2005 à 08:48
Avec le debogueur j'ai réussi à réparer: apparemment c'est la matrice à diagonaliser, qui est dimensionnée sous le nom "MTemp()" et qui est utilisée sous le nom "MT()". Je suis pas du tout un développeur, mais je suis tres fier d'avoir trouvé le problème!!!
22 mars 2005 à 23:47