Problem-solving strategies for root finding in numerical methods
Use this skill when working on root-finding problems in numerical methods.
Characterize the Problem
Method Selection
| Situation | Method | Implementation |
|---|---|---|
| Bracketed, no derivatives | Bisection, Brent | scipy.optimize.brentq |
| Derivatives available | Newton-Raphson | scipy.optimize.newton |
| No derivatives | Secant method | scipy.optimize.newton (no fprime) |
| System of equations | scipy.optimize.fsolve | Requires Jacobian ideally |
Implement Root Finding
scipy.optimize.brentq(f, a, b) - guaranteed convergence if bracketedscipy.optimize.newton(f, x0, fprime=df) - quadratic convergence near rootscipy.optimize.fsolve(F, x0)Handle Multiple Roots
sympy_compute.py solve "f(x)" --var x for symbolic solutionsVerify Solutions
z3_solve.py prove "f(root) == 0"uv run python -c "from scipy.optimize import brentq; root = brentq(lambda x: x**2 - 2, 0, 2); print('Root:', root)"
uv run python -c "from scipy.optimize import newton; root = newton(lambda x: x**2 - 2, 1.0, fprime=lambda x: 2*x); print('Root:', root)"
uv run python -m runtime.harness scripts/sympy_compute.py solve "x**3 - x - 1" --var x
From indexed textbooks:
See .claude/skills/math-mode/SKILL.md for full tool documentation.