---
name: second-order-odes
description: "Problem-solving strategies for second order odes in odes pdes"
allowed-tools: [Bash, Read]
---
# Second Order Odes
## When to Use
Use this skill when working on second-order-odes problems in odes pdes.
## Decision Tree
1. **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?
2. **Homogeneous with Constant Coefficients**
- Characteristic equation: ar^2 + br + c = 0
- Distinct real roots: y = c1*e^{r1*x} + c2*e^{r2*x}
- Repeated root: y = (c1 + c2*x)e^{r*x}
- Complex roots a +/- bi: y = e^{ax}(c1*cos(bx) + c2*sin(bx))
- `sympy_compute.py solve "a*r**2 + b*r + c" --var r`
3. **Particular Solution (Non-homogeneous)**
- Undetermined coefficients: guess based on f(x)
- Variation of parameters: y_p = u1*y1 + u2*y2
- `sympy_compute.py dsolve "y'' + y = sin(x)"`
4. **Numerical Solution**
- Convert to first-order system: let v = y', then v' = y''
- `solve_ivp(system, [t0, tf], [y0, v0])`
5. **Boundary Value Problems**
- Shooting method: guess initial slope, iterate
- `scipy.integrate.solve_bvp(ode, bc, x, y_init)`
## Tool Commands
### Scipy_Solve_Ivp_System
```bash
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
```bash
uv run python -m runtime.harness scripts/sympy_compute.py solve "r**2 + r + 1" --var r
```
### Sympy_Dsolve_2Nd
```bash
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.