Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
beita6969 avatar

Linear Solvers

  • 16 installs
  • 869 repo stars
  • Updated June 8, 2026
  • beita6969/scienceclaw

Linear-solvers is a Claude skill that selects and configures direct or iterative solvers for linear systems Ax=b and diagnoses convergence in methods like GMRES, CG, and BiCGSTAB.

About

Linear-solvers helps select and configure a solver for linear systems Ax=b in dense and sparse problems. It walks through characterizing the matrix, choosing direct or iterative methods, picking preconditioners, and diagnosing convergence or stagnation in GMRES, CG, and BiCGSTAB. It ships Python scripts that emit JSON outputs for each analysis step.

  • Selects direct vs iterative solvers via a decision flowchart
  • Diagnoses convergence and stagnation in GMRES/CG/BiCGSTAB
  • Ships 6 Python scripts for sparsity, solver, preconditioner, and residual analysis

Linear Solvers by the numbers

  • 16 all-time installs (skills.sh)
  • Ranked #1,318 of 2,065 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
At a glance

linear-solvers capabilities & compatibility

Free; needs Python with NumPy and SciPy

Capabilities
lean4 prover
Use cases
data analysis · debugging
Pricing
Free
From the docs

What linear-solvers says it does

Select and configure linear solvers for systems Ax=b in dense and sparse problems.
SKILL.md
diagnosing convergence issues, estimating conditioning, selecting preconditioners, or debugging stagnation in GMRES/CG/BiCGSTAB.
SKILL.md
npx skills add https://github.com/beita6969/scienceclaw --skill linear-solvers

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs16
repo stars869
Last updatedJune 8, 2026
Repositorybeita6969/scienceclaw

What it does

Choose and tune a linear solver and preconditioner for an Ax=b system and diagnose convergence issues.

Who is it for?

Selecting direct vs iterative solvers, choosing preconditioners, and diagnosing GMRES/CG/BiCGSTAB stagnation.

Skip if: Very large dense matrices, which may exhaust memory in direct solvers.

When should I use this skill?

You need to pick or debug a linear solver and preconditioner for an Ax=b system.

What you get

A recommended solver and preconditioner plus convergence and stagnation diagnostics for a given matrix.

  • Solver and preconditioner recommendations as JSON
  • Convergence diagnostics

By the numbers

  • Ships 6 solver analysis scripts
  • 6-step solve workflow

Files

SKILL.mdMarkdownGitHub ↗

Linear Solvers

Goal

Provide a universal workflow to select a solver, assess conditioning, and diagnose convergence for linear systems arising in numerical simulations.

Requirements

  • Python 3.8+
  • NumPy, SciPy (for matrix operations)
  • See individual scripts for dependencies

Inputs to Gather

InputDescriptionExample
Matrix sizeDimension of systemn = 1000000
SparsityFraction of nonzeros0.01%
SymmetryIs A = Aᵀ?yes
DefinitenessIs A positive definite?yes (SPD)
ConditioningEstimated condition number10⁶

Decision Guidance

Solver Selection Flowchart

Is matrix small (n < 5000) and dense?
├── YES → Use direct solver (LU, Cholesky)
└── NO → Is matrix symmetric?
    ├── YES → Is it positive definite?
    │   ├── YES → Use CG with AMG/IC preconditioner
    │   └── NO → Use MINRES
    └── NO → Is it nearly symmetric?
        ├── YES → Use BiCGSTAB
        └── NO → Use GMRES with ILU/AMG

Quick Reference

Matrix TypeSolverPreconditioner
SPD, sparseCGAMG, IC
Symmetric indefiniteMINRESILU
NonsymmetricGMRES, BiCGSTABILU, AMG
DenseLU, CholeskyNone
Saddle pointSchur complement, UzawaBlock preconditioner

Script Outputs (JSON Fields)

ScriptKey Outputs
scripts/solver_selector.pyrecommended, alternatives, notes
scripts/convergence_diagnostics.pyrate, stagnation, recommended_action
scripts/sparsity_stats.pynnz, density, bandwidth, symmetry
scripts/preconditioner_advisor.pysuggested, notes
scripts/scaling_equilibration.pyrow_scale, col_scale, notes
scripts/residual_norms.pyresidual_norms, relative_norms, converged

