用python写一个二阶系统模型,输入参数input可以自定义,输出参数值output在图中绘制出来
时间: 2023-06-27 16:02:16 浏览: 112
使用python绘制二元函数图像的实例
5星 · 资源好评率100%
好的,我可以帮你实现这个二阶系统模型。首先,我们需要导入相关的库。
```python
import numpy as np
import matplotlib.pyplot as plt
```
接下来,我们可以定义一个函数来表示这个二阶系统模型。这个模型可以用下面的微分方程来表示:
$$\frac{d^2y}{dt^2} + 2\zeta\omega_n\frac{dy}{dt} + \omega_n^2 y = K_p u$$
其中,$y$ 是系统的输出,$u$ 是系统的输入,$\omega_n$ 是系统的自然频率,$\zeta$ 是系统的阻尼比,$K_p$ 是系统的比例增益。
我们可以将这个微分方程转换为差分方程,然后用离散时间步长的方式来模拟系统的行为。具体来说,我们可以使用欧拉法或者龙格-库塔法等数值积分方法来求解差分方程。这里我们选择欧拉法。
```python
def second_order_system(input, zeta, omega_n, Kp, dt, t_end):
# 系统的初始状态
y = 0.0
ydot = 0.0
# 存储输出和时间的数组
output = []
time = []
# 模拟系统的行为
for t in np.arange(0, t_end, dt):
# 计算当前时刻的输出
yddot = (Kp * input - 2 * zeta * omega_n * ydot - omega_n ** 2 * y)
y += ydot * dt
ydot += yddot * dt
# 存储输出和时间
output.append(y)
time.append(t)
return time, output
```
现在我们已经定义了这个二阶系统模型的函数。接下来,我们可以使用这个函数来模拟系统的行为,并将结果绘制成图形。
```python
# 定义模型参数
zeta = 0.1
omega_n = 2*np.pi*5
Kp = 1.0
# 定义模拟参数
dt = 0.001
t_end = 5.0
# 定义输入信号
t = np.arange(0, t_end, dt)
input = np.sin(2*np.pi*1*t)
# 模拟系统的行为
time, output = second_order_system(input, zeta, omega_n, Kp, dt, t_end)
# 绘制输出
plt.plot(time, output)
plt.xlabel('Time (s)')
plt.ylabel('Output')
plt.show()
```
运行上面的代码,你应该可以看到一个类似于正弦波的图形,表示系统的输出随时间的变化。根据输入信号的不同,输出信号的形状也会有所变化。
阅读全文