Symbolic and numerical mathematics. Venv: source /Users/zhangmingda/clawd/.venv/bin/activate
Symbolic Math (SymPy)
from sympy import *
x, y, z, t = symbols('x y z t')
a, b, c = symbols('a b c', real=True)
n, k = symbols('n k', integer=True, positive=True)
# Solve equations
solve(x**2 - 5*x + 6, x) # [2, 3]
solve([x + y - 5, x - y - 1], [x, y]) # {x: 3, y: 2}
Calculus
diff(sin(x)*exp(x), x) # derivative integrate(x**2 * exp(-x), (x, 0, oo)) # definite integral limit(sin(x)/x, x, 0) # limit series(exp(x), x, 0, 5) # Taylor series
Linear algebraM = Matrix([[1, 2], [3, 4]]) M.eigenvals() # eigenvalues M.eigenvects() # eigenvectors M.det() # determinant M.inv() # inverse
Differential equationsf = Function('f') dsolve(f(x).diff(x, 2) + f(x), f(x)) # y'' + y = 0
Simplificationsimplify(sin(x)**2 + cos(x)**2) # 1 trigsimp(expr) factor(expr) expand(expr)
LaTeX outputlatex(expr) # for paper-ready equations
## Numerical Methods (SciPy)
```python
from scipy import optimize, integrate, linalg, interpolate
import numpy as np
# Root finding
root = optimize.brentq(lambda x: x**3 - 2*x - 5, 2, 3)
# Optimization
result = optimize.minimize(lambda x: (x[0]-1)**2 + (x[1]-2.5)**2,
x0=[0, 0], method='Nelder-Mead')
# Constrained optimization
from scipy.optimize import linprog, minimize
result = minimize(objective, x0, constraints=constraints, bounds=bounds)
# Numerical integration
val, err = integrate.quad(lambda x: np.exp(-x**2), -np.inf, np.inf) # √π
# ODE solving
from scipy.integrate import solve_ivp
def lorenz(t, state, sigma=10, rho=28, beta=8/3):
x, y, z = state
return [sigma*(y-x), x*(rho-z)-y, x*y-beta*z]
sol = solve_ivp(lorenz, [0, 50], [1, 1, 1], dense_output=True, max_step=0.01)
# Interpolation
f_interp = interpolate.interp1d(x_data, y_data, kind='cubic')
# FFT
from scipy.fft import fft, fftfreq
yf = fft(signal)
xf = fftfreq(N, 1/sample_rate)
Linear Algebra
# NumPy
A = np.array([[1, 2], [3, 4]])
np.linalg.eig(A) # eigendecomposition
np.linalg.svd(A) # SVD
np.linalg.solve(A, b) # solve Ax = b
np.linalg.norm(A) # matrix norm
np.linalg.matrix_rank(A)
# Sparse matrices (SciPy)
from scipy.sparse import csr_matrix, linalg as sparse_linalg
Mathematical Modeling Workflow
- Define the system and variables
- Formulate equations (conservation laws, constitutive relations)
- Non-dimensionalize if appropriate
- Solve analytically (SymPy) or numerically (SciPy)
- Validate against known solutions or data
- Sensitivity analysis on parameters
- Visualize results
Common Models
- Population dynamics: Lotka-Volterra, SIR/SEIR epidemiological
- Diffusion: Heat equation, Fick's law
- Mechanics: Newton's laws, Lagrangian/Hamiltonian
- Economics: Supply-demand, game theory, optimal control
- Networks: Graph theory, flow optimization
Tips
- Use SymPy for exact solutions, SciPy for numerical
- Always verify numerical solutions against analytical when possible
- Check units and dimensional consistency
- Use
latex()to generate paper-ready equations - For large systems, consider sparse matrix methods