【发布时间】:2021-08-19 06:40:44
【问题描述】:
让我们采用以下方阵:
import numpy as np
A = np.array([[10.0, -498.0],
[-2.0, 100.0]])
如果行列式 (A[0,0]*A[1,1]-A[0,1]*A[1,0]) 为零,则 A 将是奇异的。例如,如果 A[0,1] 取值 -500.0(其他所有内容不变),则 A 将是单数:
from sympy import symbols, Eq, solve
y = symbols('y')
eq = Eq(A[0,0]*A[1,1]-y*A[1,0])
sol = solve(eq)
sol
如何找到所有值 (A[0,0],A[0,1],...) 使 A(或任何给定的方阵)有效地变为奇异值(我使用大型矩阵)?非常感谢。
【问题讨论】:
-
我认为除了暴力破解之外,没有办法找到矩阵奇点的每种可能性,也许递归函数可以在这里派上用场,而不是 for 循环......(我猜)
-
做 SVD 解压缩并将奇异值之一设置为 0
-
我不知道为什么我之前的评论被赞成,我认为这不是 OP 想要的,但可能值得研究,所以我不会删除它。这就是我认为您需要的:省略您要更改的值的列。如果生成的矩阵是奇异的,请找到行的线性组合,该组合为您提供要更改您省略的值的行。使用您找到的线性组合找到新值。
-
嘿,你接受寻找方阵奇异的蛮力类型吗?
-
@yannziselman 感谢您的建议,我会试试这个。
标签: python numpy matrix linear-algebra