Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BiCGStab Fails Silently #339

Open
packquickly opened this issue May 3, 2023 · 0 comments
Open

BiCGStab Fails Silently #339

packquickly opened this issue May 3, 2023 · 0 comments

Comments

@packquickly
Copy link

I mentioned here #338 that GMRES was failing silently from stagnation. Turns out BiCGStab is also failing silently from (some form of) breakdown.

Not so surprising that this fails given how I'm (mis)using the algorithm, but the failure should not be silent.

Reproducing code:

import IterativeSolvers: bicgstabl
import LinearAlgebra: cond, norm

for problem_dim in [25, 100]
    succeeded = 0
    for i = 1:100 
        condition_number = Inf
        matrix = nothing
        while condition_number > 1000
            matrix = randn(Float64, (problem_dim, problem_dim))
            condition_number = cond(matrix)
        end

        true_vec = randn(Float64, (problem_dim,))
        b = matrix * true_vec

        julia_soln = bicgstabl(matrix, b)

        residual_norm = norm(julia_soln - true_vec)

        succeeded += (residual_norm < 1)  # very loose tolerance!
    end
    println("problem dim: $problem_dim. succeeded: $succeeded")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant