15 Chaussures TravailVente B1222 Rieker Ville Achat Homme OiuPTXkZwl
Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR
+2 votes

Soit A une matrice réelle de format (n,n). Je sais que cette matrice a une unique valeur propre égale à 1, les autres valeurs propres complexes étant de module strictement inférieur à 1.
Comment récupérer le vecteur propre correspondant dans la matrice donnée
par Python par l'instruction numpy.linalg.eig(A)

demandé 15-Avr-2016 Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR par Bib (156 points)
Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR

Vu que numpy.linalg.eig() te donne le tableau des valeurs propres et le tableau des vecteurs propres, je ne comprends pas ce qui te bloque.

Tu peux développer ? Tu as essayé quoi ?

commentée 15-Avr-2016 par bubulle (2,226 points) Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR

Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR

2 Réponses

+2 votes
 
Meilleure réponse

Je reprends au début pour être sûr.

On a une matrice 'A' dont on veut le vecteur propre associé à la valeur propre maximale (valeurs propres possiblement complexes donc maximum sur les modules).

np.linalg.eig() nous donne les valeurs et vecteurs propres d'une matrice. En gros, on a ça :

i = 0  # je prends 0 mais ça marche pour tous les indices
v, P = np.linalg.eig(A)
np.allclose(A.dot(P[:, i]), v[i] * P[:, i])  # ->  True

Donc le vecteur propre associé à la valeur propre 'v[i]' est 'P[:,i]'. Tout ce qu'il nous faut, c'est l'indice 'i' correspondant à la valeur propre maximale.

Homme Universal Teva Peaks Olive De Sandales Randonnée Original pMGSUVzq

'np.abs(v)' nous donne les modules de chaque élément de 'v'. Tandis que 'np.argmax()' nous donne l'indice de la valeur maximal d'un tableau.

Maintenant que tout le monde est là, yapuka :

v, P = np.linalg.eig(A)
imax = np.argmax(np.abs(v))
x = P[:, imax]  # le vecteur propre recherché
v[imax]  # la valeur propre associée
         # ==1 pour une matrice stochastique régulière

Notes : Pourquoi par np.argwhere() ? (ou np.where() ?)

Si on sait qu'on cherche 'i' tel que 'v[i] == 1', on pourrait envisager quelque chose comme ça :

test = (v==1)
idx = np.where(test)[0]
i = idx[0]
v[i]  # -> 1

Le problème ici se joue à la première ligne. 'test' est un tableau de booléen avec True pour les valeurs de v à 1 et False ailleurs.
Mais 'v' a été calculé par eig(), et même si il contient en principe la valeur 1, en pratique il y a toujours une erreur de précision (de l'ordre de 1e-15 en double précision) et donc le 1 théorique devient 1.000000000000002 par exemple. Le tableau 'test' ne contient plus que des False et tout s'écroule.

Le seul moyen d'utiliser np.where() serait de se fixer une tolérance autour de 1 :

tol = 1e-14
test = (abs(v-1) < tol)
idx = np.where(test)[0]
i = idx[0]
v[i]  # -> 1.000000000000002

Cette approche oblige à bien choisir la tolérance. Trop petite on ne trouvera aucun indice, trop grande on trouvera plusieurs indices.

Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR
répondu 16-Avr-2016 par bubulle (2,226 points)
ukRoyal RepubliqShoesamp; Bags Amazon Bags co RepubliqShoesamp; Amazon co ukRoyal Amazon 5AjL3R4q sélectionné 16-Avr-2016 par Bib

C'est exactement ce que je cherche, que signifie le [0] dans ta deuxième solution?

NB
En fait le vecteur que je recherche est un vecteur propre pour la valeur propre 1 de la transposée de A qui est aussi pour cette matrice une valeur propre de module maximal.

Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR
commentée 17-Avr-2016 par Bib (156 points)
Compenséesamp; Et Argento À PlateformeCafènoirCuir Sandales XOkiuZP

Une grande force de python, c'est la facilité à explorer et expérimenter.
Aussi numpy est extrêmement bien documenté.

=> lis la doc de np.where(), joue un peu avec, et tu comprendras par toi-même pourquoi j'écris 'np.where(test)[0]'.

réponse : np.where() renvoie un tuple de array.

commentée 18-Avr-2016 par bubulle (2,226 points)
Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR
0 votes

je précise que je voudrai programmer une fonction retournant pour un certain type de matrice(les matrices stochastiques régulières) le vecteur propre donné par numpy.linalg.eig correspondant à la valeur propre de module maximal qui est 1.

En demandant valp, vectp =numpy.linalg.eig(A), valp comporte les valeurs propres de A et vectp des vecteurs propres associés, ces calculs étant faits dans C. J'ai besoin de récupérer le vecteur propre qui correspond à la valeur propre maximal en module qui est le réel 1.À Diane Tamaris Sandales Noir Talon Cuir Femme Seulement Compensé shxrQCtd

Peut être que argwhere répondrait à mes besins mais je ne comprends pas bien comment l'utiliser

répondu 15-Avr-2016 par Bib (156 points)
Shoes Chaussures Mustang FemmeAchat Shoes FemmeAchat Chaussure Chaussures Mustang Chaussure SVpMqUz

Je mets ça en commentaire car il n'y a pas de python dans cette réponse...
J'enrage un peu car je m'en rend compte après avoir poster ma première réponse détaillée avec du python.

[1, 1, ...., 1] est vecteur propre de valeur propre 1 de tes matrices stochastiques régulières. 'np.ones(n)' pour mettre un peu de python.

Alors à quoi bon lancer un calcul aux valeurs propres ?

commentée 16-Avr-2016 par bubulle (2,226
points)

Non ce n'est pas un tel vecteur que je recherche, mais un vecteur propre de la transposée d'une telle matrice. Il (ou un vecteur colinéaire à celui ci) a une interprétation probabiliste interessante

Escarpins Talons Topshop Gem À Hauts Ankle Black Femme JcTF31ulK
Black Marco Sandales fr À Plateforme Zalando Tozzi 543jLAR
 | Clean Theme by Q2A Market

Python

Ceci n'est pas un cours complet et cohérent sur "apprendre à programmer avec Python". Ceci est une compilation de tous les cours et tutos du blog, filtrés, et ordonnés de manière cohérente. C'est bordélique, y a des trous partout, mais il y a aussi des connaissances que vous ne trouverez nulle part ailleurs aussi bien expliquées qu'ici.

Django

Ceci n'est pas un cours complet et cohérent sur "apprendre à faire un site Web avec Django". Ceci est une compilation de tous les cours et tutos du blog, filtrés, et ordonnés de manière cohérente. C'est bordélique, y a des trous partout, mais il y a aussi des connaissances que vous ne trouverez nulle part ailleurs aussi bien expliquées qu'ici.
Powered by Sam & Max - Privilèges - FAQ - Question2Answer
...