为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨__羊羊 2023-10-11 21:38:57
接受两个 3 维向量,每个向量表示为一个数组,并判断它们是否线性无关。我尝试使用 np.linalg.solve() 来获得 x 的解,并尝试找出 x 是平凡的还是非平凡的。但它显示“LinAlgError:数组的最后 2 个维度必须是正方形”。谁能帮我解决这个问题?from sympy import *import numpy as npfrom scipy import linalgfrom numpy import linalgv1 = 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 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

由于您的最终矩阵将采用矩形形式,因此简单的特征值方法将不起作用。您需要使用 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")


查看完整回答
反对 回复 2023-10-11
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

如果矩阵的一个特征值为零,则其对应的特征向量是线性相关的。


因此,以下代码适用于简单的情况:


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, :]

输出:[[0 1 1 0]]


查看完整回答
反对 回复 2023-10-11
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信