我正在尝试比较带 ILU 预处理器和不带 ILU 预处理器的 GMRES 求解器。当未应用预处理器时,它会运行并提供正确的答案(x=[1,1,1]
)。但是,我似乎无法找到正确应用预处理器的方法。
如何让这段代码与 ILU 预处理器一起运行?
import numpy as np
import scipy.sparse.linalg as spla
A = np.array([[ 0.4445, 0.4444, -0.2222],
[ 0.4444, 0.4445, -0.2222],
[-0.2222, -0.2222, 0.1112]])
b = np.array([[ 0.6667],
[ 0.6667],
[-0.3332]])
M2 = spla.spilu(A)
x = spla.gmres(A,b,M=M2)
print x
预处理器需要一些处理solve
方法:
import numpy as np
import scipy.sparse.linalg as spla
A = np.array([[ 0.4445, 0.4444, -0.2222],
[ 0.4444, 0.4445, -0.2222],
[-0.2222, -0.2222, 0.1112]])
b = np.array([[ 0.6667],
[ 0.6667],
[-0.3332]])
M2 = spla.spilu(A)
M_x = lambda x: M2.solve(x)
M = spla.LinearOperator((3,3), M_x)
x = spla.gmres(A,b,M=M)
print x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)