如何解决如何确定两个向量在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")
,
如果矩阵的一个特征值是零,则其对应的特征向量是线性相关的。
因此以下代码适用于简单情况:
rows: i_col(0) / original_a(1) / freqs(2) / sorted_a(3)
/ sorted_freqs(4) / sorting_ix(5)
[[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
[ 1 1 1 1 3 0 5 0 3 1 1 0 0 4 6 1 3 5 5 0 0 0 5 0]
[ 7 7 7 7 3 8 4 8 3 7 7 8 8 1 1 7 3 4 4 8 8 8 4 8]
[ 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 5 5 5 5 3 3 3 4 6]
[ 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 4 4 4 4 3 3 3 1 1]
[ 5 7 11 12 19 20 21 23 0 1 2 3 9 10 15 6 17 18 22 4 8 16 13 14]]
输出:[[0 1 1 0]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。