首页 > 解决方案 > 如何在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)

标签: pythonnumpyscipy

解决方案


由于您的最终矩阵将采用矩形形式,因此简单的 EigenValues 方法将不起作用。需要用到sympy的库

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)

这将打印线性独立行的索引。要从矩阵中进一步打印它们,请使用

print(matrix[indexes,:])

要回答您的具体问题,请检查两个向量是否线性相关。如果它是您总是要检查的两个向量,那么您绝对可以在之后使用 if 语句。

if len(indexes) == 2:
    print("linearly independant")
else:
    print("linearly dependant")

推荐阅读