second-order-odes
npx machina-cli add skill parcadei/Continuous-Claude-v3/second-order-odes --openclawSecond Order Odes
When to Use
Use this skill when working on second-order-odes problems in odes pdes.
Decision Tree
-
Classify the ODE
- Constant coefficients: ay'' + by' + cy = f(x)?
- Variable coefficients: y'' + P(x)y' + Q(x)y = R(x)?
- Cauchy-Euler: x^2 y'' + bxy' + cy = 0?
-
Homogeneous with Constant Coefficients
- Characteristic equation: ar^2 + br + c = 0
- Distinct real roots: y = c1e^{r1x} + c2e^{r2x}
- Repeated root: y = (c1 + c2x)e^{rx}
- Complex roots a +/- bi: y = e^{ax}(c1cos(bx) + c2sin(bx))
sympy_compute.py solve "a*r**2 + b*r + c" --var r
-
Particular Solution (Non-homogeneous)
- Undetermined coefficients: guess based on f(x)
- Variation of parameters: y_p = u1y1 + u2y2
sympy_compute.py dsolve "y'' + y = sin(x)"
-
Numerical Solution
- Convert to first-order system: let v = y', then v' = y''
solve_ivp(system, [t0, tf], [y0, v0])
-
Boundary Value Problems
- Shooting method: guess initial slope, iterate
scipy.integrate.solve_bvp(ode, bc, x, y_init)
Tool Commands
Scipy_Solve_Ivp_System
uv run python -c "from scipy.integrate import solve_ivp; sol = solve_ivp(lambda t, Y: [Y[1], -Y[0]], [0, 10], [1, 0]); print('y(10) =', sol.y[0][-1])"
Sympy_Charpoly
uv run python -m runtime.harness scripts/sympy_compute.py solve "r**2 + r + 1" --var r
Sympy_Dsolve_2Nd
uv run python -m runtime.harness scripts/sympy_compute.py dsolve "Derivative(y,x,2) + y"
Key Techniques
From indexed textbooks:
- [An Introduction to Numerical Analysis... (Z-Library)] Modern Numerical Methods for Ordinary Wiley, New York. User's guide for DVERK: A subroutine for solving non-stiff ODEs. Keller (1966), Analysis of Numerical Methods.
- [Elementary Differential Equations and... (Z-Library)] Riccati equation and that y1(t) = 1 is one solution. Use the transformation suggested in Problem 33, and nd the linear equation satised by v(t). Find v(t) in the case that x(t) = at, where a is a constant.
- [An Introduction to Numerical Analysis... (Z-Library)] Test results on initial value methods for non-stiff ordinary differential equations, SIAM J. Comparing numerical methods for Fehlberg, E. Klassische Runge-Kutta-Formeln vierter und niedrigerer Ordnumg mit Schrittweiten-Kontrolle und ihre Anwendung auf Warme leitungsprobleme, Computing 6, 61-71.
- [Elementary Differential Equations and... (Z-Library)] Two papers by Robert May cited in the text are R. May,“Biological Populations with Nonoverlapping Generations: Stable Points, Stable Cycles, and Chaos,” Science 186 (1974), pp. Biological Populations Obeying Difference Equations: Stable Points, Stable Cycles, and Chaos,” Journal of Theoretical Biology 51 (1975), pp.
- [An Introduction to Numerical Analysis... (Z-Library)] COLSYS: collocation software for boundary-value ODEs, ACM Trans. Numerical Solutions of Boundary Value Problems for Ordinary Differential Equations. Elementary Differential Equations and Boundary Value Problems, 4th ed.
Cognitive Tools Reference
See .claude/skills/math-mode/SKILL.md for full tool documentation.
Source
git clone https://github.com/parcadei/Continuous-Claude-v3/blob/main/.claude/skills/math/odes-pdes/second-order-odes/SKILL.mdView on GitHub Overview
This skill guides solving second-order ODEs in ODEs PDEs, covering classification, homogeneous and non-homogeneous solutions, numerical methods, and boundary value problems. It provides decision steps, example commands, and practical techniques.
How This Skill Works
Start by classifying the equation as constant coefficients, variable coefficients, or Cauchy-Euler. Then choose a solution pathway (homogeneous, particular, numerical, or boundary-value) and apply the appropriate method, using example commands for symbolic and numeric tools as guidance.
When to Use It
- When you need to classify a second-order ODE as constant coefficients, variable coefficients, or Cauchy-Euler.
- When solving homogeneous second-order ODEs with constant coefficients to form the general solution.
- When the equation is non-homogeneous and requires a particular solution (undetermined coefficients or variation of parameters).
- When solving numerically by converting to a first-order system for methods like solve_ivp.
- When dealing with boundary-value problems, using shooting or a BVP solver like solve_bvp.
Quick Start
- Step 1: Classify the ODE (constant, variable, or Cauchy-Euler).
- Step 2: Solve the homogeneous part via the characteristic equation or Symbolic solver.
- Step 3: Address the non-homogeneous part (undetermined coefficients or variation of parameters) or switch to numerical/BVP methods as needed.
Best Practices
- Classify early: constant, variable, or Cauchy-Euler.
- Use the characteristic equation ar^2 + br + c for homogeneous constant-coefficient cases.
- For non-homogeneous parts, choose between undetermined coefficients and variation of parameters.
- Cross-check analytic results with symbolic solvers (Symbolic) and numeric solvers (solve_ivp, solve_bvp).
- For BVPs, provide a reasonable initial guess and verify boundary conditions.
Example Use Cases
- Solve r^2 + r + 1 = 0 with SymPy to get r values and the general solution.
- Solve y'' + y = 0 using SymPy's dsolve (Sympy_Dsolve_2Nd).
- Solve y'' + y = sin(x) with SymPy to obtain a particular solution.
- Compute an IVP numerically: solve_ivp for y'' = -y with y(0)=1, y'(0)=0 over [0,10].
- Solve a boundary value problem with scipy.integrate.solve_bvp using a system of first-order equations and boundary conditions.