当前位置:文档之家› matlab程序大全答案

matlab程序大全答案

频率特性类题目1 一个系统的开环传递函数为 ,试绘制其当K=5、30时系统的开环频率特性Nyquist 图,并判断系统的稳定性。

w=linspace(0.5,5,1000)*pi; sys1=zpk([],[0 -10 -2],100) sys2=zpk([],[0 -10 -2],600) figure(1)nyquist(sys1,w)title('system nyquist charts with k=5') figure(2)nyquist(sys2,w)title('system nyquist charts with k=30')由图可知K=5时,开环Nyquist 曲线没有包围(-1,j0)点,所以系统稳定。

K=30时,开环Nyquist 曲线包围(-1,j0)点,所以系统不稳定。

2系统开环传递函数为 ,建立其零极点增益模型,然后分别绘制当K=5、K=30时系统的开环频率特性Bode 图,并判断系统的稳定性。

sys1=zpk([],[0 -10 -2],100) sys2=zpk([],[0 -10 -2],600) figure(1)[Gm1,Pm1,Wcg1,Wcp1]=margin(sys1) bode(sys1)title('system bode charts with k=5'),grid figure(2)[Gm2,Pm2,Wcg2,Wcp2]=margin(sys2) bode(sys2)title('system bode charts with k=30'),grid 因为K=5时,Wcg>Wcp,所以系统稳定。

K=10时,Wcg<Wcp,系统不稳定。

3 系统开环传递函数为 ,计算K=5和K=30时系统的幅值裕度与相位裕度。

