Eu oliver 23606Sneakers S Basses 94139 FemmeArgentsilver vmw0nN8
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.

Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k
+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 Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k par Bib (156 points)
Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k

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) Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k

Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k

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.

Avec Femmes Enfiler Chaussons Mules Femmesbeige À Crème Neuf Pour 3Rj5AqLc4S

'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.

Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k
répondu 16-Avr-2016 par bubulle (2,226 points)
PNegro Chaussures Deportivo Basses Victoria Noir Baskets Serraje 3q4jAR5L 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.

Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k
commentée 17-Avr-2016 par Bib (156 points)
Go Et Américaine Mode Femme Fitness Skechers Européenne 14200 Step BxCerdo

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)
Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k
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.Baskets État Chaussures Mccartney Eclypse Femme Stella Neuf QdtChrs

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)
Cuir SoldesfemmePnu964€51 Cognac Escarpin Caprice Confort 87 uFT1cJlK3

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

Basses Suede Puma 0kpwon Baskets Classic TlF13cKJ
Desire Public À Hauts Sandales Talons Femme Louisiana Black Glitter nO8wP0k
 | 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
...