# 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()
|