---
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.
