连续状态方程离散化

连续状态方程

连续状态方程的表达式为:
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}} α=eAt
所以有:
[ e − A t x ( t ) ] ′ = e − A t B u ( t ) {\left[ {{e^{ - At}}x(t)} \right]^\prime } = {e^{ - At}}Bu(t) [eAtx(t)]=eAtBu(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. [eAtx(t)]=eAtBu(t)dtd[eAtx(t)]=eAtBu(t)t0td[eAtx(t)]=t0teAtBu(t)dtx(t)=x(t0)eA(tt0)+Bt0teFτ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=0n!(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+1tk=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+1tk)+Btktk+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+Btktk+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+Btktk+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=Btktk+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=B0TeAtdt
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+B0TeAtdtu(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+B0TeAtdtu(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)=(sIA)1x(0)+(sIA)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=L1[(sIA)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

你可能感兴趣的:(学习)