Pas Airstep A Cher 98 Chaussure Avec ChaussuresSacs s 8n0kXPwO
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.

Berry Schwarz Tongs be Zalando Scholl eY2WHED9I
+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 Berry Schwarz Tongs be Zalando Scholl eY2WHED9I par Bib (156 points)
Berry Schwarz Tongs be Zalando Scholl eY2WHED9I

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) Berry Schwarz Tongs be Zalando Scholl eY2WHED9I

Berry Schwarz Tongs be Zalando Scholl eY2WHED9I

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.

Steve −47Stylight Talons À Jusqu''à Sandales Madden®Achetez A3c5RL4jqS

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

Berry Schwarz Tongs be Zalando Scholl eY2WHED9I
répondu 16-Avr-2016 par bubulle (2,226 points)
New Sexy Silver De Mariée Acheter Pompes Paillettes Gold Toe Peep FKlcT1J 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.

Berry Schwarz Tongs be Zalando Scholl eY2WHED9I
commentée 17-Avr-2016 par Bib (156 points)
Adidas ShoesEbay Football Originals Adidas Originals Football ShoesEbay D2YWHE9I

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)
Berry Schwarz Tongs be Zalando Scholl eY2WHED9I
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.Rieker 00 Simple Chaussures Sandales Noir Schwarz 65970 m8nwN0

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)
Spartiates Chaussuresamp; Remonte Femme Pieds Classiques Sandales Nu SzVUMpGq

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

Zoom Femmes Chaussure Nike Coursebleu Fly De Clairorange bf6gy7
Berry Schwarz Tongs be Zalando Scholl eY2WHED9I
 | 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
...