离散系统的差分方程
差分方程
连续系统的动态过程采用拉普拉斯变换求解微分方程描述,离散系统的动态过程采用z变换求解差分方程描述。差分方程表示出系统离散输入与离散输出之间的函数关系。
一阶前向差分:
\[\Delta f(k)=f(k+1)-f(k)
\]
二阶前向差分:
\[\Delta^2f(k)=\Delta[\Delta f(k)]=\Delta f(k+1)-\Delta f(k)=f(k+2)-2f(k+1)+f(k)
\]
N 阶前向差分:
\[\Delta^n f(k)=\Delta[\Delta^{n-1}f(k)]
\]
一阶后向差分:
\[\nabla f(k)=f(k)-f(k-1)
\]
二阶后向差分:
\[\nabla^2f(k)=\nabla[\nabla f(k)]=\nabla f(k)-\nabla f(k-1)=f(k)-2f(k-1)+f(k-2)
\]
N 阶后向差分:
\[\nabla^n f(k)=\nabla[\nabla^{n-1}f(k)]
\]
如果一个方程中除了含有函数本身外,还有函数的差分,称此方程为差分方程。差分方程的阶次为最高差分与最低差分之差。
\[\varphi [k,x(k),\Delta x(k),\Delta^2 x(k),\cdots,\Delta^n x(k)]
\]
传递函数离散化
将s域下的传递函数\(G(s\))经过\(z\)变换将\(s\)变量全部替换为\(z\)得到\(G(z)\)。常用\(s\)域和\(z\)域的对应关系如下,\(T\)为采样时间
前向差分变换(嵌入式常用离散方法)
\[z=e^{Ts}\approx 1+Ts\Leftrightarrow s=\frac{z-1}{T}
\]
后向差分变换
\[z=e^{Ts}=(e^{Ts})^{-1}\approx \frac{1}{1-Ts} \Leftrightarrow s=\frac{1-z^{-1}}{T}
\]
双线性变换(Tustin)
\[z=e^{Ts}=e^{\frac{Ts}{2}}(e^{-\frac{Ts}{2}})^{-1} \approx \frac {1+\frac{Ts}{2}}{1-\frac{Ts}{2}} \Leftrightarrow s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}
\]
Z变换转为差分方程
\[zy(z)=y(k+1),z^{-1}y(z)=y(k-1)
\]
以连续系统的一阶传递函数为例,对其进行z变换离散化,然后写成差分方程的形式即可在嵌入式设备运行。
一阶传递函数,\(G(z)\)为连续系统输出与输入之比。
\[G(s)=\frac{b}{s+a}
\]
对一阶传递函数使用前向差分法离散化,G(z)为离散系统输出与输入之比。将z变换写成差分方程形式,
\[G(z)=\frac{Tb}{z+(Ta-1)}=\frac{y(z)}{u(z)}\\
\Rightarrow [z+(Ta-1)]y(z)=Tbu(z)\\
\Rightarrow zy(z)=(1-Ta)y(z)+Tbu(z)\\
\Rightarrow y(k+1)=(1-Ta)y(k)+Tbu(k)
\]
状态空间方程离散化
连续系统的状态空间方程表示为
\[\begin{cases}
\dot{x}=\mathbf{A}x+\mathbf{B}u\\
y = \mathbf{C}x+\mathbf{D}u
\end{cases}
\]
将状态空间方程离散化方法有欧拉法和零阶保持法等,采样时间为 T。
欧拉法
欧拉法也称前向差分法,采用如下公式近似微分
\[\dot{x}=\frac{x(k+1)-x(k)}{T}
\]
带入连续状态空间方程得
\[\dot{x}=\frac{x(k+1)-x(k)}{T}=\mathbf{A}x(k)+\mathbf{B}u(k)\\
\Rightarrow x(k+1)-x(k)=T[\mathbf{A}x(k)+\mathbf{B}u(k)]\\
\Rightarrow x(k+1)=(\mathbf{I}+T\mathbf{A})x(k)+T\mathbf{B}u(k)
\]
最终得到离散状态空间方程
\[\begin{aligned}
& \begin{cases}
x(k+1)=\mathbf{A_z}x(k)+\mathbf{B_z}u(k)\\
y(k)=\mathbf{C_z}x(k)+\mathbf{D_z}u(k)\\
\end{cases}\\
& \mathbf{A_z}=\mathbf{I}+T\mathbf{A}; \mathbf{B_z}=T\mathbf{B};\\
& \mathbf{C_z}=\mathbf{C};\mathbf{D_z}=\mathbf{D}
\end{aligned}
\]
零阶保持器法
在连续系统的状态空间方程添加零阶保持器,然后一起Z变换离散化结合泰勒公式得到离散状态空间方程,其中离散状态空间方程的矩阵A和B的求解可以参照矩阵的一阶非齐次微分方程。
\[\dot x = \mathbf{A}x+ \mathbf{B}u
\]
两边左乘\(e^{-\mathbf{A}t}\),整理得
\[e^{-\mathbf{A}t}[\dot x(t)-\mathbf{A}x(t)]=e^{-\mathbf{A}t}\mathbf{B}u(t)\\
\frac{\text{d}}{\text{d}t}[e^{-\mathbf{A}t}x(t)]=e^{-\mathbf{A}t}\mathbf{B}u(t)
\]
两边积分整理可得到
\[x(t)=e^{\mathbf{A}t}x(0)+\int_0^te^{\mathbf{A}(t-\tau)}\mathbf{B}u(\tau)\text{d}(\tau)
\]
当\(t=kT\)时
\[x(kT)=e^{\mathbf{A}kT}x(0)+\int_0^{kT}e^{\mathbf{A}(kT-\tau)}\mathbf{B}u(\tau)\text{d}(\tau)
\]
当\(t=(k+1)T\)时
\[x[(k+1)T]=e^{\mathbf{A}[(k+1)T]}x(0)+\int_0^{(k+1)T}e^{\mathbf{A}[(k+1)T-\tau]}\mathbf{B}u(\tau)\text{d}(\tau)
\]
整理得
\[x[(k+1)T]=e^{\mathbf{A}T}x(kT)+\int_{kT}^{(k+1)T}e^{\mathbf{A}[(k+1)T-\tau]}\mathbf{B}u(\tau)\text{d}(\tau)
\]
当使用零阶保持器时,有
\[u(t)\approx u_h(t),\quad kT\leq t \leq (k+1)T
\]
变换积分空间得
\[x[(k+1)T]=e^{\mathbf{A}T}x(kT)+(\int_0^Te^{\mathbf{A}T}\text{d}t)u(kT)
\]
例:
线性定常系统的状态方程描述为
\[\dot x=\mathbf{A}x+\mathbf{B}u\\
\mathbf{A}=\begin{bmatrix}0 & 0 \\ 0 & 3\\ \end{bmatrix},\mathbf{B}=\begin{bmatrix}\frac{2}{3} \\ -\frac{2}{3} \\ \end{bmatrix}
\]
则
\[e^{\mathbf{A}T} = \begin{bmatrix} 1& 0\\ 0 & e^{-3T}\end{bmatrix}\\
\int_0^T e^{\mathbf{A}T}\mathbf{B}\text{d}t = \int_0^T\begin{bmatrix} 1& 0\\ 0 & e^{-3T}\end{bmatrix}\begin{bmatrix} \frac{2}{3} \\ -\frac{2}{3}\end{bmatrix}\text{d}t=
\begin{bmatrix} \frac{2}{3}T \\ \frac{2}{9}(e^{3T}-1)\end{bmatrix}
\]
采用零阶保持器得差分方程为
\[\begin{aligned}
& x_1(k+1)=x_1(k)+\frac{2}{3}Tu(k) \\
& x_2(k+1)=e^{-3T}x_2(k)+\frac{2}{9}(e^{3T}-1)u(k)
\end{aligned}
\]