python - 为什么 Runge Kutta 求解器不包括阻尼系数?
问题描述
再会。我编写了一个代码来使用 Runge-Kutta 求解器来分析 3 DOF 悬架设置仅在垂直方向上的振动运动。我不知道为什么,但是求解器在结果中没有包含阻尼的影响。
背景:
) 对力输入进行编码以模拟道路上的颠簸(道路位移
x
轮胎刚度)。)我首先使用虚拟 nr 来表示想要首先调试求解器。道路力发生器工作正常。
) 第一个方程设置是身体运动
M*Z''+C_s*Z'+K_s*Z=C_s Z'_u+K_s*Z_u
第二个方程是轮胎运动
m*Z''_u+C_s*Z'_u+(K_s+K_t)*Z=C_s Z'+K_s Z+K_t Z_r
.
import numpy as np
from numpy.linalg import inv
import matplotlib.pyplot as plt
#variables
Ks = 200
Kt = 1000
Cs = 0.5
M = 120
m = 20
Road_Amp = 1
Road_freq = 2
Hz_read = 1000
delta_t = 1/Hz_read
time_end = 10
time = np.linspace(0,time_end,time_end*Hz_read)
#force from road
def road_force(Ktire,Amp,freq,time_F,time_start_F,time_end_F,one_bump):
F = np.array([0.0,0.0])
if one_bump:
time_end_F = time_start_F + np.pi/freq
if (time_F >= time_start_F) and (time_F <= time_end_F):
Disp = Amp * np.cos(freq*time_F - np.pi/2)
else:
Disp = 0.0
F[0]= Disp * Kt
return F
def G(Y,time_function,force):
eq1 = inv_A.dot(C.dot(Y[1])-B.dot(Y[0])) #equation for the body
eq2 = inv_D.dot(H.dot(Y[0]) + force-E.dot(Y[1])) #equation for the wheel
return np.array([eq1,eq2])
def RK4_step(Y,time_RK,dt,force_RK):
k1 = dt * G(Y,time_RK,force_RK)
k2 = dt * G(Y + 0.5*k1,time_RK + 0.5*dt,force_RK)
k3 = dt * G(Y + 0.5*k2,time_RK + 0.5*dt,force_RK)
k4 = dt * G(Y + k3,time_RK + dt,force_RK)
return (k1 + k2*2 + k3*2 + k4)/6
#initial state
Y = np.array([[0,0],[0,0]])
A = np.array([[M,0],[0,1]])
B = np.array([[Cs,Ks],[-1,0]])
C = np.array([[Cs,Ks],[0,0]])
D = np.array([[m,0],[0,1]])
E = np.array([[Cs,(Ks+Kt)],[-1,0]])
H = np.array([[Cs,Ks],[0,0]])
inv_A = inv(A)
inv_D = inv(D)
#solution
for t in time:
Force = road_force(Kt,Road_Amp,Road_freq,t,0,5,True)
Y = Y + RK4_step(Y,t,delta_t,Force)
我已经改变了阻尼系数,但图表中没有任何变化,并且仍然像没有阻尼一样振荡。请帮忙
解决方案
推荐阅读
- java - Java 客户端中带有 wsHttpBinding Axis2 的 WCF 服务的安全令牌问题
- python-3.x - Knime 的 Python 脚本节点无法识别 Windows 10 环境变量
- swift - 自定义 MapView 类 Swift
- javascript - Angular:动态渲染时,SVG 路径标记不可见
- python - 为什么 `conda env export` 没有列出所有 pip 包?
- java - 在 Java 中使用 PHash (OpenCV)
- swiftui - 如何使用 [Int] 在 ForEach 中生成唯一 ID
- javascript - 将 observable 适配到 D3 但网页中没有渲染
- java - 如何通过 Ajax 调用向 Servlet 发送文件
- kotlin - Kotlin 澄清 @ 符号和返回后缀