sys1=zpk([],[0 -10 -2],100) sys2=zpk([],[0 -10 -2],600)[Gm1,Pm1,Wcg1,Wcp1]=margin(sys1) [Gm2,Pm2,Wcg2,Wcp2]=margin(sys2)4 已知某系统的闭环传递函数()s Φ如下,试用roots ()命令来判断系统的稳定性。

)5.01)(1.01()(s s s k s G ++=)5.01)(1.01()(s s s ks G ++=)5.01)(1.01()(s s s ks G ++=25432325()24576s s s s s s s s ++Φ=+++++num=[0 0 0 3 2 5]; den=[1 2 4 5 7 6]; D=num+den; roots(D)5 某单位负反馈系统的开环控制系统的传递函数为2k (0.80.64)()(0.05)(5)(40)K s s G s s s s s ++=+++ (1)绘制系统的根轨迹;num=[1 0.8 0.64]; x=[0 -0.05 -5 -40]; den=poly(x); rlocus(num,den)(2)当10K =时,绘制系统的Bode 图,判断系统的稳定性,并且求出幅值裕度和相角裕度。

num=[1 0.8 0.64]; x=[0 -0.05 -5 -40]; den=poly(x); sys=tf(num,den) bode(sys),grid[Gm,Pm,Wcg,Wcp]=margin(sys)6 已知系统的状态空间模型如下:⎢⎣⎡=11x⎥⎦⎤-31x + ⎥⎦⎤⎢⎣⎡01u [1=y ]1x(1)绘制系统的Bode 图和nyquist 图; (2)求系统的幅值裕度和相位裕度;A=[1,-1;1,3];B=[1,0]'; C=[1,1];D=0;w=linspace(0.5,5,1000)*pi; sys=ss(A,B,C,D)figure(1),bode(sys),grid figure(2),nyquist(sys,w)[Gm,Pm,Wcg,Wcp]=margin(sys)7 已知单位负反馈系统的开环传递函数为)1(12++s s s ,试绘制系统的单位阶跃响应、开环Bode 图和Nyquist 曲线,并求系统的幅值裕度和相位裕度。

sys=zpk(-1,[0 0 -1],1)sys1=feedback(sys,1,-1)figure(3)step(sys1)figure(1)bode(sys),gridfigure(2)nyquist(sys),grid[Gm,Pm,Wcg,Wcp]=margin(sys)编写程序题1 编写两个m文件,分别使用for和while循环语句计算20031kk=∑。

y=0;for k=1:200y=y+k^3;endyy=0;k=1;while k<=200y=y+k^3;k=k+1;endy2 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,编写M 文件,输出全部水仙花数。

for m=100:999m1=fix(m/100);m2=fix((m-100*m1)/10);m3=fix(m-100*m1-10*m2);if m==m1^3+m2^3+m3^3disp(m)endend3 编写M文件,实现以下功能:从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。

i=1;x=[];sum=0;a=input('请输入任意一个数,输0回车结束');while (a~=0)x(i)=a;i=i+1;sum=sum+a;mea=(sum/(i-1));a=input('请输入任意一个数,输0回车结束');endsummea4 编写M脚本文件,使得运行该文件后能求出[100,200]之间第一个能被21整除的整数。

for i=100:200if mod(i,21)==0breakendendi5 先编写一个函数文件,文件名为tran,使得该函数文件实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。

然后编写脚本文件,文件名为main1,在脚本文件中实现如下功能:要求用户从键盘输入直角坐标X和Y,调用函数文件实现直角坐标到极坐标的转换,输出极坐标的值。

tran.m :function [rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);main1.m :x=input('Please input x=:')y=input('Please input y=:')[rho,theta]=tran(x,y);rhotheta6 猜数游戏。

首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。

根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏。

用户最多可以猜7次。

x=fix(100*rand(1));i=1while i<=7y=input('')if x==ydisp('You won') break; elseif x>ydisp('Low') else disp('High') end i=i+1; end7 编写M 脚本文件,分别使用for 和 while 循环语句计算∑==101i i i sum 的值,并且显示出sum 的结果。

sum=0;for i=1:10 sum=sum+i^i; end sum sum=0; while i<=10 sum=sum+i^i; i=i+1; end sum8 用筛选法求某自然数范围内的全部素数。

素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。

用筛选法求素数的基本思想是:要找出2~m 之间的全部素数,首先在2~m 中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已被划去,再找5的倍数 (不包括5),…,直到再划去不超过的数的倍数,剩下的数都是素数。

function y=sushu(x) y=2:x; n=2:x; for j=2:x m=j*n;y=setdiff(y,m); end9 已知 ∑=-=nk k y 1121,当n=100时,求y 的值。

y=0;n=100;for k=1:ny=y+(1/(2*k-1)); k=k+1;end y10 利用for 循环计算1!+2!+3!+….. +20!的值。

sum=0; for i=1:20 y=1; for n=1:i y=y*n; endsum=sum+y; end sum11 用while 循环来实现求1+2+……+100的值。

y=0;n=1; while n<=100 y=y+n; n=n+1; end y12 编一函数计算以下分段函数值。

232(0)21(01)321(1)xx x x x x x <⎧⎪+<⎨⎪++⎩≤≥ function y=f(x);if x<0 y=x;elseif x>=0&x<1 y=2*x^2+1;else y=3*x^3+2*x^2+1; end13 我国新税法规定:个体工商户的生产、经营所得和对企事业单位的承包经营、承租经营所得应缴纳的个人所得税为全年收入中应缴纳所得税部分 税率/% (1) 不超过5000元的 5 (2) 超过5000元至10000元的部分 10 (3) 超过10000元至30000元的部分 20 (4) 超过30000元至50000元的部分 30 (5) 超过50000元的部分 35 试编程加以计算。

x=input('x=') if x<=5000 y=0.05*x;elseif x>5000&x<=10000 y=0.1*x;elseif x>10000&x<=30000y=0.2*x;elseif x>30000&x<=50000y=0.3*x;else y=0.35*x;endy14 矩阵乘法运算要求两矩阵的维数相容,否则会出错。

设两个矩阵为A=[1,2; 5,6]; B=[7,9;20,11];先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。

A=[1,2;5,6];B=[7,9;20,11];tryC=A*B;catchC=A.*B;endC15 编制M脚本文件,要求从键盘逐个输入数值(input),然后判断输入的数是大于0还是小于0,并输出提示(使用disp命令)是正数(positive one)还是负数(negative one),同时记录输入的正数、负数的个数。

相关主题