matlab考试题(8页).doc
-matlab考试题-第 7 页5. 设计M文件计算: x=0:0.1:10当sum>1000时停止运算,并显示求和结果及计算次数。clearx=0:0.1:10;s=1;sumx=0;while(sumx<=1000) sumx=sumx+x(s)*x(s)-2*x(s); s=s+1;endssumx二、实验内容: M文件设计:仿真时间01秒,计算步长h=0.1,初始值y(0)=1,对连续系统 采用以下方法建立仿真模型: 前向Euler: 后向Euler: 梯形法: 改进Euler: 经典RK4: Adams法: Milne法:并与精确解的结果进行比较。%qianxiangEulerx1(1)=0;h=0.1;y1(1)=1;for s=1:1:10 f1(s)=x1(s)+y1(s); y1(s+1)=y1(s)+h*f1(s); x1(s+1)=x1(s)+h;end%houxiangEulery2(1)=1;x2(1)=0;h=0.1;for s=1:1:10y2(s+1)=(y2(s)+h*(x2(s)+h)/(1-h);x2(s+1)=x2(s)+h;end%gaijinEulerx4(1)=0;y4(1)=1;h=0.1;for s=1:1:10k1=x4(s)+y4(s);k2=x4(s)+h+y4(s)+h*k1;y4(s+1)=y4(s)+(k1+k2)*h/2;x4(s+1)=x4(s)+h;end%梯形法x3(1)=0;y3(1)=1;h=0.1;for s=1:1:10 y3(s+1)=(y3(s)+(2*x3(s)+y3(s)+h)*h/2)/(1-h/2); x3(s+1)=x3(s)+h;end%RK4x5(1)=0;y5(1)=1;h=0.1;for s=1:1:10 k1=x5(s)+y5(s); k2=x5(s)+h/2+y5(s)+k1*h/2; k3=x5(s)+h/2+y5(s)+k2*h/2; k4=x5(s)+h+y5(s)+k3*h; y5(s+1)=y(s)+(k1+2*k2+2*k3+k4)*h/6; x5(s+1)=x5(s)+h;end%Adams·¨x6(1)=0;y6(1)=1;h=0.1;y6(2)=y6(1)+h*(x6(1)+y6(1);x6(2)=x6(1)+h;y6(2)=y6(1)+(x6(1)+y6(1)+x6(2)+y6(2)*h/2;y6(3)=y6(2)+h*(x6(2)+y6(2);x6(3)=x6(2)+h;y6(3)=y6(2)+(x6(2)+y6(2)+x6(3)+y6(3)*h/2;for s=3:1:10 x6(s+1)=x6(s)+h;y6(s+1)=y6(s)+(23*(y6(s)+x6(s)-16*(y6(s-1)+x6(s-1)+5*(y6(s-2)+x6(s-2)*h/12;end%Milne·¨y7(1)=1;x7(1)=0;h=0.1;y7(2)=y7(1)+h*(x7(1)+y7(1);x7(2)=x7(1)+h;y7(2)=y7(1)+(x7(1)+y7(1)+x7(2)+y7(2)*h/2;y7(3)=y7(2)+h*(x7(2)+y7(2);x7(3)=x7(2)+h;y7(3)=y7(2)+(x7(2)+y7(2)+x7(3)+y7(3)*h/2;for s=3:1:10y7(s+1)=y7(s)+h*(x7(s)+y7(s);x7(s+1)=x7(s)+h;y7(s+1)=y7(s)+(x7(s)+y7(s)+x7(s+1)+y7(s+1)*h/2;y7(s+1)=y7(s-1)+(y7(s+1)+x7(s+1)+4*(y7(s)+x7(s)+(y7(s-1)+x7(s-1)*h/3;end%jingquejiex=0:0.1:1;y=2*exp(x)-1-x;没有画图,画图部分自己加1、函数文件设计: 设计一个函数文件实现一个阶乘运算 ,并设计程序调用该函数。 为保证函数的通用性,当输入负数或小数时,显示出错提示: disp('Input parameter must be a positive integer!') 提示:fix(x) 对零方向取整数 ceil(x) 对+方向取整数 round(x) 四舍五入取整数functiony=jc(n)%阶乘if n<0 disp('Input parameter must be a positive integer!'); disp('亲 输入整数哦');elseif n=fix(n) y=1; for s=1:1:n y=y*s; endelse disp('Input parameter must be a positive integer!'); disp('亲 输入整数哦¡');end2、已知两个传递函数分别为:在MATLAB中分别用传递函数、零极点、和状态空间法表示;%´传递函数、零极点、状态空间num1=1;den1=3,1;num2=2;den2=3,1,0;disp('传递函数表示');disp('传递函数1');sys1=tf(num1,den1)disp('传递函数2');sys2=tf(num2,den2)z1,p1,k1=tf2zp(num1,den1);z2,p2,k2=tf2zp(num2,den2);disp('零极点表示');disp('传递函数1');sys3=zpk(z1,p1,k1)disp('传递函数2');sys4=zpk(z2,p2,k2)a1,b1,c1,d1=tf2ss(num1,den1);a2,b2,c2,d2=tf2ss(num2,den2);disp('状态空间法表示');disp('传递函数1');sys5=ss(a1,b1,c1,d1)disp('传递函数2');sys6=ss(a2,b2,c2,d2)在MATLAB中分别求出通过反馈、串联、并联后得到的系统模型;%通过反馈、串联、并联disp('反馈后得到的系统函数');sys7=feedback(sys1,sys2)disp('并联后得到的系统函数');sys8=parallel(sys1,sys2)disp('串联后得到的系统函数');sys9=series(sys1,sys2)1已知两个单位负反馈系统中的开环传递函数分别为:分别用传递函数、零极点、和状态空间法表示开环模型;%´«µÝº¯Êý¡¢Á㼫µã¡¢×´Ì¬¿Õ¼ä·¨±íʾ¿ª»·Ä£ÐÍnum1=2,1;den1=1,3,1;disp('传函表示');disp('系统1');sys1=tf(num1,den1)num2=2,1;den2=1,3,1,0;disp('系统2');sys2=tf(num2,den2)disp('零极点表示');z1,p1,k1=tf2zp(num1,den1);disp('系统1');sys3=zpk(z1,p1,k1)z2,p2,k2=tf2zp(num2,den2);disp('系统2');sys4=zpk(z2,p2,k2)disp('状态空间法表示');disp('系统1');a1,b1,c1,d1=tf2ss(num1,den1);sys5=ss(a1,b1,c1,d1)disp('系统2');a2,b2,c2,d2=tf2ss(num2,den2);sys6=ss(a2,b2,c2,d2)分别绘制开环系统的bode图和nyquist曲线;%绘制开环系统的bode图和nyquist曲线subplot(2,2,1)nyquist(sys1)subplot(2,2,2)bode(sys1)subplot(2,2,3)nyquist(sys2)subplot(2,2,4)bode(sys2)分别绘制闭环系统的根轨迹;%绘制闭环系统根轨迹subplot(1,2,1)rlocus(sys1)subplot(1,2,2)rlocus(sys2)分别绘制闭环系统的阶跃响应曲线,分析静态误差;%绘制闭环系统的阶跃响应曲线disp('系统1的闭环传递函数');sys7=feedback(sys1,1)disp('系统1的闭环传递函数');sys8=feedback(sys2,1)subplot(2,1,1)step(sys7,10)subplot(2,1,2)step(sys8,15)分别绘制闭环系统的单位斜坡输入响应曲线,分析静态误差。%绘制闭环系统的单位斜坡输入响应t=0:20;u=t;subplot(2,1,1)lsim(sys7,u,t)subplot(2,1,2)lsim(sys8,u,t)2已知某单位负反馈系统的开环模型为:判断能控性;期望极点为p=(-1,-2,-3);设计状态反馈K进行极点配置;分别绘制校正前后的根轨迹。%单位负反馈系统的极点配置a=-1,-2,1;1,0,1;-1,0,1;b=1;1;1;c=1,0,1;d=0;disp('单位负反馈系统的开环模型为');sys9=ss(a,b,c,d)disp('系统的能空性判别矩阵为');m=ctrb(a,b)disp('能空性判别矩阵的秩为');r=rank(m)disp('期望极点为');p=-1,-2,-3disp('计状态反馈k为');k=acker(a,b,p)a1=a-b*k;b1=b;c1=c;d1=d;disp('校正后系统的开环模型为');sys10=ss(a1,b1,c1,d1)subplot(2,1,1)rlocus(sys9)subplot(2,1,2)rlocus(sys10)1、替换法建立连续系统仿真模型(不太准)设连续系统传递函数为 ,用简单替换法求其Z传递函数和差分方程(采样周期T=0.1s);%替换法建立连续系统仿真模型den1=1;num1=1,5,3;sys1=tf(den1,num1)dend,numd=c2d(den1,num1,0.1);printsys(dend,numd,'z') 若已知:输入作用为单位阶跃函数U(t)=1(t),起始值y(0)=0、y(0.1)= 0.004251,仿真时间t=0,10,在的基础上设计程序求出响应结果Y(t),并绘制响应曲线;并与控制系统step( )函数得出的响应结果比较。%RK-4法绘制响应曲线与控制系统step函数得出的响应结果比较a,b,c,d=tf2ss(den1,num1);x=zeros(length(a),1);h=0.1;y(1)=0;y(2)=0.004251;u=1;for n=1:10/0.1 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(n+1)=c*x+d*u;endt=0:0.1:10;subplot(2,1,1)plot(t,y)subplot(2,1,2)step(sys1,10)