gpt4 book ai didi

python - 在 Python 中解决看似(但实际上不是!)超定稀疏线性系统

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:31 24 4
gpt4 key购买 nike

我有一个稀疏矩阵 A(使用 scipy.sparse)和一个向量 b,并且想求解 Ax = b 的 x。 A 的行数多于列数,因此它看起来是多定的;但是,A 的行是线性相关的,因此实际上 A 的行秩等于列数。例如,A 可以是

A = np.array([[1., 1.], [-1., -1.], [1., 0.]])

当 b 是

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

那么解就是 x = [1., -1.]。我想知道如何使用 scipy.sparse.linalg 中可用的函数在 Python 中解决这个系统。谢谢!

最佳答案

您的系统可能未确定吗?如果不是,而且确实有解,那么最小二乘解就是那个解,你可以试试

from scipy.sparse.linalg import lsqr
return_values = lsqr(A, b)
x = return_values[0]

如果您的系统实际上是欠定的,这应该会为您找到最小的 L2 范数解。如果它不起作用,请将参数 damp 设置为非常小的值(例如 1e-5)。

如果您的系统是完全确定的(即A 是满秩的)并且有解,并且您的矩阵A 很高,正如你描述的那样,那么你可以在正规方程中找到一个等效系统:

A.T.dot(A).dot(x) == A.T.dot(b)

x 中有唯一解。这是一个方形线性系统,因此可以使用线性系统求解器求解,例如 scipy.sparse.linalg.spsolve

关于python - 在 Python 中解决看似(但实际上不是!)超定稀疏线性系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23103370/

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