这是对此答案的后续行动。
假设您有一个可能非常病态的矩阵, 你用 LU/GE 计算它的逆得到.
牛顿-拉夫森迭代
一般收敛到矩阵的逆.
计算是否将 Newton-Raphson 迭代应用于,即计算,使生成的矩阵逆更准确,还是更不准确?
我无法直接找到参考,所以我问是否有人确定。
绝对误差将与(例如,数值算法的准确性和稳定性,第 25 章),但处消失。所以大概这意味着应用只有在错误来自 LU 分解步骤中的增长因子时才有帮助?但这是否意味着在其他时候应用会造成伤害,因为它依赖于计算具有消失的雅可比行列式的函数的根,这会使其不如 LU 准确?例如,在重度根为 2 的一维情况下,牛顿法将有误差,但 LU/GE 总是有误差。
我在 中的所有矩阵上进行了尝试,似乎它几乎总是损害准确性,从来没有超过的帮助,而且经常失败。(目前还不清楚要测试哪些矩阵。)MatrixDepot.jl
module MatrixInverseNewtonRaphson
using MatrixDepot
F(A, X) = 2X - X*A*X
R(A, X) = norm(A*X - eye(A), 1)
function go(name, m)
A = full(matrixdepot(name, m))
B = inv(A)
B1 = F(A, B)
X = 0.5A' / norm(A*A', 2)
for i in 1:2m; X = F(A, X); end
(R(A, B1) / max(eps(eltype(A)), R(A, B)), R(A, B), R(A, X), name)
end
function main(m=16)
e = []
for name in matrixdepot("all")
try
push!(e, go(name, m))
catch err
println(err)
end
end
sort(e)
end
end