Nehmen Sie zwei dreidimensionale Vektoren auf, die jeweils als Array dargestellt werden, und geben Sie an, ob sie linear unabhängig sind. Ich habe versucht, mit np.linalg.solve () die Lösung von x zu erhalten, und versucht herauszufinden, ob x trivial oder nicht trivial ist. Es wird jedoch "LinAlgError: Die letzten beiden Dimensionen des Arrays müssen quadratisch sein" angezeigt. Kann mir jemand helfen, das herauszufinden?
from sympy import *
import numpy as np
from scipy import linalg
from numpy import linalg
v1 = np.array([0, 5, 0])
v2 = np.array([0, -10, 0])
a = np.array([v1,v2])
b = np.zeros(3)
x = np.linalg.solve(a, b)
2 Antworten
Da Ihre endgültige Matrix eine rechteckige Form hat, funktioniert ein einfacher Ansatz von EigenValues nicht. Sie müssen die Sympy-Bibliothek verwenden
import sympy
import numpy as np
matrix = np.array([
[0, 5, 0],
[0, -10, 0]
])
_, indexes = sympy.Matrix(matrix).T.rref() # T is for transpose
print(indexes)
Dadurch werden die Indizes linear unabhängiger Zeilen gedruckt. Verwenden Sie zum weiteren Drucken aus der Matrix
print(matrix[indexes,:])
Um Ihre spezifische Frage zu beantworten, prüfen Sie, ob zwei Vektoren linear abhängig sind oder nicht. Sie können anschließend auf jeden Fall eine if-Anweisung verwenden, wenn es sich um die beiden Vektoren handelt, die Sie immer überprüfen werden.
if len(indexes) == 2:
print("linearly independant")
else:
print("linearly dependant")
Wenn ein Eigenwert der Matrix Null ist, ist ihr entsprechender Eigenvektor linear abhängig.
Der folgende Code würde also für einen einfachen Fall funktionieren:
from sympy import *
import numpy as np
from scipy import linalg
from numpy import linalg
matrix = np.array([[0, 1, 0, 0], [0, 0, 1, 0], [0, 1, 1, 0], [1, 0, 0,
1]])
(lambdas, V) = np.linalg.eig(matrix.T)
print matrix[lambdas == 0, :]
Ausgabe: [[0 1 1 0]]
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.