Algèbre linéaire sur python
je voudrais utiliser numpy.linalg.résoudre à résoudre une algèbre linéaire de l'équation, mais j'ai un message d'erreur disant: "2 Dernières dimensions de la matrice doit être de forme carrée'. Veuillez jeter un peu de lumière merci beaucoup !! voici mon code:
import numpy as np
from numpy. linalg import solve
A = np.array([[3,-1,-1,0,0,0], [-1,4,-1,-1,0,0], [0,0,-1,-1,4,-1], [0,0,0,-1,-1,3]],float)
w = np.array([5,5,0,0],float)
v = solve(A,w)
print(v)
Pour faire une opération, vous devez inverser la matrice A, et seulement les matrices carrées sont inversible. Si vous voulez résoudre le système inexactly, vous pouvez utiliser une opération appelée la pseudo-inverse et puis la multiplier avec v pour obtenir la v.
ou il pourrait utiliser
J'étais sur le point de mettre en œuvre une pseudo fonction inverse de lui, mais je vois que ça a déjà été fait pour moi. 🙂
il est préférable d'éviter le calcul de la pseudo-inverse explicitement, depuis qu'il est mathématiquement plus cher et moins numériquement stable que le SVD-en fonction de la méthode utilisée par
vous pouvez poster votre commentaire que la réponse...
ou il pourrait utiliser
numpy.linalg.lstsq(A, w)
J'étais sur le point de mettre en œuvre une pseudo fonction inverse de lui, mais je vois que ça a déjà été fait pour moi. 🙂
il est préférable d'éviter le calcul de la pseudo-inverse explicitement, depuis qu'il est mathématiquement plus cher et moins numériquement stable que le SVD-en fonction de la méthode utilisée par
lstsq
vous pouvez poster votre commentaire que la réponse...
OriginalL'auteur tchengaa | 2015-03-13
Vous devez vous connecter pour publier un commentaire.
Comme igavriil déjà écrit
numpy.linalg.solve
ne peut être utilisé pour trouver la (les) solution pour un système déterminé (j'.e quadrature du coefficient de la matrice).Si votre système est sous - ou sur-déterminé, il n'y a généralement pas de solution exacte.
Si vous voulez trouver une solution approximative, vous pouvez utiliser
numpy.linalg.lstsq
. Il utilise une méthode appelée "méthode des moindres carrés-montage" pour trouver une solution qui minimise l'erreur globale.OriginalL'auteur jandob
Ce que cette erreur dit essentiellement, c'est que le système linéaire ne peut pas être résolu de manière explicite. C'est parce que vous avez des 6 variables et seulement 4 équations. En d'autres termes, le coefficient de la matrice doit être une matrice carrée.
L'erreur est générée lorsque:
OriginalL'auteur igavriil
Donc, si vous voulez A x = b et n'est pas carrée, vous pouvez tout simplement faire:
C'est la même chose que @jandjob réponse, ou au moins assez proche.
OriginalL'auteur Daniel B