确保找到矩阵方程的平凡解

问题描述 投票:0回答:1

我正在尝试用 numpy 求解矩阵方程 $Ax = b$ (实际上我正在使用

scipy.sparse
但我相信问题仍然是一样的)。在我的设置中,$b$ 是某个函数的导数。

在我的系统中,方程有时可能是 $Ax = 0$,在这种情况下我想取回零向量。当我尝试使用浮点数向量执行此操作时,我得到的结果是值向量 ~

e-22
。这会在未来的时间步长中造成严重破坏,并在应该处于稳定状态时导致奇怪的数值伪影。当我手动将右侧设为整数 0 的向量时,我得到了一个完全为零的向量。

如何才能做到这一点,而无需手动检查向量是否全为零,如果是则转换为整数?

非常感谢

python numpy scipy linear-algebra differential-equations
1个回答
0
投票

我会使用

np.all
检查数组中的每个值是否低于某个容差值,如果是,则将其转换为实际的零值向量:

import numpy as np

a = np.array([1e-22, 2e-21])
print(a)  # [1.e-22, 2.e-21]

tolerance = 1e-20
if np.all(np.absolute(a) < tolerance):
    a = np.zeros(a.shape)

print(a)  # [0., 0.]
© www.soinside.com 2019 - 2024. All rights reserved.