我再加一个条件,列车的牵引力如下: F_1=m_1 v ̇_1-(a+bv+cv^2 )-(m_1 gsinθ+600/R+0.0013L_s)
时间: 2024-05-18 15:13:27 浏览: 8
好的,那么在控制器的设计中,我们需要将牵引力考虑进去。可以将控制器的输出u与牵引力F1相加,得到列车的总期望力F。
在计算牵引力时,可以将列车的质量m1、速度v1、加速度vdot1、倾斜角度θ、曲率半径R、列车间距Ls等因素考虑进去,得到如下公式:
F_1 = m_1*vdot1 - (a+b*v1+c*v1^2) - (m_1*g*sin(θ) + 600/R + 0.0013*L_s)
其中a、b、c、g、θ、R、Ls均为常数。根据牵引力和控制器的输出,可以得到列车的期望加速度:
vdot1_desired = (F + F_1)/m_1
最后,利用欧拉方法对位置和速度进行迭代,得到列车的实际位置和速度,从而实现控制器的设计。
相关问题
定义一个辅助函数,输入满足如下条件: ∆_i (t)=u_i (t)-w_i (t) (4-2) 且有 β ̇_i (t)=-α_0/m_i ∙β_i (t)+(∆_i (t))/m_i (4-3) 式中,α_0是一个经验常数,m_i是列车的质量。 定义一个函数如下 p_i=σ_i-β_i (4-4) 所以有 p_i=k_i e_i+e ̇_i-β_i (4-5) 为确保系统稳定,选取Lyapunov函数,证明系统的稳定性,Lyapunov函数如下: Y=Y_1 (t)+Y_2 (t)+⋯+Y_n (t)=∑_(i=1)^n▒〖Y_i (t) 〗=∑_(i=1)^n▒〖m_i/2∙〗 p_i (4-5)
以下是一个 Python 函数的实现,它可以计算 ∆_i (t) 和 p_i:
```
def calculate_delta(u_i, w_i):
return u_i - w_i
def calculate_p(sigma_i, beta_i, k_i, e_i, e_dot_i):
return sigma_i - beta_i - k_i * e_i - e_dot_i
```
为了证明系统的稳定性,我们可以选择 Lyapunov 函数作为能量函数,并证明它在时间上是单调递减的。根据公式(4-5),我们可以定义 Lyapunov 函数 Y:
```
def lyapunov_function(m_i, p_i):
return sum([m_i[i] / 2 * p_i[i] ** 2 for i in range(len(m_i))])
```
我们需要证明,对于所有 t > 0,Lyapunov 函数 Y 的导数小于或等于零,即 dY/dt ≤ 0。根据公式(4-3)和(4-4),我们可以得到:
```
dY/dt = ∑_(i=1)^n▒〖m_i/2∙(∆_i (t)/m_i + α_0/m_i ∙β_i (t))^2 - σ_i ∙ (∆_i (t)/m_i + α_0/m_i ∙β_i (t)) - k_i ∙ e_i ∙ β_i (t) - e_dot_i ∙ β_i (t)〗
```
我们可以将上述等式化简为:
```
dY/dt = ∑_(i=1)^n▒〖m_i/2∙(∆_i (t)/m_i)^2 - σ_i ∙ (∆_i (t)/m_i) + (α_0/m_i) ∙ (∆_i (t) ∙ β_i (t)) - (α_0/m_i) ∙ (β_i (t))^2 - k_i ∙ e_i ∙ β_i (t) - e_dot_i ∙ β_i (t)〗
```
我们可以将上述等式进一步化简,得到:
```
dY/dt = ∑_(i=1)^n▒〖m_i/2∙(∆_i (t)/m_i)^2 - σ_i ∙ (∆_i (t)/m_i) - (p_i)^2 - e_dot_i ∙ β_i (t)〗
```
我们可以发现,上述等式中的每一项都是非负数。因此,我们可以得出结论,Lyapunov 函数 Y 的导数小于或等于零,即 dY/dt ≤ 0,证明了系统的稳定性。
β ̇_i =-α_0/m_i ∙β_i+(∆_i )/m_i 如何在MATLAB表达β_i
在MATLAB中,可以使用符号计算工具箱来表示和操作符号表达式。假设你已经定义了符号变量 `alpha_0`、`m_i`、`beta_i` 和 `delta_i`。那么可以如下表示和操作符号表达式:
```
syms alpha_0 m_i beta_i delta_i
ode = diff(beta_i) == -alpha_0/m_i * beta_i + delta_i/m_i;
```
这里 `ode` 表示微分方程,其中 `diff(beta_i)` 表示对 `beta_i` 求一阶导数。你可以使用符号数值方法工具箱中的 `dsolve` 函数求解微分方程,如下所示:
```
sol = dsolve(ode);
```
`sol` 表示微分方程的通解,其中 `C1` 是一个常数。你可以根据初始条件求解 `C1` 的值,例如:
```
beta_i0 = 1; % 初始值
delta_i0 = 0; % 初始值
C1 = solve(subs(sol, 0) == beta_i0, 'C1');
```
这里 `subs` 函数用来替换符号变量的值,并求解 `C1` 的值。接下来,你可以将 `C1` 的值代入 `sol` 中,得到特解:
```
beta_i_t = subs(sol, C1, C1_sol);
```
这里 `C1_sol` 是 `C1` 的解。至此,你就可以用 MATLAB 表示出 `beta_i` 的解析式了。如果需要求出具体的数值解,可以使用 `subs` 函数代入具体的 `alpha_0`、`m_i` 和 `delta_i` 的值,例如:
```
alpha_0_val = 1; % alpha_0 的值
m_i_val = 2; % m_i 的值
delta_i_val = 3; % delta_i 的值
beta_i_val = subs(beta_i_t, {alpha_0, m_i, delta_i}, {alpha_0_val, m_i_val, delta_i_val});
```
这里 `subs` 函数用来代入具体的值,得到数值解 `beta_i` 的值。
相关推荐
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)