Skip to content

Fix review findings, add missing methods, tests, CI and refresh tutorials - #1

Merged
denizd1 merged 1 commit into
mainfrom
claude/fix-review-findings
Oct 6, 2026
Merged

denizd1 merged 1 commit into
mainfrom
claude/fix-review-findings

Conversation

@denizd1

@denizd1 denizd1 commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Correctness

  • RK45: error estimate was normalized twice; step control now uses one
    scaled error norm with exponent 1/5, h_min checks the unclipped step and
    raises ConvergenceError
  • ODESolver.solve no longer shrinks h; time grid t0 + k*h, exact t_end,
    backward integration, systems of ODEs (vector states)
  • Multistep methods: bootstrap stays inside [t0, t_end], cached f values,
    variable-step weights for a shortened last step; AdamsMoulton is now a
    real 2-step method (steps=1 gives the trapezoidal rule)
  • Implicit methods raise ConvergenceError when Newton fails
  • Bisection handles roots at the end points, relative tolerance, sign tests
  • PowerIteration uses a fixed pseudo-random start vector; norm2 and
    condition_number("2") use singular values
  • RQI and inverse iteration handle exactly singular shifts
  • QREigenvalues: Hessenberg + Francis double-shift QR (complex pairs);
    shifted=False keeps the basic iteration
  • SVD: one-sided Jacobi thin SVD, orthonormal U for rank-deficient A
  • NonlinearFit: L2 objective, only improving steps accepted, augmented QR
    step, input validation, converged flag, verbose implemented
  • Scale-aware pivot/rank/symmetry tests; QRSolver for tall matrices;
    LeastSquaresSolver/PolyFit reject m < n; classical Gram-Schmidt now
    projects the original columns
  • Matrix/Vector: ==, unary -, scalar /, A[i], iteration, shape of empty
    matrices, ValueError on dimension mismatch

Performance

  • Optional step recording (record_steps), permutation vector in LU,
    inverse iteration factorizes once, faster matmul/matvec, one matvec per
    power iteration, cached Cholesky L^T, barycentric Lagrange, PolyFit in a
    scaled variable with Horner evaluation

New features

  • SOR, LU.det/inverse, Brent, RegulaFalsi (Illinois), CubicSpline,
    chebyshev_nodes, n-point and composite Gauss-Legendre, AdaptiveSimpson,
    Romberg, DormandPrince, auto step size for finite differences,
    plot helpers accept an axis

Project

  • Test suite for every module (144 tests), demo smoke test, GitHub Actions
    workflow, version 0.2.0, optional extras, README update
  • Tutorials updated for the new behaviour and re-executed

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01AiW6XDeDLFt46PLZsaSF2h

…ials

Correctness
- RK45: error estimate was normalized twice; step control now uses one
  scaled error norm with exponent 1/5, h_min checks the unclipped step and
  raises ConvergenceError
- ODESolver.solve no longer shrinks h; time grid t0 + k*h, exact t_end,
  backward integration, systems of ODEs (vector states)
- Multistep methods: bootstrap stays inside [t0, t_end], cached f values,
  variable-step weights for a shortened last step; AdamsMoulton is now a
  real 2-step method (steps=1 gives the trapezoidal rule)
- Implicit methods raise ConvergenceError when Newton fails
- Bisection handles roots at the end points, relative tolerance, sign tests
- PowerIteration uses a fixed pseudo-random start vector; norm2 and
  condition_number("2") use singular values
- RQI and inverse iteration handle exactly singular shifts
- QREigenvalues: Hessenberg + Francis double-shift QR (complex pairs);
  shifted=False keeps the basic iteration
- SVD: one-sided Jacobi thin SVD, orthonormal U for rank-deficient A
- NonlinearFit: L2 objective, only improving steps accepted, augmented QR
  step, input validation, converged flag, verbose implemented
- Scale-aware pivot/rank/symmetry tests; QRSolver for tall matrices;
  LeastSquaresSolver/PolyFit reject m < n; classical Gram-Schmidt now
  projects the original columns
- Matrix/Vector: ==, unary -, scalar /, A[i], iteration, shape of empty
  matrices, ValueError on dimension mismatch

Performance
- Optional step recording (record_steps), permutation vector in LU,
  inverse iteration factorizes once, faster matmul/matvec, one matvec per
  power iteration, cached Cholesky L^T, barycentric Lagrange, PolyFit in a
  scaled variable with Horner evaluation

New features
- SOR, LU.det/inverse, Brent, RegulaFalsi (Illinois), CubicSpline,
  chebyshev_nodes, n-point and composite Gauss-Legendre, AdaptiveSimpson,
  Romberg, DormandPrince, auto step size for finite differences,
  plot helpers accept an axis

Project
- Test suite for every module (144 tests), demo smoke test, GitHub Actions
  workflow, version 0.2.0, optional extras, README update
- Tutorials updated for the new behaviour and re-executed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AiW6XDeDLFt46PLZsaSF2h
@denizd1
denizd1 merged commit 6f43da4 into main Oct 6, 2026
4 checks passed
@denizd1
denizd1 deleted the claude/fix-review-findings branch October 7, 2026 06:39
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

Successfully merging this pull request may close these issues.

2 participants