ITADN

Worse convergence for `block_minres` than `minres`

#1052Opentimholy 创建于 2025-12-11
T
timholycommented
```julia julia> A = [4.0 0 0 0 0; 0 4 0 0 0; 0 0 8 -3 -4; 0 0 -3 0 0; 0 0 -4 0 0] 5×5 Matrix{Float64}: 4.0 0.0 0.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 0.0 0.0 8.0 -3.0 -4.0 0.0 0.0 -3.0 0.0 0.0 0.0 0.0 -4.0 0.0 0.0 julia> B = [24.0 0; -16 0; 33 0; 0 -7; 0 -11] 5×2 Matrix{Float64}: 24.0 0.0 -16.0 0.0 33.0 0.0 0.0 -7.0 0.0 -11.0 julia> X, stats = block_minres(A, B); julia> stats SimpleStats niter: 4 solved: false inconsistent: false indefinite: false npcCount: 0 residuals: [] Aresiduals: [] κ₂(A): [] timer: 51.73μs status: maximum number of iterations exceeded julia> A*X # the second column is quite poor 5×2 Matrix{Float64}: 24.0 0.0101519 -16.0 -0.0236623 33.0 0.0625 -5.89079e-15 -7.77615 -7.85439e-15 -10.3682 julia> B 5×2 Matrix{Float64}: 24.0 0.0 -16.0 0.0 33.0 0.0 0.0 -7.0 0.0 -11.0 julia> x, stats = minres(A, B[:, 2]); julia> stats SimpleStats niter: 3 solved: true inconsistent: true indefinite: false npcCount: 0 residuals: [] Aresiduals: [] κ₂(A): [] timer: 10.61μs status: found approximate minimum least-squares solution julia> A*x # here it's fine 5-element Vector{Float64}: 0.0 0.0 0.0 -7.800000000000001 -10.4 ``` Note that `A` has one zero eigenvalue.
2 条评论