《matlab复习资料附答案(12页).doc》由会员分享,可在线阅读,更多相关《matlab复习资料附答案(12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-matlab复习资料附答案-第 12 页一、简答1说明下述函数的功能size(A) 查询矩阵A的维数 length(x) 查询数组x长度(即行数或列数中的较大值)ones(m,n) 产生m行n列的元素全部为一的矩阵zeros(m,n) 生成m行n列的全零矩阵rand(m,n) 产生m行n列的随机矩阵flipud(A) 按上下方向翻转矩阵A中的元素fliplr(A) 按左右方向翻转矩阵A中的元素diag(A) 建立A的对角矩阵diag(x) 获取x的对角向量plot(x,y,str) 二维图形绘制legend(str1,str2) 为图形添加由str1、str2表示的图例linspace(a,
2、b,n) 构造线性分布的向量 rem(m,n) 求m除以n的余数any(x) 测试向量中是否有真元素all(x) 测试向量中所有元素是否为真round(x) 取与真值最接近的整数fix(x) 向零方向取整数strcmp(str1,str2) 字符串比较 strcat(str1,str2) 字符串连接strrep(str1,str2, str3) 将str1中的子串str2换成str3inline(str) 生成以str为表达式的内联函数roots(p) 多项式求根polyval(p,x) 多项式求值polyfit(x,y,n) 数据的多项式拟合norm(x,p) 计算向量x(矩阵A)的p范数
3、(p=2默认)det(A) 求矩阵A的行列式 rank(A) 求矩阵A的秩inv(A) 矩阵A求逆sum(x) 对向量x中各元素求和min(x) 求向量x中最小元素 max(x) 求向量x中最大元素sort(x) 对向量x中各元素排序mean(x) 求向量x中各元素均值2说明下述常量的含义pi 圆周率 pi=3.141592653589793 inf 无穷大Inf(Infinity)nan 不确定数NaN(Not-a-Number)i(j) 虚数单位Imaginary unit33realmax 最大实数1.797693134862316e+308realmin 最小正实数2.22507385
4、8507201e-308intmax 最大整数2147483647intmin 最小整数-2147483648eps 浮点数精度2.220446049250313e-0163生成随机逻辑矩阵和;对矩阵和作与、或、非以及异或运算,并将结果分别赋给四个变量名;选择其中两个测试逻辑函数any和all。 A=rand(3,4) B=rand(3,4) a=A&B b=A|B c=A d=xor(A,B) any(a) all(c)3注释下面代码并写出结果: A=1,0,3;-1,3,2;0,0,-5; B=6,2,4;3,0,7;2,0,1; A&B 对矩阵和作与运算 A|B 对矩阵和作或运算 A 对
5、矩阵和作非运算 xor(A,B) 对矩阵和作异或运算 any(A) 测试A中是否有真元素 all(A) 测试A中所有元素是否为真 A1 判断A中各元素是否大于1,成立在对应位置返回“1”,否则返回“0” max(A,1) 输出A中的的最大值,若小于等于1在对应位置返回“1” min(A) 返回一个行向量,向量第i元素是矩阵A中的第i列的最小值结果:A&B ans = 1 0 1 1 0 1 0 0 1A|Bans = 1 1 1 1 1 1 1 0 1Aans = 0 1 0 0 0 0 1 1 0xor(A,B)ans = 0 1 0 0 1 0 1 0 0 any(A)ans = 1 1
6、1 all(A)ans = 0 0 1 A1ans = 0 0 1 0 1 1 0 0 0 max(A,1)ans = 1 1 3 1 3 2 1 1 1 min(A)ans = -1 0 -54. 输入向量,按从大到小的顺序排序。 x=1,5,-9,6,0; y=sort(x); x=fliplr(y)5. 生成一个三阶方阵,写一段代码求其对角矩阵。 A=rand(3,3); D=diag(diag(A)6 利用符号计算,。 syms x y=x*sin(x); int(y,x)7. 利用多项式函数和eig求3阶Pascal矩阵的特征值,并比较二者的结果。 A=pascal(3); C=po
7、ly(A); r=roots(C) B=eig(A)比较:得到的矩阵的特征值的数值相同,顺序不同8. 说明字符串比较函数strcmp和strncmp的差别,并设计一个例子。strcmp : 比较两个字符串是否相同strncmp : 比较两个字符串的前n个字符是否相同 str1=hello; str2=heltu; a=strcmp(str1,str2) b=strncmp(str1,str2,3)9 求数组中所有绝对值大于3的元素的个数。 A=-4 -2 0 2 4;-3 -1 1 3 5; B=abs(A)3; sum(sum(B);9找出数组中所有绝对值大于3的元素。 A=-4 -2 0
8、2 4;-3 -1 1 3 5; A(find(A3|A sprintf(e=%f,exp(1)二、绘图1.用inline定义函数;并用plot绘制其在上的图像。 x=-pi:0.1:pi; y=inline(x.*exp(-x).*sin(x) y=y(x); plot(x,y)2. 将绘图窗口分成一行两列四个子窗口,第一个窗口用mesh绘制旋转抛物面,第二个窗口用plot3绘制等速螺线。 subplot(1,2,1); x,y=meshgrid(-8:1:8); z=sqrt(x.2+y.2); mesh(z); subplot(1,2,2); t=0:0.01:27; x=cos(t);
9、 y=sin(t); z=2*t; plot3(x,y,z)2将绘图窗口分成两行两列四个子窗口,第一个窗口用mesh绘制,第二个窗口用surf绘制,第三个窗口用plot3绘制,第四个窗口用ezplot绘制。 subplot(2,2,1); x,y=meshgrid(-8:1:8); z=sqrt(x.2+y.2); mesh(z); subplot(2,2,2); surf(x,y,z) subplot(2,2,3); z=sqrt(2*(x.2+y.2); plot3(x,y,z) subplot(2,2,4); axis(-2 2 -2 2); ezplot(x2+y2=1)3 利用plo
10、t在同一个绘图窗口中在内绘制和多项式函数的图形。 x=-2*pi:0.1:2*pi; y=x.*sin(x); p=2*x.2+3*x+4; plot(x,y,:); hold on plot(x,p);3用plot在内绘制的图形;利用hold命令保持绘图窗口;在相同的范围内绘制的图形。 x=-2*pi:0.1:2*pi; y1=x.*sin(x); y2=exp(x); plot(x,y1,:); hold on axis(-8 8 -6 6);plot(x,y2);三、程序1. 利用Newton迭代求解非线性方程。Newton迭代公式,其中待求解方程为。方法一(老师讲的)editfunct
11、ion y=fun(x)y=exp(x)-x/5;editfunction y=dfun(x)y=exp(x)-1/5;editfunction x= newtn(fun,dfun,x0)for i=1:1000 x=x0-fun(x0)/dfun(x0); if abs(fun(x)x,k=newtn(fun,dfun,-1)a,b roots(fun,dfun,-1)方法二(王伟)editfunction x=Newt(p)x0=0;x1=polyval(p,x0);q=polyder(p);for i=1:50 x=x1-polyval(p,x1)/polyval(q,x1); if a
12、bs(x-x1) p=1 5 3 Newt(p) roots(p)2 编写一个函数式文件计算,其中为输入变量。 function s=Jc(n)n=input(请输入n的值:) s=1;k=1; while k=n s=s*k; k=k+1; end2如何编写一个函数文件,实现 n!,并计算1!+2!+20!function r = AddJc(n)n=input(请输入n的值:)%阶乘求和k=1;r=0;while k=n r = r + Jc(k) k=k+1;end function s=Jc(m) s=1;k=1; while k=m s=s*k; k=k+1; end3. 使用随机投
13、点法计算定积分,以投点个数为输入参数。 edit function I=myint(n)m=0;for i=1:n x=rand; y=3*rand; if y I=myint(500)四、应用问题1editfunction z=mfun(x)z=3*x(1)2+3*x(2)2-x(1)3); edit function z,c=ed(x) c=; z=x(1)2+x(2)2-16; x,fval,exitflag=fmincon(mfun,2,1,ed)editfunction z=fun(x) z=exp(2*x(1)*(x(1)+x(2)2+2*x(2); x,z=fminsearch(
14、fun,-1,-1)将得到的极小值取负就可以得到极大值 y=dsolve(Dy=y+sin(t),y(0)=0,t)editfunction dy=dd(t,x)dy=x(1)+x(2)+sin(t); x(1)-x(2)+cos(t); X,Y=ode45(dd,0,3,0,0)5. 用电压=10伏的电池给电容器充电,电容器上时刻的电压为其中是电容器的初始电压,是充电常数,试由下面一组,数据确定和。(秒)0.51234579(伏)6.366.487.268.228.668.999.439.63 t=0.5 1 2 3 4 5 7 9; v=6.366.487.268.228.668.999.
15、439.63;V=10;y=log(V-v)p=polyfit(t,y,1)v0=v-exp(p(2)m=-1/p(1)6变量和满足函数关系,通过实验测的数据:2345710143330283026302500233022602200写出函数拟合的数学模型以及Matlab代码。 t=2 3 4 5 7 10 14; y=3330 2830 2630 2500 2330 2260 2200;A=ones(size(t),exp(-t/4),exp(-t/1.5),exp(-t/0.8)a=Ay第一次实验报告1.计算;保存;清除工作空间中的变量;将保存的读取到工作空间;清空命令窗口。 s=(2*s
16、in(pi/5+2)-0.4)/(cos(6)+4)+4 save data s clear load data clc2. 用plot命令绘制函数的图像(注意定义域)。加标题,x轴y轴标注,在点处用text命令加标注。 x=linspace(-pi,pi,100);f=inline(x.2.*sinh(x)./(log(x.2)+1);y=f(x);plot(x,y);xlabel(x轴);ylabel(y轴);title(画图);text(2,f(2),text);8.比较4个字符串比较函数。 str1=hello; str2=hELLO; a=strcmp(str1,str2) b=st
17、rcmpi(str1,str2) c=strncmp(str1,str2,2) c=strncmpi(str1,str2,2)9. 求多项式函数的根,求以得到的根向量为根的多项式;求的导函数系数向量和以5为常数项的原函数系数向量;在同一绘图窗口中用plot绘制,的图像,并加图例。 p=2 3 0 4; q1=polyder(p); q2=2 3 0 5; x=-3:0.1:3; plot(x,sum(x.3 x.2 x ones(size(x)*p,2),-,x,sum( x.2 x ones(size(x)*q1,2),:,x,sum(x.3 x.2 x ones(size(x)*q2,2)
18、,-) legend(p(x),q1(x),q2(x),2)第二次实验报告1. 利用Gauss-Seidel迭代求解线性代数方程组。Gauss-Seidel迭代公式,其中是系数矩阵的下三角矩阵(含主对角线),是系数矩阵的上三角矩阵(不含主对角线)。editfunction x=GS(A,b)D=diag(diag(A); %以A的对角线为元素的对角阵L=tril(A); %含对角元素的下三角阵U=triu(A)-D; %不含对角元素的上三角阵 x0=zeros(length(b),1); %初始矩阵for k=1:50 x=-inv(L)*U*x0+inv(L)*b; %迭代 if A*x-b
19、A=rand(3)-diag(diag(rand(3)+10*eye(3) b=1;5;6; x=GS(A,b) x=Ab第三次试验报告 1.求解无约束优化问题 ,取初值(-1,1)。editfunction y=minfun(x)y=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1); x,fval,exitflag=fminsearch(minfun,-1,1)2. 求函数在上的最大值。editfunction y=mfun(x)y=-(2*x(1)2+12*x(1)*x(2)+x(2)2); edit function y,c=ed(x) c=
20、; y=x(1)2+4*x(2)2-25; x,fval,exitflag=fmincon(mfun,2,1,ed)3. 求解非线性方程组。 editfunction y=twofun(x)y=x(1)2-x(2)-1;(x(1)-2)2-(x(2)-0.5)2-1; x,Y,exitflag=fsolve(twofun,1,0)4. 变量和满足函数关系,通过下面的数据确定参数,和。editfunction y=minfit(x,t)y=x(1)*x(2)/(x(2)-x(3)*(exp(-x(3)*t)-exp(-x(2)*t);t=0.0830.1670.250.500.751.01.5
21、2.253.04.06.08.010.012.0; y=10.921.127.336.435.538.434.8 24.223.615.78.28.32.21.8; a=lsqcurvefit(minfit,40,0.4,4,t,y)5求下述微分方程的数值解editfunction dy=od(t,x)dy=t*x(2)+exp(t); x(2)-x(1); X,Y=ode45(od,0,3,0,0)6.令X=y Y=y=X则y=Y则Y=X*Y-sinX+costedit function dy=od(t,x)dy=x(2); x(1)*x(2)-sin(x(1)+cos(t); X,Y=ode45(od,0,1,0,1);