matlab程序大全.docx
- 文档编号:29121197
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:28
- 大小:167.25KB
matlab程序大全.docx
《matlab程序大全.docx》由会员分享,可在线阅读,更多相关《matlab程序大全.docx(28页珍藏版)》请在冰豆网上搜索。
matlab程序大全
数值计算类题目
1求解以下线性代数方程:
A=[1,0,2;1,1,3;3,1,2];
B=[2,1,1]';
X=inv(A)*B
2已知矩阵
,
试分别求出A阵和B阵的秩、转置、行列式、逆矩阵以及特征值。
A=[013;121;542];B=[218;414;332];
A1=rank(A)
B1=rank(B)
A2=A.'
B2=B.'
A3=det(A)
B3=det(B)
A4=inv(A)
B4=inv(B)
A5=eig(A)
B5=eig(B)
3已知矩阵
,
在Command窗口中分别求出
、
矩阵为
中每个元素平方组成的矩阵、
矩阵为
阵乘以
阵、
矩阵为
阵和
阵数组乘积(即:
对应元素分别相乘的积构成的矩阵)。
A=[013;121;542];B=[218;414;332];
C=A^2
D=A.^2
E=A*B
F=A.*B
4求复数矩阵
的转置C1与共轭转置C2。
A=[157;634];B=[3-13;22-3];
C=A+B*i
C1=C.'
C2=C'
5假设a、b、c和d的定义如下:
;
;
;
分别写出下列表达式的运算结果。
(1)a*b
(2)a*c
(3)a.*d
(4)a*d
ans=
-12
-25
ans=
3
8
ans=
50
105
ans=
50
6求解由下面四个方程组成的方程组。
A=[2-312;1301;1-118;71-22];
B=[8675]';
C=inv(A)*B
7求解由下面四个方程组成的方程组。
A=[2-312;1301;1-118;71-22];
B=[1723951]';
C=inv(A)*B
8已知某班的5名学生的三门课成绩列表如下:
学生序号12345
高等数学7889647368
外语8377807870
MATLAB语言8291788268
试写出有关命令,先分别找出三门课的最高分及其学生序号;然后找出三门课总分的最高分及其学生序号。
A=[7889647368;8377807870;8291788268];
[Y,L]=max(A,[],2)
B=sum(A,1);
[Y1,L1]=max(B)
SIMULINK建模分析题
1某一单位负反馈控制系统,其开环传递函数为
给它输入阶跃量为2的阶跃信号,试使用Simulink构造其闭环仿真模型,并且绘制其响应曲线。
然后将已经建立的闭环控制系统封装成一个子系统。
2典型的直流电动机双闭环调速系统的结构图如图所示,编写MATLAB程序(或利用SIMULINK工具),画出系统的单位阶跃响应曲线。
3双环调速的电流环系统的方框图模型为:
建立该系统的SIMULINK模型,然后在单位阶跃输入信号作用下对系统进行仿真。
根据仿真结果计算超调量、上升时间、调节时间、稳态误差。
4利用sisotool工具完成下面的题目:
1、系统开环传递函数为:
绘制当K=5、30时系统的Bode图,并判断系统的稳定性;计算K=5、30时系统的幅值和相位裕度;绘制K=5、30时系统的Nyquist图;绘制K=5、30时系统的Nichols图。
5已知二阶系统微分方程:
.
求在时间区间t=[0,20]内的微分方程的解。
Vf.m
Functiondy=vf(t,y)
Dy=zeros(2,1);
Dy
(1)=y
(2);
Dy
(2)=(1-y
(1)^2)*y
(2)-y
(1);
Main.m
[T,Y]=ode45(‘vf’,[020],[0,1]);%调用离散ode45产生离散点时间向量和解向量
Plot(T,Y(:
1),’r-’,T,Y(:
2),’b:
’)
Legend(‘y1’,’y2’)
6具有死区非线性特性的控制系统方框图如题下图所示。
试绘制当输入信号
和
时系统响应曲线。
图形绘制题
1绘制z=sin(x)*cos(y)的三维网格和三维曲面图,x,y变化范围均为[0,2π]。
x=0:
pi/100:
2*pi;
y=0:
pi/100:
2*pi;
[X,Y]=meshgrid(x,y)
Z=sin(X).*cos(Y);
subplot(1,2,1),surf(X,Y,Z);%曲面图
subplot(1,2,2),mesh(X,Y,Z);%网线图
2用MATLAB语言绘制[-2π,2π]区间内sinθ、cosθ曲线,数据点间隔0.1弧度。
要求分上下两个子图分别绘制sinθ、cosθ,并且sinθ用红色、实线,cosθ用兰色、虚线,对图形标题及横纵坐标轴进行标注(图形标题分别为sinθ、cosθ,横纵坐标轴分别为x,y)。
t=-2*pi:
0.1:
2*pi;
y1=sin(t);
y2=cos(t);
subplot(2,1,1),plot(t,y1,'r')
title('sin(t)'),xlabel('x'),ylabel('y')
subplot(2,1,2),plot(t,y2,'b:
')
title('cos(t)'),xlabel('x'),ylabel('y')
3在[02π]范围内绘制二维曲线图y=sin(x)*cos(5x)。
x=0:
pi/50:
2*pi;
y=sin(x).*cos(5*x);
plot(x,y)
4在[02π]范围内绘制二维曲线图。
y=|1000sin(4x)|+1
x=0:
pi/50:
2*pi;
y=abs(1000*sin(4*x))+1;
plot(x,y)
频率特性类题目
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('systemnyquistchartswithk=5')
figure
(2)
nyquist(sys2,w)
title('systemnyquistchartswithk=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('systembodechartswithk=5'),grid
figure
(2)
[Gm2,Pm2,Wcg2,Wcp2]=margin(sys2)
bode(sys2)
title('systembodechartswithk=30'),grid
因为K=5时,Wcg>Wcp,所以系统稳定。
K=10时,Wcg 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已知某系统的闭环传递函数 如下,试用roots()命令来判断系统的稳定性。 num=[000325]; den=[124576]; D=num+den; roots(D) 5某单位负反馈系统的开环控制系统的传递函数为 (1)绘制系统的根轨迹; num=[10.80.64]; x=[0-0.05-5-40]; den=poly(x); rlocus(num,den) (2)当 时,绘制系统的Bode图,判断系统的稳定性,并且求出幅值裕度和相角裕度。 num=[10.80.64]; x=[0-0.05-5-40]; den=poly(x); sys=tf(num,den) bode(sys),grid [Gm,Pm,Wcg,Wcp]=margin(sys) 6已知系统的状态空间模型如下: x+ u x (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已知单位负反馈系统的开环传递函数为 ,试绘制系统的单位阶跃响应、开环Bode图和Nyquist曲线,并求系统的幅值裕度和相位裕度。 sys=zpk(-1,[00-1],1) sys1=feedback(sys,1,-1) figure(3) step(sys1) figure (1) bode(sys),grid figure (2) nyquist(sys),grid [Gm,Pm,Wcg,Wcp]=margin(sys) 编写程序题 1编写两个m文件,分别使用for和while循环语句计算 。 y=0; fork=1: 200 y=y+k^3; end y y=0;k=1; whilek<=200 y=y+k^3; k=k+1; end y 2一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,编写M文件,输出全部水仙花数。 form=100: 999 m1=fix(m/100); m2=fix((m-100*m1)/10); m3=fix(m-100*m1-10*m2); ifm==m1^3+m2^3+m3^3 disp(m) end end 3编写M文件,实现以下功能: 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。 4编写M脚本文件,使得运行该文件后能求出[100,200]之间第一个能被21整除的整数。 fori=100: 200 ifmod(i,21)==0 break end end i 5先编写一个函数文件,文件名为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('Pleaseinputx=: ') y=input('Pleaseinputy=: ') [rho,theta]=tran(x,y); rho theta 6猜数游戏。 首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。 根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“Youwon”,同时退出游戏。 用户最多可以猜7次。 x=fix(100*rand (1)); i=1 whilei<=7 y=input('') ifx==y disp('Youwon') break; elseifx>y disp('Low') elsedisp('High') end i=i+1; end 7编写M脚本文件,分别使用for和while循环语句计算 的值,并且显示出sum的结果。 sum=0; fori=1: 10 sum=sum+i^i; end sum sum=0; whilei<=10 sum=sum+i^i; i=i+1; end sum 8用筛选法求某自然数范围内的全部素数。 素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。 用筛选法求素数的基本思想是: 要找出2~m之间的全部素数,首先在2~m中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已被划去,再找5的倍数(不包括5),…,直到再划去不超过的数的倍数,剩下的数都是素数。 functiony=sushu(x) y=2: x; n=2: x; forj=2: x m=j*n; y=setdiff(y,m); end 9已知 ,当n=100时,求y的值。 y=0;n=100; fork=1: n y=y+(1/(2*k-1)); k=k+1; end y 10利用for循环计算1! +2! +3! +…..+20! 的值。 sum=0; fori=1: 20 y=1; forn=1: i y=y*n; end sum=sum+y; end sum 11用while循环来实现求1+2+……+100的值。 y=0;n=1; whilen<=100 y=y+n; n=n+1; end y 12编一函数计算以下分段函数值。 functiony=f(x); ifx<0 y=x; elseifx>=0&x<1 y=2*x^2+1; elsey=3*x^3+2*x^2+1; end 13我国新税法规定: 个体工商户的生产、经营所得和对企事业单位的承包经营、承租经营所得应缴纳的个人所得税为 全年收入中应缴纳所得税部分税率/% (1)不超过5000元的5 (2)超过5000元至10000元的部分10 (3)超过10000元至30000元的部分20 (4)超过30000元至50000元的部分30 (5)超过50000元的部分35 试编程加以计算。 x=input('x=') ifx<=5000 y=0.05*x; elseifx>5000&x<=10000 y=0.1*x; elseifx>10000&x<=30000 y=0.2*x; elseifx>30000&x<=50000 y=0.3*x; elsey=0.35*x; end y 14矩阵乘法运算要求两矩阵的维数相容,否则会出错。 设两个矩阵为A=[1,2;5,6];B=[7,9;20,11];先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 A=[1,2;5,6];B=[7,9;20,11]; try C=A*B; catch C=A.*B; end C 15编制M脚本文件,要求从键盘逐个输入数值(input),然后判断输入的数是大于0还是小于0,并输出提示(使用disp命令)是正数(positiveone)还是负数(negativeone),同时记录输入的正数、负数的个数。 当输入0时,终止此M文件的运行(使用break命令);当输入第10个数字时,显示记录的正、负数个数并终止程序。 i=0;j=0; forn=1: 10 x=input('Thenumis: ') ifx>0 i=i+1; disp('positiveone') elseifx<0 j=j+1; disp('negativeone') elsebreak end end i,j 16一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,编写M文件,输出全部水仙花数。 17编写M文件,实现以下功能: 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。 sum=0;cnt=0; x=input('x=') whilex~=0 sum=sum+x; cnt=cnt+1; x=input('x=') end ifcnt>0 average=sum/cnt; end sum,average 18一数组的元素满足规则: a (1)=a (2)=1,a(3)=a (1)+a (2),a(4)=a (2)+a(3),…依次类推,求该数组中第一个大于10000的元素。 a (1)=1;a (2)=1;i=1; whilea(i)<=10000 a(i+2)=a(i+1)+a(i); i=i+1; end i a(i) 19某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price<200没有折扣 200≤price<5003%折扣 500≤price<10005%折扣 1000≤price<25008%折扣 2500≤price<500010%折扣 5000≤price14%折扣 请编写程序,使得当从计算机输入所售商品的打折前价格后,能输出其实际销售价格。 x=input('x=') ifx<200 y=x; elseifx>=200&x<500 y=0.97*x; elseifx>=500&x<1000 y=0.95*x; elseifx>=1000&x<2500 y=0.92*x; elseifx>=2500&x<5000 y=0.9*x; elsey=0.86*x; end y 20编写M脚本文件,分别使用for和while循环语句计算 的值,并且显示出sum的结果。 21已知 ,当n=100时,求y的值。 22编写函数文件使其实现如下功能: 当在命令窗口输入数字后,根据输入参数的个数决定输出的结果;当没有参数输入时,显示“无输入参数”;当有一个参数时,则以该参数为边绘制正方形;当有两个参数时,则以两个参数为长和宽绘制矩形。 functiony=H(varargin)%varargin表示可变的参数 ifnargin==0 disp('无输入参数') elseifnargin==1 r=varargin{1}; rectangle('position',[00rr])%表示从(0,0)点开始画宽为R,高为R的矩形 elsenargin==2 r1=varargin{1}; r2=varargin{2}; rectangle('position',[00r1r2]) end 23编制M脚本文件,要求从键盘逐个输入数值(input),然后判断输入的数是大于0还是小于0,并输出提示(使用disp命令)是正数(positiveone)还是负数(negativeone),同时记录输入的正数、负数的个数。 当输入0时,终止此M文件的运行(使用break命令);当输入第10个数字时,显示记录的正、负数个数并终止程序。 i=0;j=0; forx=1: 10 n=input('') ifn<0 i=i+1; disp('negativeone') elseifn>0 j=j+1; disp('positionone') elsebreak end end i j 24若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。 求[1,500]之间的全部完数。 form=1: 500 s=0; fork=1: m/2 ifrem(m,k)==0 s=s+k; end end ifm==s disp(m) end end 25今有多项式P1(x)=x^4-2x+1,P2(x)=x^2+4x-0.5,要求先求得P(x)=P1(x)+P2(x),然后计算xi=0.2*i各点上的P(xi)(i=0,1,2,…,5)值。 A=[100-21];B=[0014-0.5]; C=A+B i=0: 5; xi=0.2*i; y=polyval(C,xi) 26试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。 要求运行程序后,在命令窗口提示“请用[]输入一个一维数组;”,输入完毕后若回车,就能在输出窗口显示刚才所输入的数组的颠倒次序。 (如N=5,原来x为: x=[13579] 而经过颠倒处理后x中数据的次序应该为: x=[97531]) x=input('请用[]输入一个一维数组: x=') x1=fliplr(x) 模型建立及转换题 1某系统的传递函数为 使用MATLAB求出状态空间表达式和零极点模型。 num=[1.323];den=[10.51.21]; sys=tf(num,den) nsys=zpk(sys) 2求出以下系统的传递函数 , A=[-1,0,1;1,-2,0;0,0,-3];B=[0,0,1]';C=[110];D=1; sys=ss(A,B,C,D) nsys=tf(sys) 3已知某系统的传递函数为: ,试用MATLAB语言求出该系统的传递函数模型、状态空间模型和零极点增益模型。 num=[12241220];den=[24622]; sys=tf(num,den) sys1=zpk(sys) sys2=ss(sys) 4已知双闭环调速系统电流环内的前向通道3个模块传递函数分别为: 试求串联连接的等效传递函数及其等效状态空间模型。 num1=[0.01281];den1=[0.040]; num2=[30];den2=[0.00167,1]; num3=[2.5];den3=[0.01281]; sys1=tf(num1,den1) sys2=tf(num2,den2) sys3=tf(num3,den3) sys=sys1*sys2*sys3 nsys=ss(sys) 5已知两个环节的传递函数分别为: 试求两环节并联连接等效传递函数的num与den向量及等效的状态空间模型。 num1=[1];den1=[12]; num2=[21];den2=[112]; sys1=tf(num1,den1) sys2=tf(num2,den2) sys=sys1+sys2 [num,den]=tfda
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 程序 大全