G(i)=(1- F(i))*D(i)/A(i);
H(i)=h*D(i)/A(i)-G(i)*B(i)/A(i); C1(i)=C(i)/D(i)-A(i)/B(i);
D1(i)=D(i)/B(i); %求惯性、比例惯性环节离散系数 end end end
?=diag(F(:, 1));G1=diag(G(:, 1));H1=diag(H(:, 1)); ?=diag(C1(:, 1));D2=diag(D1(:, 1));
%求各环节输入
Y=zeros(4,1);X=Y;y=zeros(1,4);r=10;Uk=zeros(4,1); t=0:h:Tf; N=length(t); t1=0; %求采样点个数 for k=1:N-1
Ub=Uk; %保存前一次输入
Uk=W*Y+W0*r; %求当前个环节输入v Udot=(Uk-Ub)/h; %求当前各环节输入导数 Uf=2*Uk-Ub; %求下一拍输入 %求各环节状态变量及输出
X=F'.*X+G'.*Uk+H'.*Udot; Y=C1'.*X+D1'.*Uf; y=[y;Y']; end
y4=y(:,4); plot(t,y4)
10. function uc=satura(ur,s1) %ur=1;s1=5; if (ur>=s1) uc=s1;
elseif (ur<=-1*s1) uc=-1*s1; else uc=ur; end
11.clc clear
Tf=input('仿真时间Tf='); %输入仿真时间 h=input('计算步长h='); %输入仿真步长
a=input('ASR参数a='); %输入转速调节器参数 P=[1 0.01 0.1 0; 0 0.85 1 a;
31
1 0.01 1 0;
0 0.051 1 0.15; 12.clc clear u=1;
x0=0; t=0;y=0; x0=[0;0;0];
A=[0 1 0;0 0 1;-22.06 -27 -10]; B=[0;0;1]; C=[40.6 0 0];
Tf=input('仿真时间Tf='); h=input('计算步长h='); x=x0;
for i=1:Tf/h K1=A*x+B*u;
K2=A*(x+h*K1/2)+B*u; K3=A*(x+h*K2/2)+B*u; K4=A*(x+h*K3)+B*u;
x=x+h*(K1+2*K2+2*K3+K4)/6; y=[y;C*x]; t=[t;t(i)+h]; end
plot(t,y)
1 0.0067 70 0; 1 0.15 0.21 0; 0 1 130 0; 1 0.01 0.1 0;
1 0.01 0.0044 0]; %输入各环节参数 W0=zeros(9,1);W0(1,1)=1; %输入外部链接矩阵
W=zeros(9,9);W(2,1)=1;W(2,9)=-1;W(3,2)=1;W(4,3)=1; W(4,8)=-1;W(5,4)=1;W(6,5)=1;W(6,7)=-0.212;W(7,6)=1;W(8,6)=1;W(9,7)=1; %输入系统连接矩阵 A=diag(P(:, 1));B=diag(P(:, 2));
C=diag(P(:, 3));D=diag(P(:, 4)); %生成系数矩阵 Q=B-D*W;Q1=inv(Q); R=C*W-A; V=C*W0;
A1=Q1*R; B1=Q1*V; %生成闭环系数矩阵 C1=[0 0 0 0 0 0 1 0 0];
u=1; %阶跃输入幅值
x0=zeros(9,1); t=0;y=0; %设置初值 x=x0;
for i=1:Tf/h
K1=A1*x+B1*u;
32
K2=A1*(x+h*K1/2)+B1*u; K3=A1*(x+h*K2/2)+B1*u; K4=A1*(x+h*K3)+B1*u;
x=x+h*(K1+2*K2+2*K3+K4)/6; y=[y;C1*x]; t=[t;t(i)+h]; end
plot(t,y)
13.clc clear u=1;
x0=[0 0 0]; C=[40.6 0 0]'; tspan=[0,10];
[t,x]=ode45('funexam2',tspan,x0); y=x*C;
plot(t,y);
14.clc clear
Tf=input('仿真时间Tf='); %输入仿真时间 h=input('计算步长h='); %输入仿真步长 x0=1/3; t=0; x=x0; %输入初始值 for i=1:Tf/h K1=-30*x0; x1=x0+h*K1;
x=[x;x1]; %变量以向量形式保存
t=[t;t(i)+h]; %对应时刻以向量形式保存 x0=x1; end
[t,x] %以数据形式输出 plot(t,x) %以曲线形式输出
15.clear
x0=[620,10,70]; % 置状态变量初值
tspan=[0,30]; % 置仿真时间区间
[t,x]=ode45('myf',tspan,x0); % 调用ode45求仿真解
plot(t,x(:,1),t,x(:,2),'--',t,x(:,3),':'); % 用不同的线型绘制仿真结果曲线
xlabel('time(天) t0=0, tf=30'); % 对t-x轴进行标注 ylabel('x(人):x1(0)=620,x2(0)=10;x3(0)=70');
33
legend('x1','x2','x3'); grid;
16.function dx=myf(t,x) dx = zeros(3,1);
dx(1)=-0.001*x(1)*x(2); % 第一个微分方程
dx(2)=0.001*x(1)*x(2)-0.072*x(2); % 第二个微分方程 dx(3)=0.072*x(2);
17.clear all
num=[0.005,0.005,0]; % 脉冲传递函数分子多项式按z的降幂系数 % 排列的行向量
den=[1,-2.4,1.863,-0.453]; % 脉冲传递函数分母多项式按z的降幂系数 % 排列的行向量
[yk,x,n]=dstep(num,den); % yk为存放输出离散序列的数组,n为dstep % 函数自动设定的采样点数 T=0.1; % 已知系统采样周期为0.1s for k=1:n
plot(k*T,yk(k),'*k'); % k为采样序列号,k*T为第k次采样对应的时刻 hold on end
xlabel('时间(s)'); grid hold off
18. function dy = vdp1000(t,y)
dy = zeros(2,1); % a column vector dy(1) = y(2);
dy(2) = 1000*(1 - y(1)^2)*y(2) - y(1);
34
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库中国矿业大学控制系统计算机仿真实验答案(7)在线全文阅读。
相关推荐: