利用matplotlib中的函数,在一幅图中画出单摆摆角与时间,速度与时间的图像 ,用python写出具体代码
时间: 2024-10-08 17:04:16 浏览: 26
你可以使用`matplotlib`库中的`subplots`功能在同一幅图上同时绘制单摆的角度随时间和速度随时间的曲线。首先确保已经安装了`matplotlib`和`numpy`。下面是一个基本的例子代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# 定义单摆的基本参数
g = 9.81 # 重力加速度
L = 1.0 # 摆长
theta_0 = 30 * np.pi / 180 # 初始角度,单位弧度
t_max = 10 # 时间上限(秒)
# 计算时间步长
dt = 0.01 # 时间间隔(秒)
time_array = np.arange(0, t_max, dt)
# 单摆运动方程
def single_bounce(t):
theta = theta_0 * np.cos(np.sqrt(g/L)*t)
omega = np.sqrt(g/L) * np.sin(np.sqrt(g/L)*t)
return theta, omega
# 创建一个新的图形和两个子图
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True, figsize=(10, 6))
# 初始化线
theta_line, = ax1.plot([], [], lw=2, label='Bearing Angle')
omega_line, = ax2.plot([], [], lw=2, label='Angular Velocity')
# 动画函数
def animate(i):
theta, omega = single_bounce(time_array[i])
theta_line.set_data(time_array[:i], theta)
omega_line.set_data(time_array[:i], omega)
return theta_line, omega_line
# 创建动画并显示
ani = FuncAnimation(fig, animate, frames=len(time_array), interval=100, blit=True)
# 添加标题和标签
ax1.set_title('Single Pendulum Motion (Angle vs Time)')
ax1.set_ylabel('Angle [rad]')
ax2.set_title('Single Pendulum Motion (Velocity vs Time)')
ax2.set_xlabel('Time [s]')
ax2.set_ylabel('Angular Velocity [rad/s]')
# 显示所有图例
plt.legend()
# 开始显示动画
plt.show()
阅读全文