使用python语言写一个简化的非线性系统模型
时间: 2024-09-09 19:02:22 浏览: 42
灰色线性模型python程序.docx
在Python中,我们可以创建一个简单的非线性系统模型,比如双项式方程(如弹簧-质量系统)。这里我们使用`scipy.integrate.solve_ivp`库来求解微分方程。首先,定义一个代表系统状态变化的函数(在这里是位置和速度),以及描述非线性关系的方程组:
```python
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# 非线性系统模型:弹簧-质量系统
def spring_mass_system(t, y, k=1, m=1):
# y = [x, dx/dt],x是位置,dx/dt是速度
x, dx_dt = y
force = -k * x # 弹簧力
dy_dt = dx_dt # 速度的变化由加速度决定
ddx_dt = force / m - dx_dt # 根据牛顿第二定律
return [ddx_dt, dx_dt]
# 初始条件和参数
initial_conditions = [1, 0] # 初始位置x=1, 初始速度v=0
time_span = (0, 10) # 求解的时间范围
k = 10 # 弹簧常数
m = 1 # 质量
# 解决微分方程
solution = solve_ivp(spring_mass_system, time_span, initial_conditions, args=(k, m), rtol=1e-6)
# 绘制结果
plt.figure()
plt.plot(solution.t, solution.y[0], label='Position')
plt.plot(solution.t, solution.y[1], label='Velocity')
plt.xlabel('Time (s)')
plt.ylabel('State Variables')
plt.legend()
plt.title('Spring-Mass System with Nonlinear Force')
plt.show()
阅读全文