当前位置:文档之家› 河南城建学院MATLAB上机实验答案

河南城建学院MATLAB上机实验答案

一熟悉Matlab工作环境1、熟悉Matlab的5个基本窗口思考题:(1)变量如何声明,变量名须遵守什么规则、是否区分大小写。

答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。

变量名要遵守以下几条规则:➢变量名必须以字母开头,只能由字母、数字或下划线组成。

➢变量名区分大小写。

➢变量名不能超过63个字符。

➢关键字不能作为变量名。

➢最好不要用特殊常量作为变量名。

(2)试说明分号、逗号、冒号的用法。

分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。

逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。

冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。

(3)linspace()称为“线性等分”函数,说明它的用法。

LINSPACE Linearly spaced vector. 线性等分函数LINSPACE(X1, X2) generates a row vector of 100 linearlyequally spaced points between X1 and X2.以X1为首元素,X2为末元素平均生成100个元素的行向量。

LINSPACE(X1, X2, N) generates N points between X1 and X2.For N < 2, LINSPACE returns X2.以X1为首元素,X2为末元素平均生成n个元素的行向量。

如果n<2,返回X2。

Class support for inputs X1,X2:float: double, single数据类型:单精度、双精度浮点型。

(4)说明函数ones()、zeros()、eye()的用法。

ones()生成全1矩阵。

zeros()生成全0矩阵。

eye()生成单位矩阵。

2、Matlab的数值显示格式思考题:(1)3次执行exist(’pi’)的结果一样吗?如果不一样,试解释为什么?>> pians =3.1416 >> sin(pi); >> exist('pi') ans =5 >> pi=0;>> exist('pi')ans =1>> pipi =>> clear>> exist('pi')ans =5>> pians =3.1416答:3次执行的结果不一样。

exist()函数是返回变量搜索顺序的一个函数。

在第一次执行时返回5代表变量pi是由Matlab构建的变量。

在第二次执行时已经通过赋值语句定义了变量pi,返回1代表pi是工作空间变量。

第三次执行前清除了工作空间,此时pi为系统默认常量,和第一次执行时性质一样,所以又返回5。

(2)圆周率pi是系统默认常量,为什么会被改变为0。

pi=0 为赋值语句,此时pi不再是系统默认常量,而是定义的变量了。

二 MATLAB语言基础1、向量的生成和运算练习:使用logspace()创建1~4π的有10个元素的行向量。

>> A=logspace(0,1.0992,10)A =1.0000 1.3247 1.75502.32493.07994.08015.4051 7.1603 9.4856 12.56612、矩阵的创建、引用和运算(1)矩阵的创建和引用练习:创建以下矩阵:A为3×4的全1矩阵、B为3×3的0矩阵、C为3×3的单位矩阵、D为3×3的魔方阵、E由C和D纵向拼接而成、F抽取E的2~5行元素生成、G由F经变形为3×4的矩阵而得、以G为子矩阵用复制函数生成6×8的大矩阵H。

