差分方程
连续系统的动态过程采用拉普拉斯变换求解微分方程描述,离散系统的动态过程采用z变换求解差分方程描述。差分方程表示出系统离散输入与离散输出之间的函数关系。
一阶前向差分:
Δf(k)=f(k+1)−f(k)
二阶前向差分:
Δ2f(k)=Δ[Δf(k)]=Δf(k+1)−Δf(k)=f(k+2)−2f(k+1)+f(k)
N 阶前向差分:
Δnf(k)=Δ[Δn−1f(k)]
一阶后向差分:
∇f(k)=f(k)−f(k−1)
二阶后向差分:
∇2f(k)=∇[∇f(k)]=∇f(k)−∇f(k−1)=f(k)−2f(k−1)+f(k−2)
N 阶后向差分:
∇nf(k)=∇[∇n−1f(k)]
如果一个方程中除了含有函数本身外,还有函数的差分,称此方程为差分方程。差分方程的阶次为最高差分与最低差分之差。
φ[k,x(k),Δx(k),Δ2x(k),⋯,Δnx(k)]
传递函数离散化
将s域下的传递函数G(s)经过z变换将s变量全部替换为z得到G(z)。常用s域和z域的对应关系如下,T为采样时间
前向差分变换(嵌入式常用离散方法)
z=eTs≈1+Ts⇔s=z−1T
后向差分变换
z=eTs=(eTs)−1≈11−Ts⇔s=1−z−1T
双线性变换(Tustin)
z=eTs=eTs2(e−Ts2)−1≈1+Ts21−Ts2⇔s=2T1−z−11+z−1
Z变换转为差分方程
zy(z)=y(k+1),z−1y(z)=y(k−1)
以连续系统的一阶传递函数为例,对其进行z变换离散化,然后写成差分方程的形式即可在嵌入式设备运行。
一阶传递函数,G(z)为连续系统输出与输入之比。
G(s)=bs+a
对一阶传递函数使用前向差分法离散化,G(z)为离散系统输出与输入之比。将z变换写成差分方程形式,
G(z)=Tbz+(Ta−1)=y(z)u(z)⇒[z+(Ta−1)]y(z)=Tbu(z)⇒zy(z)=(1−Ta)y(z)+Tbu(z)⇒y(k+1)=(1−Ta)y(k)+Tbu(k)
状态空间方程离散化
连续系统的状态空间方程表示为
{˙x=Ax+Buy=Cx+Du
将状态空间方程离散化方法有欧拉法和零阶保持法等,采样时间为 T。
欧拉法
欧拉法也称前向差分法,采用如下公式近似微分
˙x=x(k+1)−x(k)T
带入连续状态空间方程得
˙x=x(k+1)−x(k)T=Ax(k)+Bu(k)⇒x(k+1)−x(k)=T[Ax(k)+Bu(k)]⇒x(k+1)=(I+TA)x(k)+TBu(k)
最终得到离散状态空间方程
{x(k+1)=Azx(k)+Bzu(k)y(k)=Czx(k)+Dzu(k)Az=I+TA;Bz=TB;Cz=C;Dz=D
零阶保持器法
在连续系统的状态空间方程添加零阶保持器,然后一起Z变换离散化结合泰勒公式得到离散状态空间方程,其中离散状态空间方程的矩阵A和B的求解可以参照矩阵的一阶非齐次微分方程。
˙x=Ax+Bu
两边左乘e−At,整理得
e−At[˙x(t)−Ax(t)]=e−AtBu(t)ddt[e−Atx(t)]=e−AtBu(t)
两边积分整理可得到
x(t)=eAtx(0)+∫t0eA(t−τ)Bu(τ)d(τ)
当t=kT时
x(kT)=eAkTx(0)+∫kT0eA(kT−τ)Bu(τ)d(τ)
当t=(k+1)T时
x[(k+1)T]=eA[(k+1)T]x(0)+∫(k+1)T0eA[(k+1)T−τ]Bu(τ)d(τ)
整理得
x[(k+1)T]=eATx(kT)+∫(k+1)TkTeA[(k+1)T−τ]Bu(τ)d(τ)
当使用零阶保持器时,有
u(t)≈uh(t),kT≤t≤(k+1)T
变换积分空间得
x[(k+1)T]=eATx(kT)+(∫T0eATdt)u(kT)
例:
线性定常系统的状态方程描述为
˙x=Ax+BuA=[0003],B=[23−23]
则
eAT=[100e−3T]∫T0eATBdt=∫T0[100e−3T][23−23]dt=[23T29(e3T−1)]
采用零阶保持器得差分方程为
x1(k+1)=x1(k)+23Tu(k)x2(k+1)=e−3Tx2(k)+29(e3T−1)u(k)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人