一熟悉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 =>> sin(pi); >> exist('pi') ans =5>> pi=0;>> exist('pi')ans =1>> pipi =>> clear>> exist('pi')ans =5>> pians =答: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,,10)A =2、矩阵的创建、引用和运算(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 11 1 1 11 1 1 1B =0 0 00 0 00 0 0C =1 0 00 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 10 1 5 6 0 1 5 68 0 0 7 8 0 0 70 3 1 1 0 3 1 10 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 5 78 -1 -3B =3-4-7>> x=A\Bx =2)求矩阵的秩;>> r=rank(A)r =33)求矩阵的特征值与特征向量>> [X,Lamda]=eig(A)X =Lamda =0 00 00 0 4)矩阵的乘幂(平方)与开方>> A^2ans =62 29 3334 12 626 22 34>> A1=sqrtm(A)A1 =+ - -+ - -- + +5)矩阵的指数与对数(以e为底)>> Ae=expm(A)Ae =+004 *>> Ael=logm(A)Ael =+ - -+ - -- + +6)矩阵的提取(取右上三角)与翻转(逆时针转90度)>> a=triu(A)a =6 3 40 5 70 0 -3>> a1=rot90(A)a1 =4 7 -33 5 -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 34 2A(:,:,2) =1 22 1A(:,:,3) =3 57 1>> B=reshape(A,3,2,2)B(:,:,1) =1 24 13 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=时Y的值X12345678910Y163270142260436682101014321960 >> x=1:10;y=[16 32 70 142 260 436 682 1010 1432 1960];>> p1=polyfit(x,y,1)p1 =>> y1=polyval(p1,y1 =+003>> p2=polyfit(x,y,2),y2=polyval(p2, p2 =y2 =+003>> p3=polyfit(x,y,3),y3=polyval(p3, p3 =y3 =+003>> y4=interp1(x,y,y4 =1696>> y5=spline(x,y,y5 =16823、习题(1)用函数roots求方程的根>> roots([1 -1 -1])ans =(2),在n个节点(n不要太大,如取5~11)上用分段线性和三次样条插值方法,计算m个插值点(m可取50~100)的函数值。
通过数值和图形输出,将两种插值结果与精度进行比较。
适当增加n,再作比较。
>> x=linspace(0,2*pi,8),y=sin(x)x =y =>> 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)10.80.60.40.2-0.2-0.4-0.6-0.8-1>> 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 变化的理论公式为,为验证这一公式,测得某地大气压强随高度变化的一组数据如表所示。
试用插值法和拟合法进行计算并绘图,看那种方法较为合理,且总误差最小。
>> x=[0 300 600 1000 1500 2000]; p=[ ];>> xi=linspace(0,2000);p0=*exp(-(xi+500)/7756);>> p1=interp1(x,p,xi,'spline');>> plot(xi,p0,'*',xi,p1)>> e1=p1-p0;>> e=sum(e1.^2)e =拟合法:>> x=[0 300 600 1000 1500 2000]; p=[ ];>> P=log10(p)P =>> p1=polyfit(x,P,1)p1 =>> b=p1(1)/,a=10.^p1(2)b =a =>> xi=linspace(0,2000);p0=*exp(-(xi+500)/7756);>> p2=polyval(p1,xi);P2=10.^p2;>> e2=P2-p0;e=sum(e2.^2)e =四Matlab数值运算1、数值微积分练习:瑞士地图如图所示,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为X轴,由南到北方向为Y轴,选择方便的原点,并将从最西边界点到最东边界点在X轴上的区间适当划分为若干段,在每个分点的Y方向测出南边界点和北边界点的Y坐标Y1和Y2,根据地图比例尺知道18mm相当于40km,试由测量数据计算瑞士国土近似面积,与其精确值41228km2比较。