当前位置:文档之家› MATLAB上机答案

MATLAB上机答案

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

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

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

变量名区分大小写。

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

关键字不能作为变量名。

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

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

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

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

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

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

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

LINSPACE(X1,X2,N)generates N points between X1and 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.40517.1603 9.485612.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=111111111111 B=000000000 C=100010001 D=816357492>>E=[C;D],F=E(2:5,:),G=reshape(F,3,4)E=100010001816357492F=010001816357G=031101568007>>H=repmat(G,2)H=0311031101560156800780070311031101560156800780072)矩阵运算练习:1)用矩阵除法求下列方程组的解x= >>A=[634;-257;8-1-3],B=[3;-4;-7]A=634-2578-1-3B=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.16060.3638-0.65640.86690.47490.7464-0.4719Lamda=9.7326000-3.2928000 1.56024)矩阵的乘幂(平方)与开方>>A^2ans=62293334126262234>>A1=sqrtm(A)A1=2.2447+0.2706i0.6974-0.1400i0.9422-0.3494i -0.5815+1.6244i 2.1005-0.8405i 1.7620-2.0970i1.9719-1.8471i-0.3017+0.9557i0.0236+2.3845i 5)矩阵的指数与对数(以e为底)>>Ae=expm(A)Ae=1.0e+004*1.06530.54150.63230.48300.24650.28760.63160.32060.3745>>Ael=logm(A)Ael=1.7129+0.4686i0.5305-0.2425i0.5429-0.6049i1.1938+2.8123i0.3658-1.4552i-0.5514-3.6305i -0.0748-3.1978i0.7419+1.6546i 1.8333+4.1282i 6)矩阵的提取(取右上三角)与翻转(逆时针转90度)>>a=triu(A)a=63405700-3>>a1=rot90(A)a1=47-335-16-283、多维数组的创建及运算练习:创建三维数组A,第一页为,第二页为,第三页为。

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

>>a=[13;42],b=[12;21],c=[35;71]>>A=cat(3,a,b,c)A(:,:,1)=1342A(:,:,2)=1221A(:,:,3)=3571 >>B=reshape(A,3,2,2)B(:,:,1)=124132B(:,:,2)=271531三Matlab数值运算1、多项式运算练习:求的商及余多项式。

>>p1=conv([101],conv([13],[11]))p1=14443>>[q r]=deconv(p1,[1021])q=14r=002-5-12、多形式插值和拟合有一组实验数据如附表1-1所示。

请分别用拟合(二阶至三阶)和插值(线性和三次样条)的方法来估测X=9.5时Y的值X12345678910Y163270142260436682101014321960 >>x=1:10;y=[163270142260436682101014321960];>>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.2000181.6000y2=1.6712e+003>>p3=polyfit(x,y,3),y3=polyval(p3,9.5) p3=2.0000-1.0000 5.0000 10.0000y3=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=00.8976 1.7952 2.6928 3.5904 4.4880 5.3856 6.2832y=00.78180.97490.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 变化的理论公式为,为验证这一公式,测得某地大气压强随高度变化的一组数据如表所示。

试用插值法和拟合法进行计算并绘图,看那种方法较为合理,且总误差最小。

高度/m 0300600100015002000压强/Pa0.96890.93220.89690.85190.79890.7491插值法:>>x=[0300600100015002000];p=[0.96890.93220.89690.85190.79890.7491];>>xi=linspace(0,2000);p0=1.0332*exp(-(xi+500)/7756);>>p1=interp1(x,p,xi,'spline');>>plot(xi,p0,'*',xi,p1)>>e1=p1-p0;>>e=sum(e1.^2)e =1.8652e-005拟合法:>>x=[0300600100015002000];p=[0.96890.93220.89690.85190.79890.7491];>>P=log10(p)P=-0.0137-0.0305-0.0473-0.0696-0.0975-0.1255 >>p1=polyfit(x,P,1)p1=-0.0001-0.0137>>b=p1(1)/0.4343,a=10.^p1(2)b=-1.2863e-004a=0.9689>>xi=linspace(0,2000);p0=1.0332*exp(-(xi+500)/7756);>>p2=polyval(p1,xi);P2=10.^p2;>>e2=P2-p0;e=sum(e2.^2)e=1.8116e-005四Matlab数值运算1、数值微积分练习:瑞士地图如图所示,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为X轴,由南到北方向为Y轴,选择方便的原点,并将从最西边界点到最东边界点在X轴上的区间适当划分为若干段,在每个分点的Y方向测出南边界点和北边界点的Y坐标Y1和Y2,根据地图比例尺知道18mm相当于40km,试由测量数据计算瑞士国土近似面积,与其精确值41228km2比较。

相关主题