习题8.4
点击查看代码
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
# 设置 Matplotlib 不使用 LaTeX
plt.rc('font', size=15)
plt.rc('text', usetex=False)
# 定义微分方程系统
dz = lambda z, t: [-z[0]**3 - z[1], z[0] - z[1]**3]
# 时间点
t0 = np.linspace(0, 30, 201)
# 使用 odeint 求解微分方程
s = odeint(dz, [1, 0.5], t0)
# 创建图形和子图
plt.figure(figsize=(12, 6))
# 第一个子图:时间 vs S_x 和 S_y
plt.subplot(121)
plt.plot(t0, s[:, 0], '--', label='S_x(t)')
plt.plot(t0, s[:, 1], label='S_y(t)')
plt.legend()
plt.xlabel('Time')
plt.ylabel('S_x and S_y')
plt.title('S_x(t) and S_y(t) over time')
# 第二个子图:S_x vs S_y
plt.subplot(122)
plt.plot(s[:, 0], s[:, 1])
plt.xlabel('S_x')
plt.ylabel('S_y')
plt.title('S_x vs S_y')
# 显示图形
plt.tight_layout()
plt.show()
print('学号:3001')
习题8.5
点击查看代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
# 设置 Matplotlib 不使用 LaTeX
plt.rcParams['text.usetex'] = False
def model(t, y):
f, df_dm, d2f_dm2, T, dT_dm = y
d3f_dm3 = -3 * f * d2f_dm2 + 2 * (df_dm)**2 - T
d2T_dm2 = -2.1 * f * dT_dm
return [df_dm, d2f_dm2, d3f_dm3, dT_dm, d2T_dm2]
y0 = [0, 0, 0.68, 1, -0.5]
t_span = (0, 10)
t_eval = np.linspace(t_span[0], t_span[1], 1000)
sol = solve_ivp(model, t_span, y0, t_eval=t_eval, method='RK45')
f = sol.y[0]
T = sol.y[3]
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(sol.t, f, label='f(m)')
plt.xlabel('m (independent variable)') # 使用纯文本标签
plt.ylabel('f(m) (dependent variable)')
plt.title('Solution for f(m) over time') # 使用纯文本标题
plt.grid(True)
plt.subplot(2, 1, 2)
plt.plot(sol.t, T, label='T(m)', color='orange')
plt.xlabel('m (independent variable)')
plt.ylabel('T(m) (dependent variable)')
plt.title('Solution for T(m) over time')
plt.grid(True)
plt.tight_layout()
plt.show()
print('学号:3001')