Hello,欢迎做客我的博客!
在动力学仿真中,我们不得不采用迭代的方法进行数值计算,这个时候我们会用到离散化的数学模型。
可是,我们在建立模型时,考虑的都是连续的情况,那么如何将一个连续的模型转换为离散模型呢?
这篇文章将告诉你答案。
1 模型表示方法
1.1 连续模型
X ˙ = A X + B U Y = C X + D U \begin{aligned} \dot{X}&=AX+BU\\ Y&=CX+DU \end{aligned} X˙Y=AX+BU=CX+DU
1.2 离散模型
X
[
(
k
+
1
)
Δ
T
]
=
G
X
[
k
Δ
T
]
+
H
U
[
k
Δ
T
]
Y
[
(
k
+
1
)
Δ
T
]
=
C
X
[
k
Δ
T
]
+
D
U
[
k
Δ
T
]
\begin{aligned} {X}\left[ (k+1)\Delta T\right] &=GX[k\Delta T]+HU[k\Delta T]\\ Y\left[ (k+1)\Delta T\right]&=CX[k\Delta T]+DU[k\Delta T] \end{aligned}
X[(k+1)ΔT]Y[(k+1)ΔT]=GX[kΔT]+HU[kΔT]=CX[kΔT]+DU[kΔT]
其中,
Δ
T
\Delta T
ΔT是采样周期。注意,由于输出方程本身就不是微分方程,所以不需要进行离散化,离散系统和连续系统的系数矩阵相同。
2 离散化方法
2.1 精确离散化方法
离散化的主要目标就是要保证离散化后的系统特性不变,具体而言,我们期望离散化后的系统和连续系统的系统状态
X
X
X在
t
=
k
Δ
T
t=k\Delta T
t=kΔT的时刻下保持一致。
基于此思想,我们可以推导出离散化方法。
第一,连续模型的解可以表示为:
X ( t ) = Φ ( t − t 0 ) X ( t 0 ) + ∫ t 0 t Φ ( t − τ ) B U ( τ ) d τ X(t)=\Phi(t-t_0)X(t_0)+\int_{t_0}^{t}\Phi(t-\tau)BU(\tau) \ d\tau X(t)=Φ(t−t0)X(t0)+∫t0tΦ(t−τ)BU(τ) dτ
第二,取
t
0
=
k
Δ
T
t_0=k\Delta T
t0=kΔT,
t
=
(
k
+
1
)
Δ
T
t=(k+1)\Delta T
t=(k+1)ΔT,由于我们希望离散化后的系统和原系统在
t
0
t_0
t0和
t
t
t时刻的系统状态相等,因此我们将二者代入上式,可到离散化系统的方程:
X
[
(
k
+
1
)
Δ
T
]
=
Φ
(
Δ
T
)
X
[
k
Δ
T
]
+
∫
k
Δ
T
(
k
+
1
)
Δ
T
Φ
(
k
Δ
T
−
τ
)
B
U
[
k
Δ
T
]
d
τ
X[(k+1)\Delta T]=\Phi(\Delta T)X[k\Delta T]+\int_{k\Delta T}^{(k+1)\Delta T}\Phi(k\Delta T-\tau)BU[k\Delta T]\ d\tau
X[(k+1)ΔT]=Φ(ΔT)X[kΔT]+∫kΔT(k+1)ΔTΦ(kΔT−τ)BU[kΔT] dτ
其中,
Φ
(
t
)
=
e
A
t
\Phi(t)=e^{At}
Φ(t)=eAt。此外,在
[
k
Δ
T
,
(
k
+
1
)
Δ
T
]
[k\Delta T,(k+1)\Delta T]
[kΔT,(k+1)ΔT]期间,控制量不变,为
U
[
k
Δ
T
]
U[k\Delta T]
U[kΔT]。
第三,令
z
=
(
k
+
1
)
Δ
T
−
τ
z=(k+1)\Delta T-\tau
z=(k+1)ΔT−τ,代入上式可得:
X
[
(
k
+
1
)
Δ
T
]
=
Φ
(
Δ
T
)
X
[
k
Δ
T
]
+
∫
0
Δ
T
Φ
(
z
)
B
d
z
⋅
U
[
k
Δ
T
]
X[(k+1)\Delta T]=\Phi(\Delta T)X[k\Delta T]+\int_{0}^{\Delta T}\Phi(z)B\ dz \cdot U[k\Delta T]
X[(k+1)ΔT]=Φ(ΔT)X[kΔT]+∫0ΔTΦ(z)B dz⋅U[kΔT]
第四,取
G
=
Φ
(
Δ
T
)
G=\Phi(\Delta T)
G=Φ(ΔT),
H
=
∫
0
Δ
T
Φ
(
z
)
B
d
z
H=\int_{0}^{\Delta T}\Phi(z)B\ dz
H=∫0ΔTΦ(z)B dz,可得离散系统方程为:
X
[
(
k
+
1
)
Δ
T
]
=
G
X
[
k
Δ
T
]
+
H
U
[
k
Δ
T
]
X[(k+1)\Delta T]=GX[k\Delta T]+H U[k\Delta T]
X[(k+1)ΔT]=GX[kΔT]+HU[kΔT]
以上离散化方法被称之为精确离散化方法,与此相对的我们在实际应用中还常常用到一种近似离散化方法。
2.2 近似离散化方法
这种离散化方法的主要思想是用差分来代替微分,即:
X
˙
[
k
Δ
T
]
=
X
[
(
k
+
1
)
Δ
T
]
−
X
[
k
Δ
T
]
Δ
T
=
A
X
[
k
Δ
T
]
+
B
U
[
k
Δ
T
]
\dot{X}[k\Delta T]=\frac{X[(k+1)\Delta T]-X[k\Delta T]}{\Delta T}=AX[k\Delta T]+BU[k\Delta T]
X˙[kΔT]=ΔTX[(k+1)ΔT]−X[kΔT]=AX[kΔT]+BU[kΔT]
于是,有:
X
[
(
k
+
1
)
Δ
T
]
=
(
I
+
A
Δ
T
)
X
[
k
Δ
T
]
+
(
B
Δ
T
)
U
[
k
Δ
T
]
=
G
X
[
k
Δ
T
]
+
H
U
[
k
Δ
T
]
X[(k+1)\Delta T]=(I+A\Delta T)X[k\Delta T]+(B\Delta T)U[k\Delta T]=GX[k\Delta T]+HU[k\Delta T]
X[(k+1)ΔT]=(I+AΔT)X[kΔT]+(BΔT)U[kΔT]=GX[kΔT]+HU[kΔT]
2.3 两种离散化方法的联系
事实上,精确方法是近似方法的推广,精确法甚至可以用到时变系统中。因此,我们通过某种简化,就可以把精确方法转换为近似方法。
我们知道:
Φ
(
t
)
=
e
A
t
=
I
+
A
t
+
1
2
!
A
2
t
2
+
.
.
.
\Phi(t)=e^{At}=I+At+\frac{1}{2!}A^2t^2+...
Φ(t)=eAt=I+At+2!1A2t2+...
把上式代入表达式
G
=
Φ
(
Δ
T
)
G=\Phi(\Delta T)
G=Φ(ΔT),
H
=
∫
0
Δ
T
Φ
(
z
)
B
d
z
H=\int_{0}^{\Delta T}\Phi(z)B\ dz
H=∫0ΔTΦ(z)B dz,可得:
G
=
Φ
(
Δ
T
)
=
I
+
A
Δ
T
+
1
2
!
A
2
Δ
T
2
+
.
.
.
G=\Phi(\Delta T)=I+A{\Delta T}+\frac{1}{2!}A^2{\Delta T}^2+...
G=Φ(ΔT)=I+AΔT+2!1A2ΔT2+...
H
=
∫
0
Δ
T
Φ
(
z
)
B
d
z
=
∫
0
Δ
T
I
+
A
z
+
1
2
!
A
2
z
2
+
.
.
.
d
z
⋅
B
=
(
Δ
T
+
1
2
A
Δ
T
2
+
.
.
.
.
)
⋅
B
\begin{aligned} H&=\int_{0}^{\Delta T}\Phi(z)B\ dz\\ &=\int_{0}^{\Delta T}I+Az+\frac{1}{2!}A^2z^2+...\ dz \cdot B\\ &=({\Delta T}+\frac{1}{2}A{\Delta T}^2+....)\cdot B \end{aligned}
H=∫0ΔTΦ(z)B dz=∫0ΔTI+Az+2!1A2z2+... dz⋅B=(ΔT+21AΔT2+....)⋅B
由于,假设采样周期
Δ
\Delta
Δ很小,所以可以省略高阶项,于是得到:
G
=
I
+
A
Δ
T
,
H
=
B
Δ
T
G=I+A{\Delta T},H=B\Delta T
G=I+AΔT,H=BΔT
可知,上式与近似方法取得的结果完全相同。
3 结论
事实上,我们在仿真中通常都是采用近似方法来迭代求解微分方程,那么这么做有没有问题呢?
在这篇文章中,我们看到,当采样时间很短时,近似方法是可以和精确方法等价的。
所以,只要采用较短的采样时间,我们可以使用近似方法进行模型的仿真!