对矩阵倒数应用 Newton-Raphson 迭代是否会细化 LU/GE 的矩阵逆?

计算科学 线性代数 数值分析 收敛 牛顿法
2021-12-22 14:13:07

这是对此答案的后续行动

假设您有一个可能非常病态的矩阵A, 你用 LU/GE 计算它的逆得到XluA1.

牛顿-拉夫森迭代

f:X2XXAX
一般收敛到矩阵的逆A.

计算是否将 Newton-Raphson 迭代应用于Xlu,即计算f(Xlu),f(f(Xlu))使生成的矩阵逆更准确,还是更不准确?

我无法直接找到参考,所以我问是否有人确定。

绝对误差将与(f)1(例如,数值算法的准确性和稳定性,第 25 章),但处消失所以大概这意味着应用只有在错误来自 LU 分解步骤中的增长因子时才有帮助?但这是否意味着在其他时候应用会造成伤害,因为它依赖于计算具有消失的雅可比行列式的函数的根,这会使其不如 LU 准确?例如,在重度根为 2 的一维情况下,牛顿法将有误差,但 LU/GE 总是有误差fX=A1ffO(ϵ)O(ρϵ)

我在 中的所有矩阵上进行了尝试,似乎它几乎总是损害准确性,从来没有超过的帮助,而且经常失败。(目前还不清楚要测试哪些矩阵。)16×16MatrixDepot.jl13

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
0个回答
没有发现任何回复~