matlab能不能在给出初始条件的情况下求解一阶常系数差分方程?
供稿:hz-xin.com 日期:2025-01-15
一道关于一阶常系数线性差分方程的简单问题
先用syms声明符号变量,然后用dslove命令
sys1=tf([1],[0.4,1],\'inputdelay\',0.76);
dsys1=c2d(sys1,ts,\'zoh\');
[num1,den1]=tfdata(dsys1,\'v\');
sys1=tf([1],[0.4,1],\'inputdelay\',0.76);
%系统传递函数
dsys1=c2d(sys1,ts,\'zoh\');
转化成dz函数
[num1,den1]=tfdata(dsys1,\'v\');
获得z传函的分子和分母
%Ideal closed loop
期望鼻环传递函数
sys2=tf([1],[0.15,1],\'inputdelay\',0.76);
系统传递函数
dsys2=c2d(sys2,ts,\'zoh\');
转化成d(z)函数
%Design Dalin controller
设计大林控制器
dsys=1/dsys1*dsys2/(1-dsys2);
dz=就是d(z)的公式
[num,den]=tfdata(dsys,\'v\');
获得z传函的分子和分母
u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;
y_1=0.0;
error_1=0.0;error_2=0.0;error_3=0.0;
ei=0;
应该是清零
for k=1:1:50
采样的比
time(k)=k*ts;
定义time k
rin(k)=1.0; %Tracing Step Signal
跟踪阶跃信号
yout(k)=-den1(2)*y_1+num1(2)*u_2+num1(3)*u_3;
error(k)=rin(k)-yout(k);
差分方程
M=1 大林算法
M=2 pid算法
直接用t+1代t即可
具体解法可参阅:http://szjc.math168.com/book/ebookdetail.aspx?cateid=1&&Sectionid=16936
方程可化为:yx+1-3/2 yx=0;
此时P=3/2,因此通解为:yx=A(3/2)^x
先用syms声明符号变量,然后用dslove命令
sys1=tf([1],[0.4,1],\'inputdelay\',0.76);
dsys1=c2d(sys1,ts,\'zoh\');
[num1,den1]=tfdata(dsys1,\'v\');
sys1=tf([1],[0.4,1],\'inputdelay\',0.76);
%系统传递函数
dsys1=c2d(sys1,ts,\'zoh\');
转化成dz函数
[num1,den1]=tfdata(dsys1,\'v\');
获得z传函的分子和分母
%Ideal closed loop
期望鼻环传递函数
sys2=tf([1],[0.15,1],\'inputdelay\',0.76);
系统传递函数
dsys2=c2d(sys2,ts,\'zoh\');
转化成d(z)函数
%Design Dalin controller
设计大林控制器
dsys=1/dsys1*dsys2/(1-dsys2);
dz=就是d(z)的公式
[num,den]=tfdata(dsys,\'v\');
获得z传函的分子和分母
u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;
y_1=0.0;
error_1=0.0;error_2=0.0;error_3=0.0;
ei=0;
应该是清零
for k=1:1:50
采样的比
time(k)=k*ts;
定义time k
rin(k)=1.0; %Tracing Step Signal
跟踪阶跃信号
yout(k)=-den1(2)*y_1+num1(2)*u_2+num1(3)*u_3;
error(k)=rin(k)-yout(k);
差分方程
M=1 大林算法
M=2 pid算法