python - 如何在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)
解决方案
由于您的最终矩阵将采用矩形形式,因此简单的 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")
推荐阅读
- ios - 无法使用 ES256 创建 JWT 令牌
- ms-access - MS ACCESS - 查询
- reactjs - 未调用模拟调度函数
- docker - 是否可以使用docker临时创建测试环境?
- mysql - 从select mysql中的长文本中提取多个img src
- java - 将 ZonedDateTime 转换为 java.util.Date
- python - Jupyter Labs:隐藏代码单元并在启动时运行所有单元
- arrays - 如何使用教义(Symfony 4)输出多对一数据?
- javascript - 打字稿:类型“{}”不可分配给类型“选择”
',如何正确输入 javascript `pick` 函数? - javascript - 为什么我的 jQuery 动画完成回调会导致超出最大堆栈大小?