python中如何确定两个向量线性相关或独立?

接受两个 3 维向量,每个向量表示为一个数组,并判断它们是否线性无关。我尝试使用 np.linalg.solve() 来获得 x 的解,并尝试找出 x 是平凡的还是非平凡的。但它显示“LinAlgError:数组的最后 2 个维度必须是正方形”。谁能帮我解决这个问题?


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)


杨__羊羊
浏览 205回答 2
2回答

尚方宝剑之说

由于您的最终矩阵将采用矩形形式,因此简单的特征值方法将不起作用。您需要使用 sympy 库import sympy import numpy as npmatrix = np.array([  [0, 5, 0],  [0, -10, 0]])_, indexes = sympy.Matrix(matrix).T.rref()  # T is for transposeprint(indexes)这将打印线性独立行的索引。要进一步从矩阵打印它们,请使用print(matrix[indexes,:])要回答您的具体问题,请检查两个向量是否线性相关。如果您始终要检查两个向量,那么您绝对可以在之后使用 if 语句。if len(indexes) == 2:    print("linearly independant")else:    print("linearly dependant")

慕工程0101907

如果矩阵的一个特征值为零,则其对应的特征向量是线性相关的。因此,以下代码适用于简单的情况:from sympy import *import numpy as npfrom scipy import linalgfrom numpy import linalgmatrix = 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, :]输出:[[0 1 1 0]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python