|
|
@ -0,0 +1,29 @@ |
|
|
|
# Program 02e: Numerical and truncated series solution |
|
|
|
# figure 2.6 |
|
|
|
import matplotlib.pyplot as plt |
|
|
|
import numpy as np |
|
|
|
from scipy.integrate import odeint |
|
|
|
|
|
|
|
|
|
|
|
def ode(X, t): |
|
|
|
x = X[0] |
|
|
|
y = X[1] |
|
|
|
dxdt = y |
|
|
|
dydt = x-t**2*y |
|
|
|
return [dxdt, dydt] |
|
|
|
|
|
|
|
|
|
|
|
X0 = [1, 0] |
|
|
|
t = np.linspace(0, 10, 1000) |
|
|
|
sol = odeint(ode, X0, t) |
|
|
|
x = sol[:, 0] |
|
|
|
y = sol[:, 1] |
|
|
|
fig, ax = plt.subplots() |
|
|
|
ax.plot(t, x, label='Numerical') |
|
|
|
ax.plot(t, 1+t**2/2+t**4/24, 'r-', label='Truncated series') |
|
|
|
plt.xlabel('t') |
|
|
|
plt.ylabel('x') |
|
|
|
plt.xlim(0, 4) |
|
|
|
plt.ylim(0, 4) |
|
|
|
ax.legend() |
|
|
|
plt.show() |