>> A=ones(3,4),B=zeros(3,3),C=eye(3,3),D=magic(3)A =1 1 1 1 1 1 1 1 1 1 1 1B =0 0 0 0 0 00 0 0C =1 0 0 0 1 00 0 1D =8 1 63 5 74 9 2>> E=[C;D], F=E(2:5,:), G=reshape(F,3,4)E =1 0 00 1 00 0 18 1 63 5 74 9 2F =0 1 00 0 18 1 63 5 7G =0 3 1 10 1 5 68 0 0 7>> H=repmat(G,2)H =0 3 1 1 0 3 1 1 0 1 5 6 0 1 5 6 8 0 0 7 8 0 0 7 0 3 1 1 0 3 1 1 0 1 5 6 0 1 5 68 0 0 7 8 0 0 7 2)矩阵运算练习:1)用矩阵除法求下列方程组的解x=>> A=[6 3 4;-2 5 7;8 -1 -3],B=[3;-4;-7]A =6 3 4 -2 578 -1 -3 B =3 -4 -7>> x=A\Bx =1.0200-14.00009.72002)求矩阵的秩;>> r=rank(A)r =33)求矩阵的特征值与特征向量>> [X,Lamda]=eig(A)X =0.8013 -0.1094 -0.1606 0.3638 -0.6564 0.8669 0.4749 0.7464 -0.4719 Lamda =9.7326 0 0 0 -3.2928 0 0 0 1.56024)矩阵的乘幂(平方)与开方>> A^2ans =62 29 3334 12 626 22 34>> A1=sqrtm(A)A1 =2.2447 + 0.2706i 0.6974 - 0.1400i 0.9422 - 0.3494i -0.5815 + 1.6244i 2.1005 - 0.8405i 1.7620 - 2.0970i 1.9719 - 1.8471i -0.3017 + 0.9557i 0.0236 + 2.3845i 5)矩阵的指数与对数(以e为底)>> Ae=expm(A)Ae =1.0e+004 *1.0653 0.5415 0.63230.4830 0.2465 0.28760.6316 0.3206 0.3745>> Ael=logm(A)Ael =1.7129 + 0.4686i 0.5305 - 0.2425i 0.5429 - 0.6049i 1.1938 +2.8123i 0.3658 - 1.4552i -0.5514 -3.6305i -0.0748 - 3.1978i 0.7419 + 1.6546i 1.8333 +4.1282i 6)矩阵的提取(取右上三角)与翻转(逆时针转90度)>> a=triu(A)a =6 3 4 0 57 0 0 -3 >> a1=rot90(A)a1 =4 7 -3 35 -16 -2 83、多维数组的创建及运算练习:创建三维数组A ,第一页为,第二页为,第三页为。

然后用reshape函数重排为数组B,B为3行、2列、2页。

>> a=[1 3;4 2],b=[1 2;2 1],c=[3 5;7 1]>> A=cat(3,a,b,c)A(:,:,1) = 1 3 4 2 A(:,:,2) =1 22 1A(:,:,3) =3 57 1>> B=reshape(A,3,2,2)B(:,:,1) = 1 2 4 1 3 2B(:,:,2) =2 71 53 1三 Matlab数值运算1、多项式运算练习:求的商及余多项式。

>> p1=conv([1 0 1],conv([1 3],[1 1]))p1 =1 4 4 4 3>> [q r]=deconv(p1,[1 0 2 1])q =1 4r =0 0 2 -5 -12、多形式插值和拟合有一组实验数据如附表1-1所示。

请分别用拟合(二阶至三阶)和插值(线性和三次样条)的方法来估测X=9.5时Y的值X 1 2 3 4 5 6 7 8 9 10Y 16 32 70 142 260 436 682 1010 1432 1960 >> x=1:10;y=[16 32 70 142 260 436 682 1010 1432 1960];>> p1=polyfit(x,y,1) p1 =204.8000 -522.4000 >> y1=polyval(p1,9.5)y1 =1.4232e+003>>p2=polyfit(x,y,2),y2=polyval(p2,9.5)p2 =32.0000 -147.2000 181.6000y2 =1.6712e+003>>p3=polyfit(x,y,3),y3=polyval(p3,9.5) p3 =2.0000 -1.0000 5.0000 10.0000 y3 =1.6820e+003>> y4=interp1(x,y,9.5) y4 =1696>> y5=spline(x,y,9.5) y5 =16823、习题(1)用函数roots 求方程的根>> roots([1 -1 -1])ans =-0.61801.6180(2),在n个节点(n不要太大,如取5~11)上用分段线性和三次样条插值方法,计算m个插值点(m可取50~100)的函数值。

通过数值和图形输出,将两种插值结果与精度进行比较。

适当增加n,再作比较。

>> x=linspace(0,2*pi,8),y=sin(x)x =0 0.8976 1.7952 2.6928 3.5904 4.4880 5.3856 6.2832y =0 0.7818 0.9749 0.4339 -0.4339 -0.9749 -0.7818 -0.0000>>xi=linspace(0,2*pi,100);y0=sin(xi);y1=interp1(x,y,xi);y2=interp1(x,y,xi,'spline');>> plot(xi,y0,'*',xi,y1,'-.',xi,y2)>> e1=y1-y0;e2=y2-y0; >> plot(xi,e1)1234567-0.1-0.08-0.06-0.04-0.0200.020.040.060.080.1>> plot(xi,e2)01234567-0.015-0.01-0.0050.0050.010.015(3)大气压强p 随高度x 变化的理论公式为,为验证这一公式,测得某地大气压强随高度变化的一组数据如表所示。

相关主题