连续状态方程
连续状态方程的表达式为:
x
˙
(
t
)
=
A
x
(
t
)
+
B
u
(
t
)
y
(
t
)
=
C
x
(
t
)
+
D
u
(
t
)
\begin{array}{l}\dot x(t) = Ax(t) + Bu(t)\\y(t) = Cx(t) + Du(t)\end{array}
x˙(t)=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t)
将以上状态方程离散化以下形式:
x
(
k
+
1
)
=
E
x
(
k
)
+
F
u
(
k
)
y
(
k
)
=
G
x
(
k
)
+
H
u
(
k
)
\begin{array}{l}x(k + 1) = Ex(k) + Fu(k)\\y(k) = Gx(k) + Hu(k)\end{array}
x(k+1)=Ex(k)+Fu(k)y(k)=Gx(k)+Hu(k)
第一种方式:解状态方程
求解
对连续状态方程进行变形:
{
x
˙
(
t
)
−
A
x
(
t
)
=
B
u
(
t
)
α
x
˙
(
t
)
−
α
A
x
(
t
)
=
α
B
u
(
t
)
(
α
x
(
t
)
)
′
=
α
B
u
(
t
)
\left\{ \begin{array}{l}\dot x(t) - Ax(t) = Bu(t)\\\alpha \dot x(t) - \alpha Ax(t) = \alpha Bu(t)\\(\alpha x(t))' = \alpha Bu(t)\end{array} \right.
⎩⎨⎧x˙(t)−Ax(t)=Bu(t)αx˙(t)−αAx(t)=αBu(t)(αx(t))′=αBu(t)
求解
α
\alpha
α为时间t的函数有:
α
=
e
−
A
t
\alpha = {e^{ - At}}
α=e−At
所以有:
[
e
−
A
t
x
(
t
)
]
′
=
e
−
A
t
B
u
(
t
)
{\left[ {{e^{ - At}}x(t)} \right]^\prime } = {e^{ - At}}Bu(t)
[e−Atx(t)]′=e−AtBu(t)
求解有:
{
[
e
−
A
t
x
(
t
)
]
′
=
e
−
A
t
B
u
(
t
)
d
[
e
−
A
t
x
(
t
)
]
d
t
=
e
−
A
t
B
u
(
t
)
∫
t
0
t
d
[
e
−
A
t
x
(
t
)
]
=
∫
t
0
t
e
−
A
t
B
u
(
t
)
d
t
x
(
t
)
=
x
(
t
0
)
e
A
(
t
−
t
0
)
+
B
∫
t
0
t
e
−
F
τ
u
(
τ
)
d
τ
\left\{ \begin{array}{l}{\left[ {{e^{ - At}}x(t)} \right]^\prime } = {e^{ - At}}Bu(t)\\\frac{{d\left[ {{e^{ - At}}x(t)} \right]}}{{dt}} = {e^{ - At}}Bu(t)\\\int_{{t_0}}^t d \left[ {{e^{ - At}}x(t)} \right] = \int_{{t_0}}^t {{e^{ - At}}Bu(t)d} t\\x(t) = x({t_0}){e^{A(t - {t_0})}} + B\int_{{t_0}}^t {{e^{ - F\tau }}u(\tau )d\tau } \end{array} \right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧[e−Atx(t)]′=e−AtBu(t)dtd[e−Atx(t)]=e−AtBu(t)∫t0td[e−Atx(t)]=∫t0te−AtBu(t)dtx(t)=x(t0)eA(t−t0)+B∫t0te−Fτu(τ)dτ
其中设其实时刻为
t
0
{{t_0}}
t0,对于F为矩阵的情况,可以用指数级数展开的公式计算:
e
A
t
=
∑
n
=
0
∞
(
A
t
)
n
n
!
{e^{At}} = \sum\limits_{n = 0}^\infty {\frac{{{{(At)}^n}}}{{n!}}}
eAt=n=0∑∞n!(At)n
一般到二阶即可。
离散化
设相邻采样时刻为
t
k
{t_k}
tk和
t
k
+
1
{t_{k + 1}}
tk+1,有
t
k
+
1
−
t
k
=
T
{t_{k + 1}} - {t_k} = T
tk+1−tk=T,
T
T
T为采样间隔。对与求解的表达式代入有:
x
(
t
k
+
1
)
=
x
(
t
k
)
e
A
(
t
k
+
1
−
t
k
)
+
B
∫
t
k
t
k
+
1
e
A
(
t
−
τ
)
u
(
τ
)
d
τ
x({t_{k + 1}}) = x({t_k}){e^{A({t_{k + 1}} - {t_k})}} + B\int_{{t_k}}^{{t_{k + 1}}} {{e^{ A(t-\tau) }}u(\tau )d\tau }
x(tk+1)=x(tk)eA(tk+1−tk)+B∫tktk+1eA(t−τ)u(τ)dτ
x ( t k + 1 ) = x ( t k ) e A T + B ∫ t k t k + 1 e A ( t k + 1 − τ ) u ( τ ) d τ x({t_{k + 1}}) = x({t_k}){e^{AT}} + B\int_{{t_k}}^{{t_{k + 1}}} {{e^{ A(t_{k+1}-\tau) }}u(\tau )d\tau } x(tk+1)=x(tk)eAT+B∫tktk+1eA(tk+1−τ)u(τ)dτ
相邻采样时刻间隔很小,这里采用一个近似所有:
u
(
τ
)
=
u
(
t
k
)
,
t
k
≤
τ
≤
t
k
+
1
u(\tau ) = u({t_k}),{t_k} \le \tau \le {t_{k + 1}}
u(τ)=u(tk),tk≤τ≤tk+1
所以有:
x
(
t
k
+
1
)
=
x
(
t
k
)
e
A
T
+
B
∫
t
k
t
k
+
1
e
A
(
t
k
+
1
−
τ
)
u
(
τ
)
d
τ
=
x
(
t
k
)
e
A
T
+
B
u
(
t
k
)
∫
t
k
t
k
+
1
e
A
(
t
k
+
1
−
τ
)
d
τ
\begin{array}{c}x({t_{k + 1}}) = x({t_k}){e^{AT}} + B\int_{{t_k}}^{{t_{k + 1}}} {{e^{A({t_{k + 1}} - \tau )}}u(\tau )d\tau } \\ = x({t_k}){e^{AT}} + Bu({t_k})\int_{{t_k}}^{{t_{k + 1}}} {{e^{A({t_{k + 1}} - \tau )}}d\tau } \end{array}
x(tk+1)=x(tk)eAT+B∫tktk+1eA(tk+1−τ)u(τ)dτ=x(tk)eAT+Bu(tk)∫tktk+1eA(tk+1−τ)dτ
对比离散方程可以推出
E
=
e
A
T
,
F
=
B
∫
t
k
t
k
+
1
e
A
(
t
k
+
1
−
τ
)
d
τ
E = {e^{AT}},F = B\int_{{t_k}}^{{t_{k + 1}}} {{e^{A({t_{k + 1}} - \tau )}}d\tau }
E=eAT,F=B∫tktk+1eA(tk+1−τ)dτ
对于
F
F
F,设$\lambda = {t_{k + 1}} - \tau $,可以推出B:
F
=
B
∫
0
T
e
A
t
d
t
F = B\int_0^T {{e^{At }}} dt
F=B∫0TeAtdt
设
t
k
=
k
T
{t_k} = kT
tk=kT,代入到
x
(
t
)
x(t)
x(t)的表达式中有:
x
[
(
k
+
1
)
T
]
=
x
(
k
T
)
e
A
T
+
B
∫
0
T
e
A
t
d
t
⋅
u
(
k
T
)
x\left[ {\left( {k + 1} \right)T} \right] = x\left( {kT} \right){e^{AT}} + B\int_0^T {{e^{At}}dt} \cdot u(kT)
x[(k+1)T]=x(kT)eAT+B∫0TeAtdt⋅u(kT)
因为
(
k
+
1
)
T
({k + 1})T
(k+1)T只表示序列点出现的时刻,所以拿掉
T
T
T有:
x
(
k
+
1
)
=
x
(
k
)
e
A
T
+
B
∫
0
T
e
A
t
d
t
⋅
u
(
k
)
x {\left( {k + 1} \right)} = x\left( {k} \right){e^{AT}} + B\int_0^T {{e^{At}}dt} \cdot u(k)
x(k+1)=x(k)eAT+B∫0TeAtdt⋅u(k)
对于
e
A
t
{{e^{At}}}
eAt有另一种计算方式,对状态方程进行Laplace变化:
s
x
(
s
)
−
x
(
0
)
=
A
x
(
s
)
+
B
u
(
s
)
sx(s) - x(0) = Ax(s) + Bu(s)
sx(s)−x(0)=Ax(s)+Bu(s)
有:
x
(
s
)
=
(
s
I
−
A
)
−
1
x
(
0
)
+
(
s
I
−
A
)
−
1
B
u
(
s
)
x(s) = {(sI - A)^{ - 1}}x(0) + {(sI - A)^{ - 1}}Bu(s)
x(s)=(sI−A)−1x(0)+(sI−A)−1Bu(s)
其中
I
I
I为单位矩阵。对比之前求解的
x
(
t
)
x(t)
x(t)的表达式有:
e
A
t
=
L
−
1
[
(
s
I
−
A
)
−
1
]
{e^{At}} = {L^{ - 1}}\left[ {{{\left( {sI - A} \right)}^{ - 1}}} \right]
eAt=L−1[(sI−A)−1]
第二种方法:欧拉法
写出
x
˙
(
t
)
\dot x(t)
x˙(t)的表达式:
x
˙
(
t
)
=
x
(
k
+
1
)
−
x
(
k
)
T
\dot x(t) = \frac{{x(k + 1) - x(k)}}{T}
x˙(t)=Tx(k+1)−x(k)
代入到连续状态方程中有:
{
x
(
k
+
1
)
−
x
(
k
)
T
=
A
x
(
k
)
+
B
u
(
k
)
⇒
x
(
k
+
1
)
−
x
(
k
)
=
A
T
x
(
k
)
+
B
T
u
(
k
)
⇒
x
(
k
+
1
)
=
(
A
T
+
1
)
x
(
k
)
+
B
T
u
(
k
)
\left\{ \begin{array}{l}\frac{{x(k + 1) - x(k)}}{T} = Ax(k) + Bu(k)\\ \Rightarrow x(k + 1) - x(k) = ATx(k) + BTu(k)\\ \Rightarrow x(k + 1) = \left( {AT + 1} \right)x(k) + BTu(k)\end{array} \right.
⎩⎨⎧Tx(k+1)−x(k)=Ax(k)+Bu(k)⇒x(k+1)−x(k)=ATx(k)+BTu(k)⇒x(k+1)=(AT+1)x(k)+BTu(k)
所以有
E
=
(
A
T
+
I
)
,
F
=
B
T
E = \left( {AT + I} \right),F = BT
E=(AT+I),F=BT