MATLAB实验上机易错题汇总
- 格式:docx
- 大小:46.04 KB
- 文档页数:5
Matlab 上机练习题及答案---------------------------------------------------------------------1、矩阵Y=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡3472123100451150425,给出元素1的全下标和单下标,并用函数练习全下标和单下标的转换,求出元素100的存储位置。
取出子矩阵⎥⎦⎤⎢⎣⎡21301,并求该矩阵的维数。
解:命令为:Y=[5,2,4;0,15,1;45,100,23;21,47,3]Y(2,3)Y(10)sub2ind([43],2,3)[i,j]=ind2sub([43],10)find(Y==100)sub2ind([43],3,2)B=Y(2:2:4,3:-2:1)或B=Y([24],[31])[m n]=size(Y)---------------------------------------------------------------------2、已知矩阵A=[10-1;241;-205],B=[0-10;213;112]求2A+B 、A 2-3B 、A*B 、B*A 、A.*B ,A/B 、A\B 解:命令为:A=[10-1;241;-205]B=[0-10;213;112]E=2*A+B F=A^2-3*B G=A*B H=B*A I=A.*B J=A/B K=A\B---------------------------------------------------------------------3、利用函数产生3*4阶单位矩阵和全部元素都为8的4*4阶矩阵,并计算两者的乘积。
解:命令为:A=eye(3,4)B=8*ones(4)C=A*B---------------------------------------------------------------------4、创建矩阵a=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡------7023021.5003.120498601,取出其前两列构成的矩阵b ,取出前两行构成矩阵c ,转置矩阵b构成矩阵d ,计算a*b 、c<d ,c&d,c|d ,~c|~d 解:命令为:a=[-1,0,-6,8;-9,4,0,12.3;0,0,5.1,-2;0,-23,0,-7]b=a(:,[12])c=a([12],:)d=b’e=a*b f=c<d g=c&d h=c|d i=~c|~d---------------------------------------------------------------------5、求!201∑=n n 解:命令文件为sum=0;s=1;for n=1:20s=n*s;sum=sum+s;end sum---------------------------------------------------------------------6、求a aa aaa aa a S n ++++=得值,其中a 是一个数字,由键盘输入,表达式中位数最多项a 的个数,也由键盘输入。
MATLAB上机实验练习题及答案09级MATLAB上机实验练习题1、给出一个系数矩阵A[2 3 4;5 4 1;1 3 2],U=[1 2 3],求出线性方程组的一个精确解。
2、给出两组数据x=[0 0.3 0.8 1.1 1.6 2.3]’y=[0.82 0.72 0.63 0.60 0.55 0.50]’,我们可以简单的认为这组数据在一条衰减的指数函数曲线上,y=C1+C2e-t通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示。
3、解线性方程4、通过测量得到一组数据:5、已知一组测量值6、从某一个过程中通过测量得到:分别采用多项式和指数函数进行曲线拟合。
7、将一个窗口分成四个子窗口,分别用四种方法做出多峰函数的表面图(原始数据法,临近插值法,双线性插值法,二重三次方插值法)8、在同一窗口使用函数作图的方法绘出正弦、余弦、双曲正弦、双曲余弦。
分别使用不同的颜色,线形和标识符。
9、下面的矩阵X表示三种产品五年内的销售额,用函数pie显示每种产品在五年内的销售额占总销售额的比例,并分离第三种产品的切片。
X= 19.3 22.1 51.634.2 70.3 82.4 61.4 82.9 90.8 50.5 54.9 59.1 29.4 36.3 47.010、对应时间矢量t ,测得一组矢量y采用一个带有线性参数的指数函数进行拟合,y=a 0+a 1e -t +a 2te -t ,利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。
11、请创建如图所示的结构数组(9分)12、创建如图所示的元胞数组。
(9分)13、某钢材厂从1990年到2010年的产量如下表所示,请利用三次样条插值的方法计算1999年该钢材厂的产量,并画出曲线,已知数据用‘*’表示。
要求写出达到题目要求的MATLAB 操作过程,不要求计算结果。
14、在一次化学动力学实验中,在某温度下乙醇溶液中,两种化合物反应的产物浓度与反应时间关系的原始数据如下,请对这组数据进行三次多项式拟合,并画出拟合曲线,已知数据如下。
1.根据下面的方程绘制图形,y=cos(x)+x ,x 取值-pi-pi ,然后用多项式拟合函数进行拟合。
2.要求编写一个函数文件,将一个给定图片的所有颜色都变深(变深多少自己斟酌),其中黑色为0,白色为2553.根据下面的方程绘制图形,y=cos(2x)+sin(2x),然后用5次多项式进行拟合。
4.要求编写一个M 函数,完成下列函数的求解:y =sin (x );y =sin (x +pi );y =sin (x +pi /3);y =sin (x +pi/2)自变量x 的变化范围从-pi 到pi ,要求四个图像画在同一个图形窗体中。
5.M 文件的编写计算分段函数 ⎪⎩⎪⎨⎧≠+=+++=10101)1cos(2x x x x x x x y6.函数文件的编写编写函数文件,求半径为r 的圆的周长和面积。
7.题目见教材p85,其中的数据可以给出文本文件或者由下面的式子表达a=[10*rand(24,1)+15,1*rand(24,1)+30,2*rand(24,1)+45],这是24行3列的一个矩阵,第一列表示温度,第二列表示湿度,第三列表示气压。
要求如下:(1) 将温度数据取出(2) 找出一天中最高温度(3) 按温度进行从小到大(默认)排序(4) 求出最高温度的时刻(5) 按温度进行从大到小排序8.已知Fibonacci (斐波那)数列由式子⋯⋯=+=--4,3,21k a a a k k k 可以生成,其中初值为121==a a ,试编写出生成某项Fibonacci 数值的MATLAB 函数,并求20a 的值。
9.编写M 函数,判断给定的三边能够构成一个三角形?并求其周长10.给定一个声音文件,如1.wav ,引入这段声音,将音量改为2倍之后,再保存成2.wav11.所表示的三维曲面,x,y的取值范围是[-8,8]12.绘制y=sin(2x)的曲线(x从0到2π),采用指令方式在图形中:线条颜色为红色;线型为虚线添加网格添加标题“正弦曲线”添加图例“y=sin(2x)”添加坐标轴标签“x或y”13.某一电力系统信号包含四种类型的信号分量,分别是:基频正弦分量y1=10 sin(2πf1t),其中f1=50 Hz;3次谐波分量y2=2 sin(2πf2t+j),其中f2=150 Hz,j=0.25π;直流分量y3=2;随机扰动分量。
Matlab上机实验题及参考解答目录实验一Matlab初步实验 (2)一matlab基本功能介绍 (2)二Matlab扩展功能 (2)三练习 (2)四练习题参考解答 (3)实验二概率模型实验 (5)一复习 (5)二事件的响应 (5)三Matlab中随机数字的生成与处理 (5)四练习 (5)五练习题参考解答 (5)实验三插值与拟合 (7)实验四线性规划与非线性规划 (8)4.1 实验目的 (8)4.2 实验内容 (9)4.3 综合练习 (10)4.4 课外作业 (11)实验五数值计算 (12)5.1 实验目的 (12)5.2 实验内容 (12)4.3 综合练习 (15)4.4 课外作业 (15)实验六计算机图像处理 (16)6.1 实验目的 (16)6.2 实验内容 (16)6.3 综合练习 (17)6.4 课外作业 (19)实验七综合练习 (19)7.1 实验目的 (19)7.2 实验内容 (19)7.3 综合练习 (20)7.4 课外作业 (21)实验一 Matlab 初步实验 一 matlab 基本功能介绍1 编程环境2语法规范:for … end; if …else if …end; 3 矩阵运算 4 图形绘制二 Matlab 扩展功能1 编程练习:(1) 绘出序列kk x x r r 0(1),0.2083=+=;(2) 绘出曲线rtx t x e t 0(),0=>2 扩展功能(1) 矩阵中全部数据、部分数据的截取、更改; (2) 矩阵的初始化与赋值如:A=zeros(5,5); A(2:2:)=[1,2 3 4 5] 3 微积分基础(见实验4) 符号计算三 练习(课上编程完成下列练习,课后上机验证) 1 求和S=1+2+3+…+100; 2 求和e 1111!2!10!1...=++++3求和S 1112310!1...=++++4设A 234576138⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦, 求A 的逆、特征值和特征向量;验证Ax=λx 5 画函数图()011mrtm x x t x e x -=⎛⎫+- ⎪⎝⎭6 展开 (x-1)(x-2)…(x-100)7 因式分解 x 8—y 8; 因数分解200520068 求极限312lim +∞→⎪⎭⎫⎝⎛++n n n n9 )](sin[cos 22x x y += 求dxdy10 求积分x xdx 10ln ⎰11 求积分3⎰并且画出所求的平面区域12 设x+2y=1, 2x+3y=6, y=2x 2, 画出各个方程图形,求出曲线交点.四 练习题参考解答%MatlabTrain1.m clear all % 2nd e=1; temp=1; for I=1:1:10temp=temp*I; e=e+1/temp; end e%%%%%%%%%%% clear all % 3nd S=0; temp=1;for I=1:1:100temp=temp*I; endfor J=1:1:temp S=S+1/J; end S%%%%%%%%%%%%%% clear all % 11ndx=linspace(0,4); y=1./sqrt(x.^5+1); plot(x,y) for t=1:0.1:3yt=1./sqrt(t.^5+1);hold online([t,t],[0,yt]);end%fill(t,yt,'b') %%%%%%%%%%%%% clear all% 12ndx=linspace(-2,2);y=[0.5-0.5*x; 2-2/3.*x; 2*x.^2]; plot(x,y)grid实验二概率模型实验一复习1 小结上次编程练习中存在的问题,讲述部分习题答案2 画图命令介绍:line二事件的响应(1) 获取鼠标的位置%MatlabTrain2.mclear all% 鼠标响应p=ginput(3)plot(p(:,1),p(:,2),'r*')(2) 键盘输入相应t=input('How many apples? t=');m=t+3三Matlab中随机数字的生成与处理1 随机数的生成2 产生随机数字3 产生某区间的整数4 生日模拟问题的Montecaro法设计技术、思路学生尝试编程四练习(1) 编程验证人数在不同年龄段的生日的概率计算(2) 编程实现游戏”聪明伶俐100分”(3) 编程实现两家电影院的座位数问题(4) 编程实现某图形面积的计算五练习题参考解答(1) 生日问题程序示例:%birthPro.mn=0;nStudents=30;for I=1:1000 %how many times testy=0;x=1+floor(365*rand(1,nStudents));%get nStudents random numbersfor J=1:nStudents-1for K=J+1:nStudentsif x(J)==x(K)y=1;break;endendendn=n+y;%count, n times of that there are two people's dirthday in the same dayendfreq=n/I % caculating the frequently(2) 编程实现游戏”聪明伶俐100分”参考答案%MatlabTrain2.mclear all% 鼠标响应x=floor(10*rand(1,4))t=input('填入四个数字[n1 n2 n3 n4]=');flag=0;A=0;B=0;for I=1:1:8flag=flag+1;A=0;B=0;if t==xswitch flagcase 1disp('聪明绝顶!');case 2disp('聪明!');case 3disp('有点聪明!');case 4disp('还可以!');case 5disp('聪明伶俐100分!');case 6disp('聪明伶俐90分!');case 7disp('聪明伶俐85分!');case 8disp('聪明伶俐80分!');otherwisedisp('赫赫!');endbreak;endfor J=1:1:4for K=1:1:4if x(J)==t(K) & J==KA=A+1;else if x(J)==t(K) & J~=KB=B+1;endendendends='AABB';s(1)=INT2STR(A);s(3)=INT2STR(B);disp(s);t=input('不重复填入四个数字[n1 n2 n3 n4]=');endif flag>0disp('太烂了! 正确答案是:');xend实验三插值与拟合一复习讲述聪明伶俐100分的编程中的问题二插值三拟合课堂练习2 某之股票价格from 2003 09 01 to 2004 01 02,试进行插值、拟合%TimerS.m%from 2003 09 01 to 2003 01 02clear all;dataST=[15.09 14.7514.95 14.722.88 21.8619.82 19.09];plot(dataST)四课外练习112)进行多项式拟合,求出拟合多项式,并求出多项式在t=4, 5处的值.实验四线性规划与非线性规划4.1 实验目的1 用Matlab求解线性规划2 用Matlab求解非线性规划4.2 实验内容4.2.1 线性规划求解实用格式:x=lp(c, A, b, xLB,xUB,x0,nEq)可以求解下列线性规划模型:min f=c’xs.t. Ax=<=b(其中前nEq个约束为等式约束,即等式约束的个数,其余是不等式约束<=) xLB<=x<=xUB函数中x0参数是算法迭代的初始点,任意取值例1 求解下列线性规划1)123123123123min2..360210200,1,2,3jz x x xs t x x xx x xx x xx j=--+⎧⎪++≤⎪⎪-+≤⎨⎪+-≤⎪≥=⎪⎩,2)1235635623416367min..3621060,1,,7jz x x x x xs t x x xx x xx xx x xx j=-++-⎧⎪++=⎪⎪+-=⎪⎨-+=⎪⎪++=⎪≥=⎪⎩例1求解示例c=[-2 -1 1]';%book page 72 Number 16-1A=[3 1 1;1 -1 2;1 1 -1];b=[60 10 20]';xlb=[0 0 0]';xub=[inf inf inf]';x0=[0 0 0]'; x=lp(c,A,b,xlb,xub,x0,0)% x=(15 5 0)'例2 求解示例c2=[1 -1 1 0 1 -1 0]';%book page 72 Number 16-3A2=[0 0 3 0 1 1 0;...0 1 2 -1 0 0 0;...-1 0 0 0 0 1 0;...0 0 1 0 0 1 1];b2=[6 10 0 6]';xlb2=[0 0 0 0 0 0 0]';xub2=[inf inf inf inf inf inf inf]';x02=[0 0 0 0 0 0 0]';x2=lp(c2,A2,b2,xlb2,xub2,x02,4)% unbounded4.2.2 非线性规划1)命令格式1:[X, OPTIONS]=constr(‘FUN’, X, OPTIONS,VLB,VUB)2)命令格式2:X=FMINCON(FUN,X0,A,B,Aeq,Beq)% minimizes FUN subject to the linear equalities% Aeq*X = Beq as well as A*X <= B. (Set A=[] and B=[] if no inequalities exist.)例2 求解非线性规划y x x x x s t x3211221min22 ..1=++-≤-求解示例%unconop.mfunction y=unconop(x)y=x(1).^3+2*x(1).*x(2)+2*x(2).^2;%book page 148 ex.7-1 后建立调用函数xx=fmincon('unconop',[0 0]',[-1 0],-1,[],[])%book page 148 ex.7-1 4.3 综合练习学生独立编写程序,求解一个含有2个变量的线性规划问题,要求:1)编写程序,把可行域画上阴影;2)求出最优解,在可行域上标出最优解;3)求出基本解,并在上图中表示出来;4)求出基本可行解,观察单纯形方法迭代时,顶点的变化.可行域画图与表出阴影示例:syms x y[u(1),v(1)]=solve('y=x+2','y=2*x');%求出交点坐标[u(2),v(2)]=solve('y=-x+2','y=2*x');[u(3),v(3)]=solve('y=x+2','y=-x+2');x=linspace(0,3,5); %直线作图y=[2*x;-x+2;x+2];line(x,y); gridpatch(double(u),double(v),'b'); 运行结果:4.4 课外作业1 求解线性规划131223min ..250.530,1,2,3i x x s t x x x x x i +⎧⎪+≤⎪⎨+=⎪⎪≥=⎩ (1) 求解线性规划;x *=()(2) 目标函数中c 1由1变为(-1.25)时求最优解;(3) 目标函数中c 1由1变为(-1.25),c 3由1变为2时求最优解;(4) 约束条件中53b ⎛⎫= ⎪⎝⎭变为21b -⎛⎫'= ⎪⎝⎭时,求解;(5) 约束条件中53b ⎛⎫= ⎪⎝⎭变为23b ⎛⎫'= ⎪⎝⎭时,求解[刁在筠,运筹学(第二版),高等教育出版社,2004,01 p74第20题]2 求解非线性规划y x x x x x x x 3221122233min 2223=++++ 注:无约束非线性规划问题, 命令:fminunc子函数% unconop.mfunction y=unconop(x)y=x(1).^2+2*x(1).*x(2)+2*x(2).^2+2*x(2).*x(3)+3*x(3).^2;%book page 148 ex.7-1 主函数:xx=fminunc('unconop',[0.1 0.1 1]')思考:绘出两个变量的线性规划问题的可行域、标出可行的整数解和求出可行解;演示单纯形方法的迭代过程,如j z x x s t x x x x x j 121212min 2..360200,1,2=--⎧⎪+≤⎪⎪+≤⎨⎪⎪≥=⎪⎩实验五 数值计算5.1 实验目的1 掌握代数数值计算2 掌握常微分方程数值计算5.2 实验内容5.2.1 关于多项式设多项式1110()n n n n p x a x a x a x a --=++++表示为110[,,,,]n n p a a a a -=1)求多项式的根 roots(p) %求出p(x)=0的解。
a ⎣ ⎦ 1. 计算 a = 5⎦ >> a=[6 9 3;2 7 5]; >> b=[2 4 1;4 6 8]; >> a.*b ans =⎣4 8⎦>> d=deconv([3 13 6 8],[1 4]) d =312⎡2 4 7 4⎤⎡8⎤1236 36 求欠定方程组⎢9 3 5 6⎥ x = ⎢5⎥ 的最小范数解84240⎡4 9 2⎤⎡37⎤⎣ >> a=[2 4 7 4;9 3 5 6]; >> b=[8 5]'; ⎦ ⎣ ⎦2. 对于 AX = B ,如果 A = ⎢7 6 4⎥ , B = ⎢26⎥ ,求解 X 。
>> x=pinv(a)*b⎢ ⎥ ⎢ ⎥x =>> A=[4 9 2;7 6 4;3 5 7]; >> B=[37 26 28]’; >> X=A\B X =⎢⎣3 5 7⎥⎦ ⎢⎣28⎥⎦-0.2151 0.4459 0.7949 0.27077 用符号函数法求解方程 a t 2+b*t +c=0-0.5118 >> r=solve('a*t^2+b*t+c=0','t') 4.0427 r =1.3318[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] ⎡1 2 5 ⎤ ⎡8 - 7 4⎤ [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]3. a = ⎢3 6 - 4⎥ , b = ⎢3 6 2⎥ ,观察 a 与 b 之间的⎣ ⎦ ⎣ ⎦⎡a 11 a 12 ⎤六种关系运算的结果 >> a=[1 2 3;4 5 6];8 求矩阵 A = ⎢ ⎣ 21 ⎥ 的行列式值、逆和特征根a 22 ⎦>> b=[8 –7 4;3 6 2];>> syms a11 a12 a21 a22;>> a>b >> A=[a11,a12;a21,a22] ans =>> AD=det(A) % 行列式 0 1 0 >> AI=inv(A) % 逆 11>> AE=eig(A) % 特征值 >> a>=b ans =0 1 0 1 01>> a<b ans =1 0 1 0 1>> a<=b ans =1 0 1 010 A = [ a11, a12][ a21, a22] AD =a11*a22-a12*a21 AI =[ -a22/(-a11*a22+a12*a21), a12/(-a11*a22+a12*a21)] [ a21/(-a11*a22+a12*a21), -a11/(-a11*a22+a12*a21)] AE = [1/2*a11+1/2*a22+1/2*(a11^2- 2*a11*a22+a22^2+4*a12*a21)^(1/2)] [1/2*a11+1/2*a22-1/2*(a11^2->> a==b2*a11*a22+a22^2+4*a12*a21)^(1/2)] ans =9 因式分解: x 4 - 5x 3 + 5x 2 + 5x - 60 0 0 >> syms x;0 00 >> f=x^4-5*x^3+5*x^2+5*x-6; >> a~=b ans =>> factor(f) ans =(x-1)*(x-2)*(x-3)*(x+1)4 计算多项式乘法(x 2+2x +2)(x 2+5x +4) ⎡10 f = ⎢ x 21 x ⎤⎥ ,用符号微分求 df/dx 。
上机练习一参考解答一、实验目的1、 熟悉Matlab 编程2、 体会数学上恒等,算法上不一定恒等二、实验内容1. Using the Taylor polynomial of degree nine and three-digit rounding arithmetic to find an approximationto 5-e by each of the following methods.(A) ∑=--≈905!)5(n n n e , (B) ∑=-≈=9055!5/11n nn e e An approximate value of 5-e correct to three digits is 31074.6-⨯. Which formula, (A) or (B), gives the most accuracy, and why?1) 算法基础利用x e 的Taylor 公式00!!n nk x n n x x e n n ∞===≈∑∑,x -∞<<+∞ (1)及001/1/1/!!n nk x x n n x x e e n n ∞-====≈∑∑,x -∞<<+∞, (2)其中k 是根据精度要求给定的一个参数。
在本题中将k 取为9, x 取为-5或5即可由公式(1)或(2)得到5-e 的近似计算方法(A )或(B )。
2) 程序下述程序用公式(A )及(B )分别在Matlab 许可精度下及限定在字长为3的算术运算情况下给出5-e的近似计算结果,其中results_1, results_2为用方法(A )在上述两种情况下的计算结果,err_1, err_2为相应的绝对误差;类似的,results_3, results_4为用方法(B )在上述两种情况下的计算结果,err_3, err_4为相应的绝对误差;具体程序如下:% Numerical Experiment 1.1 % by Xu Minghua, May 17, 2008 clc; %Initialize the data x=-5; k=9; m=3; %three-digit rounding arithmetic %------------------------------------ % Compute exp(x) by using Method (A) % with the computer precision results_1=1; power_x=1; for i=1:k factor_x=x/i; power_x=power_x*factor_x; results_1=results_1+power_x; end results_1 err_1=abs(exp(x)-results_1)%------------------------------------% Compute exp(x) by using Method (A) % with the 3-digits precisionresults_2=1;power_x=1;for i=1:kfactor_x=digit(x/i,m);power_x=digit(power_x*factor_x,m); results_2=digit(results_2+power_x,m); endresults_2err_2=abs(exp(x)-results_2)%------------------------------------% Compute exp(x) by using Method (B) % with the computer precisiont=-x;results_3=1;power_x=1;for i=1:kfactor_x=t/i;power_x=power_x*factor_x;results_3=results_3+power_x; endresults_3=1/results_3err_3=abs(exp(x)-results_3)%------------------------------------% Compute exp(x) by using Method (B) % with the 3-digits precisiont=-x; results_4=1;power_x=1;for i=1:kfactor_x=digit(t/i,m);power_x=digit(power_x*factor_x,m);results_4=digit(results_4+power_x,m); endresults_4=digit(1/results_4,m)err_4=abs(exp(x)-results_4)%------------------------------------上述主程序用到一个子程序digit.m, digit(x,m)的作用是将x四舍五入成m位数。
matlab上机考试题及答案1. 题目:编写一个MATLAB函数,计算并返回一个向量中所有元素的平方和。
答案:函数定义如下:```matlabfunction sumOfSquares = calculateSumOfSquares(vector)sumOfSquares = sum(vector.^2);end```2. 题目:使用MATLAB的内置函数,找出一个矩阵中的最大元素及其位置。
答案:可以使用`max`函数来找出矩阵中的最大元素,同时使用`find`函数来获取其位置。
示例代码如下:```matlabA = [1, 2, 3; 4, 5, 6; 7, 8, 9];[maxValue, linearIndex] = max(A(:));[row, col] = ind2sub(size(A), linearIndex);```3. 题目:给定一个向量,使用MATLAB编写代码,实现向量元素的逆序排列。
答案:可以使用`flip`函数来实现向量的逆序排列。
示例代码如下:```matlabvector = [1, 2, 3, 4, 5];reversedVector = flip(vector);```4. 题目:编写一个MATLAB脚本,计算并绘制一个正弦波的图像。
答案:可以使用`sin`函数生成正弦波数据,并使用`plot`函数绘制图像。
示例代码如下:```matlabx = linspace(0, 2*pi, 100);y = sin(x);plot(x, y);xlabel('x');ylabel('sin(x)');title('Sine Wave');```5. 题目:给定一个3x3的矩阵,使用MATLAB编写代码,计算其行列式。
答案:可以使用`det`函数来计算矩阵的行列式。
示例代码如下:```matlabmatrix = [1, 2, 3; 4, 5, 6; 7, 8, 9];determinant = det(matrix);```结束语:以上是MATLAB上机考试的题目及答案,希望能够帮助大家更好地掌握MATLAB的编程技巧和函数使用。
上机题汇总1设置matlab 的工作环境,将工作目录设置为d:\work ,添加搜索目录d:\example2在matlab 的命令窗口里完成如下计算,其中t 的值分别取-1,0,1,表达式如下:4/3)2t y e π-=3自行产生一个5行5列的数组,得到最中间的三行三行矩阵。
4用magic 产生一个5*5的矩阵,将这个矩阵的第二行与第三行互换位置5求方程组的根 x 1+4x 2-3x 3=22x 1+5x 2-x 3=11x 1+6x 2+x 3=126已知:一个多项式的系数向量是p=[1 -6-72 -27],求这个多项式的根。
7已经两个多项式的系数分别是:[1 2 3 4]和[1 4 9 16],请求这两个多项式的乘积,及商和余数。
8给定一个多项式的根是[-5 -3+4i -3-4i],求原来的多项式9 A=[2 3 4;1 5 7;6 2 5]用什么函数,保证第一列排序的时候,其他列跟着变化。
最后的结果是:[1 5 7;2 3 4;6 2 5]10补充题:电路分析电路分析常常涉及到对方程组的求解,这些方程常常是利用描述电流进入和离开节点的电流方程,或者描述电路中网络回路上的电压的电压方程得出的。
下图描述了3个回路电压的方程方程式如下:11121222132423432532()0()()0()0V R I R I I R I I R I R I I R I I R I V -++-=⎧⎪-++-=⎨⎪-++=⎩假设5个电阻值为已知,2个电压值也为已知,求3个电流值。
11自行产生一个5行5列的数组,用两种方法得到最中间的三行三行矩阵。
12根据a=reshape(-4:4,3,3)做一个矩阵,然后(1)取出所有大于0的元素构成一个向量(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量)(2)将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。
Matlab常见错误及解决办法归纳1.Subscript indices must either be real positive integers or logicals中文解释:下标索引必须是正整数类型或者逻辑类型出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从0 开始,要么出现了负数。
注:matlab 的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。
解决办法:自己调试一下程序,把下标为0 或者负数的地方修正。
$ ]$ m8 A. T9 c$ i8 W2.Undefined function or variable "U"中文解释:函数或变量U 没有定义.出错原因及解决办法:可能变量名输入错误,仔细检查3.Matrix dimensions must agree中文解释:矩阵的维数必须一致出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。
matlab 通过“.”来区分矩阵运算和元素运算。
解决办法:自己调试一下程序,保证运算符两边的运算对象维数一致。
4.Function definitions are not permitted at the prompt or in scripts中文解释:不能在命令窗口或者脚本文件中定义函数出错原因:一旦在命令窗口写function c = myPlus(a,b),此错误就会出现,因为函数只能定义在m 文件中。
关于脚本文件和m 文件的区别请查阅matlab 基础书。
简言之:1) 如果你写成function 的形式,那么必须写在m 文件中,且以function 开头(即function 语句前不能包含其他语句,所有语句必须放在function 中,当然,function 的定义可以有多个,各function 之间是并列关系,不能嵌套);2) 如果你写成脚本的形式,则既可以写在命令窗口中,也可以写在m 文件中,但两者均不能包含function 语句(即不能进行函数的定义)解决办法:新建一个m 文件,然后再进行函数的定义5.One or more output arguments not assigned during call to '...'中文解释:在调用...函数过程中,一个或多个输出变量没有被赋值出错原因:函数如果带有输出变量,则每个输出在返回的时候都必须被赋值。
MATLAB第一次作业易错点最常见,最易错的一点:m文件的命名不可使用数字、系统函数名来直接命名。
有同学交上来的作业,所有m文件均以题号数字1、2、3……直接命名,这将导致其m文件全部无法正常运行。
此外,有同学直接将m文件命名为plot、fft、colon等系统已有的函数名,这也会导致m文件无法运行。
建议大家在做题时,将m文件命名为“workA1.m”(代表partA第一题),“workB7”(代表partA第一题)这样的格式。
PART A1. Get into Matlab: Use the diary command to record your activity in to a file: diary mydiary01.doc before you start your work. (And diary off to switch off your diary when you finish your work.)At the Command Window assign a value x=10, then use the Up Key ↑ to repeat the expression, editing it to show the effect of using a semicolon after the 10, namely x=10;Answers:>> x=10x =10>> x=10;共同错误:没有理解题意,本题主要目的是为了让同学理解“;”在句末的作用:“x=10”将会直接在屏幕上输出结果,而“x=10;”则不会在屏幕上输出结果,而是系统将结果自动保存到workspace中。
许多同学交上来的作业中没有尝试带分号的语句,只是不断重复地输入“x=10”。
5. Use the colon operator : to assign numerical values between 0 and 1 to vector array variable a in steps of 0.1.Answer: x=0:0.1:1共同错误:题意理解不清。
(温馨提示:实验课结束后,请将所有作业(题目、代码、结果)利用word 整理成一个完整的实验报告,加上封面,打印,纸质档于18周周一交)第一次上机作业目的:1. 掌握MATLAB 各种表达式的书写规则2. 运行课堂上讲过的例子,熟悉矩阵、表达式的基本操作和运算。
作业:1. 熟悉matlab 集成环境界面。
回答以下问题,并操作相关的指令:(1) 分别写出清除命令窗口和清除变量的指令。
答: clc 和clear(2)在命令行输入命令后,matlab 的搜索过程是怎样的?答: (1)检查该命令对象是不是一个变量。
(2)检查该命令对象是不是一个内部函数。
(3)检查该命令对象是否为当前目录下的程序文件。
(4)检查该命令对象是否为MATLAB 搜索路径中其他目录下的M 文件。
(3)什么是matlab 的当前工作目录?写出两种设置当前工作目录的方法? 答: 就是matlab 当前文件读取和存储的默认路径(1)在当前目录窗口中更改(2)在MATLAB 桌面工具栏中更改(3)使用cd 命令:cd c:\mydir---将c :\mydir 设置为当前目录(4)什么是matlab 的搜索路径?写出两种设置搜索路径的方法?答: 指Matlab 运行文件时进行搜索的目录。
(1)用path 命令设置:(2)用Set Path 对话框设置(5)help 命令和doc 命令有什么作用,它们有什么区别?答: help 命令:最基本的帮助命令,查询信息直接显示在命令窗口。
doc 命令:在帮助窗口中显示HTML 帮助文档,显示函数的详细用法及 例子,比help 命令更详细。
2. 在matlab 中输入下列表达式,并求各表达式的值,显示MATLAB 工作空间的使用情况并用两种方式保存全部变量,变量保存的文件名必须包含自己的学号后四位数:(1))1034245.01(26-⨯+⨯=w w=sqrt(2)*(1+0.34245*10^-6)w =1.4142(2),)tan(22ac b e abc c b a x ++-+++=ππ 其中a=3.5,b=5,c=9.8。
(1)仿真可分为哪三种类型?仿真可分为物理仿真、数学仿真、混合仿真三种形式(2)M A TLAB的文本文件和函数文件在执行方式上有何不同之处?文本文件是由一系列MATLAB的命令、内置函数等组成,它类似于DOS下的批处理文件。
在MATLAB提示符下直接键入文本文件名,便可自动执行文件中的一系列命令,直至给出最终结果。
MATLAB的函数文件与文本文件不同,函数文件的第一行为关键function 。
不能单独键入函数文件的文件名来运行一个函数文件,必须由其它语句来调用执行。
函数文件的调用方式为:[y1,y2,y3,…] = function_name(i,j,k ,…)(3)封装后的子系统是否可当作一个Simulink的标准模块?封装子系统的重要目的是什么?封装后的子系统可以当作一个标准模块来处理。
利用封装功能,可以为一个子系统创建新的对话框和图标,封装的重要目的是帮助用户创建一个新的对话框来统一接收子系统所含模块的所有参数,这样就无需分别多次打开子系统中各个模块的对话框来逐个输入参数。
. MATLAB中运算符包括数学运算符、字符串运算符、矩阵(数组)运算符。
1.求解多项式x3-7x2+2x+40的根。
>> r=[1 -7 2 40];>> p=roots(r);a=3; b=2; c=9; d=12) d|b>aans = __1__2、下列哪一个函数是符号函数( B )A.remB.signC.fixD.mod5、要查询匹配的字符串,则应该使用下列哪一个函数( A )A.strmatchB.strjustC.strfindD.strrep6、下列哪一个函数可以获取结构字段的数据( B )A.fieldnamesB.getfieldC.setfieldD.rmfield7、使用下列哪一个函数可以交换矩阵左右对称位置上的元素( A )A.fliplrB.flipdimC.flipudD.find9、使用函数struct创建一个结构。
1、完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
(1)m=100:999;n=find(mod(m,21)==0);length(n)ans =43(2)>> ch='Maybe One Day'p=find(ch>='A'&ch<='Z')ch(p)=[]ch =Maybe One Day2、自行产生一个5行5列的数组,分别得到最中间的三行三列矩阵、右下角2行2列矩阵,奇数行矩阵、奇数列矩阵、奇数行奇数列矩阵。
>> t=rand(5)%生成矩阵A=t(2:4,2:4)%中间三行散列矩阵B=t(4:5,4:5)%右下角两行两列矩阵C=t(1:2:end,:)%奇数行矩阵D=t(:,1:2:end)%奇数列矩阵E=t(1:2:end,1:2:end)%奇数行列矩阵3、求方程组的根syms x y z[X Y Z]=solve('x+4*y-3*z=2','2*x+5*y-z=11','x+6*y+z=12',x,y,z)4、已知矩阵A=[1 2;3 4],运行指令B1=A.^(0.5), B2=A^(0.5), 可以观察到不同运算方法所得结果不同。
(1)请分别写出根据B1, B2恢复原矩阵A的程序。
(2)用指令检验所得的两个恢复矩阵是否相等(利用norm(…,’fro’)指令,误差矩阵F-范数,接近eps量级,认为实际相等)。
5、先运行clear,format long,rng('default'),A=rand(3,3),然后根据A写出两个矩阵:一个对角阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同(diag指令的使用)。
>> format long>> rand('twister',1)>> A=rand(3,3)A =0.417022004702574 0.302332572631840 0.1862602113776710.720324493442158 0.146755********* 0.345560727043048 0.000114374817345 0.092338594768798 0.396767474230670 >> B=diag(diag(A)) B =0.417022004702574 0 0 0 0.146755********* 0 0 0 0.396767474230670 >> D=(A~=B) D =0 1 1 1 0 1 1 1 0 >> C=A.*D C =0 0.302332572631840 0.186260211377671 0.720324493442158 0 0.345560727043048 0.000114374817345 0.092338594768798 06、先运行指令x=-3*pi:pi/15:3*pi; y=x; [X,Y]=meshgrid(x,y); warning off; Z=sin(X).*sin(Y)./X./Y; 产生矩阵Z 。
(1)请问矩阵Z 中有多少个“非数”数据?(2)用指令surf(X,Y ,Z); shading interp 观察所绘的图形。
(3)请写出绘制相应的“无裂缝”图形的全部指令。
(nan 的检测,可以使用sum 函数求和,利用eps 克服,‘被零除’。
x=-3*pi:pi/15:3*pi; y=x; [X,Y]=meshgrid(x,y); warning off; Z=sin(X).*sin(Y)./X./Y; >> n=sum(sum(isnan(Z))) n = 181>> m=isnan(Z); >> p=find(m==1); >> length(p) ans = 181 3)XX=X+(X==0)*eps; >> YY=Y+(Y==0)*eps;ZZ=sin(XX).*sin(YY)./XX./YY;7、计算表达式()22e 1053y xy x z ---=的梯度并绘图。
>> v= -2:0.1:2;>> [x y]=meshgrid(v);>> z=10*(x.^3-y.^5).*exp(-x.^2-y.^2); >> [px py]=gradient(z,0.1,0.1); >> contour(x,y,z) >> hold on>> quiver(x,y,px,py)>> hold off8、22y xxe z --=,当x 和y 的取值范围均为-2到2时,用建立子窗口的方法在同一个图形窗口中绘制出三维线图(plot3)、网线图(mesh)、表面图(surf)和带渲染效果(shading )的表面图。
>> v=-2:0.1:2; >> [x y]=meshgrid(v); >> z=x.*exp(-x.^2-y.^2); >> subplot(2,2,1); >> plot3(x,y,z);>> title('plot3(x,y,z)'); >> subplot(2,2,2); >> surf(x,y,z);>> title('surf(x,y,z)'); >> subplot(2,2,3); >> mesh(x,y,z);>> title('mesh(x,y,z)'); >> subplot(2,2,4); >> surf(x,y,z); >> shading interp; >> title('surf-shading(x,y,z)')9、插值函数interp1(x,y,x0,’spline’)的利用 10、x=[66 49 71 56 38]; >> L=[0 0 0 0 1]; >> pie(x,L) 将第五块分离出来;11、0)0(sin =+=y t y dtdyf=dsolve('Dy=y+sin(t)','y(0)=0') f =exp(t)/2 - cos(t)/2 - sin(t)/2三、⎪⎪⎩⎪⎪⎨⎧=+-==++=0)0(cos 0)0(sin y t y x dtdy x t y x dtdx[X,Y]=dsolve('Dx=x+y+sin(t)','Dy=x-y+cos(t)','x(0)=0','y(0)=0') X =exp(2^(1/2)*t)/3 + exp(-2^(1/2)*t)/3 - (2*cos(t))/3 - sin(t)/3 + (2^(1/2)*exp(2^(1/2)*t))/12 - (2^(1/2)*exp(-2^(1/2)*t))/12 Y =cos(t)/3 - exp(-2^(1/2)*t)/6 - exp(2^(1/2)*t)/6 + (2^(1/2)*exp(2^(1/2)*t))/4 - (2^(1/2)*exp(-2^(1/2)*t))/4四、用电压V =10伏的电池给电容器充电,电容器上t 时刻的电压为m t e V V V t v /0)()(---=其中0V 是电容器的初始电压,m 是充电常数,试由下面一组t ,V 数据确定0V 和m 。
>> t=[0.5 1:5 7 9]';v=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63]’; >> y=log(10-v);>> t1=[ones(size(t)) t]; >> c=t1\y c =1.4766 -0.2835>> v0=10-exp(c(0))试图访问 c(0);索引必须为正整数或逻辑值。
>> v0=10-exp(c(1)) v0 =5.6221 >> m=-1/c(2) m =五、变量t 和y 满足函数关系)8.0exp()5.1exp()4exp(3210a a a a y -+-+-+=,通过实验测的数据:>> y=[3330 2830 2630 2500 2330 2260 2200]'; >> t=[2 3 4 5 7 10 14]';>> c=[ones(size(t)) exp(-t./4) exp(-t./1.5) exp(-t./0.8)]; >> a=c\y a =1.0e+03 *2.1675 1.0226 0.60804.6281六、分别用 for 和while 循环结构编写程序,求出636232632222212++++++==∑= i i K并考虑一种避免循环的简洁方法来求和,并比较各种算法的运行时间。
(注:一共是三种方法) FOR:>> sum1=0; for i=0:63sum1=sum1+2^i;end>> sum1sum1 =1.8447e+19WHILE:>> sum2=0;i=0;while i<64sum2=sum2+2^i;i=i+1;end>> sum2sum2 =1.8447e+19其他方法:>> i=0:63;>> t=2.^i;>> k=sum(t)k =1.8447e+19【例4.1.3.1-2】综合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。
cleara=2; %设置衰减系数w=3; %设置振荡频率t=0:0.01:10;y=exp(-a*t).*sin(w*t); %产生函数数组[y_max,i_max]=max(y); %找最大值元素位置t_text=['t=',num2str(t(i_max))]; % <7> 生成最大值点的横坐标字符串y_text=['y=',num2str(y_max)]; % <8>生成最大值点的纵坐标字符串max_text=char('maximum',t_text,y_text); % <9>生成标志图名用的字符串% tit=['y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)']; %<11> plot(t,zeros(size(t)),'k') %画纵坐标为0的基准线hold onplot(t,y,'b')plot(t(i_max),y_max,'r.','MarkerSize',20) %用大红点标最大值text(t(i_max)+0.3,y_max+0.05,max_text) % <16>再图上书写最大值点的数据值title(tit),xlabel('t'),ylabel('y'),hold off。