gpt4 book ai didi

python - 如何从矩阵中找到线性独立的行

转载 作者:IT老高 更新时间:2023-10-28 21:15:18 26 4
gpt4 key购买 nike

如何识别矩阵中的线性独立行?例如,

enter image description here

第4行是独立的。

最佳答案

首先,您的第 3 行与第 1t 行和第 2 行线性相关。但是,您的第 1 列和第 4 列是线性相关的。

你可以使用的两种方法:

特征值

如果矩阵的一个特征值为零,则其对应的特征向量是线性相关的。文档 eig状态返回的特征值根据它们的多重性重复,不一定是有序的。但是,假设特征值对应于您的行向量,一种方法是:

import numpy as np

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)
# The linearly dependent row vectors
print matrix[lambdas == 0,:]

柯西-施瓦茨不等式

要测试向量的线性相关性并找出哪些向量,您可以使用 Cauchy-Schwarz inequality .基本上,如果向量的内积等于向量范数的乘积,则向量是线性相关的。以下是列的示例:

import numpy as np

matrix = np.array(
[
[0, 1 ,0 ,0],
[0, 0, 1, 0],
[0, 1, 1, 0],
[1, 0, 0, 1]
])

print np.linalg.det(matrix)

for i in range(matrix.shape[0]):
for j in range(matrix.shape[0]):
if i != j:
inner_product = np.inner(
matrix[:,i],
matrix[:,j]
)
norm_i = np.linalg.norm(matrix[:,i])
norm_j = np.linalg.norm(matrix[:,j])

print 'I: ', matrix[:,i]
print 'J: ', matrix[:,j]
print 'Prod: ', inner_product
print 'Norm i: ', norm_i
print 'Norm j: ', norm_j
if np.abs(inner_product - norm_j * norm_i) < 1E-5:
print 'Dependent'
else:
print 'Independent'

测试行是一种类似的方法。

然后你可以扩展它来测试所有的向量组合,但我想这个解决方案会随着大小而严重缩放。

关于python - 如何从矩阵中找到线性独立的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28816627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com