Workflow

1. Characterize matrix - symmetry, definiteness, sparsity 2. Analyze sparsity - Run scripts/sparsity_stats.py 3. Select solver - Run scripts/solver_selector.py 4. Choose preconditioner - Run scripts/preconditioner_advisor.py 5. Apply scaling - If ill-conditioned, use scripts/scaling_equilibration.py 6. Monitor convergence - Use scripts/convergence_diagnostics.py 7. Diagnose issues - Check residual history with scripts/residual_norms.py

Conversational Workflow Example

User: My GMRES solver is stagnating after 50 iterations. The residual drops to 1e-3 then stops improving.

Agent workflow: 1. Diagnose convergence:

   python3 scripts/convergence_diagnostics.py --residuals 1,0.1,0.01,0.005,0.003,0.002,0.002,0.002 --json

2. Check for preconditioning advice:

   python3 scripts/preconditioner_advisor.py --matrix-type nonsymmetric --sparse --stagnation --json

3. Recommend: Increase restart parameter, try ILU(k) with higher k, or switch to AMG.

Pre-Solve Checklist

  • [ ] Confirm matrix symmetry/definiteness
  • [ ] Decide direct vs iterative based on size and sparsity
  • [ ] Set residual tolerance relative to physics scale
  • [ ] Choose preconditioner appropriate to matrix structure
  • [ ] Apply scaling/equilibration if needed
  • [ ] Track convergence and adjust if stagnation occurs

CLI Examples

# Analyze sparsity pattern
python3 scripts/sparsity_stats.py --matrix A.npy --json

# Select solver for SPD sparse system
python3 scripts/solver_selector.py --symmetric --positive-definite --sparse --size 1000000 --json

# Get preconditioner recommendation
python3 scripts/preconditioner_advisor.py --matrix-type spd --sparse --json

# Diagnose convergence from residual history
python3 scripts/convergence_diagnostics.py --residuals 1,0.2,0.05,0.01 --json

# Apply scaling
python3 scripts/scaling_equilibration.py --matrix A.npy --symmetric --json

# Compute residual norms
python3 scripts/residual_norms.py --residual 1,0.1,0.01 --rhs 1,0,0 --json

Error Handling

ErrorCauseResolution
Matrix file not foundInvalid pathCheck file exists
Matrix must be squareNon-square inputVerify matrix dimensions
Residuals must be positiveInvalid residual dataCheck input format

Interpretation Guidance

Convergence Rate

RateMeaningAction
< 0.1ExcellentCurrent setup optimal
0.1 - 0.5GoodAcceptable for most problems
0.5 - 0.9SlowConsider better preconditioner
> 0.9StagnationChange solver or preconditioner

Stagnation Diagnosis

PatternLikely CauseFix
Flat residualPoor preconditionerImprove preconditioner
OscillatingNear-singular or indefiniteCheck matrix, try different solver
Very slow decayIll-conditionedApply scaling, use AMG

Limitations

  • Large dense matrices: Direct solvers may run out of memory
  • Highly indefinite: Standard preconditioners may fail
  • Saddle-point: Requires specialized block preconditioners

References

  • references/solver_decision_tree.md - Selection logic
  • references/preconditioner_catalog.md - Preconditioner options
  • references/convergence_patterns.md - Diagnosing failures
  • references/scaling_guidelines.md - Equilibration guidance

Version History

  • v1.1.0 (2024-12-24): Enhanced documentation, decision guidance, examples
  • v1.0.0: Initial release with 6 solver analysis scripts

Related skills

FAQ

How does it pick a solver?

It uses a decision flowchart based on matrix size, sparsity, symmetry, and definiteness, e.g. CG with AMG/IC for sparse SPD systems and GMRES for nonsymmetric ones.

Can it diagnose stagnation?

Yes. It analyzes residual history to classify convergence rate and recommend actions like a better preconditioner or scaling.

Data Science & MLanalyticspipelines

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.