MATLAB上机

更新时间:2024-04-19 09:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河北科技大学教案用纸

实验一 熟悉Matlab工作环境

1、熟悉Matlab的5个基本窗口 思考题:

(1)变量如何声明,变量名须遵守什么规则、是否区分大小写。

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

? 变量名必须以字母开头,只能由字母、数字或下划线组成。 ? 变量名区分大小写。 ? 变量名不能超过63个字符。 ? 关键字不能作为变量名。

? 最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。

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

逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector. 线性等分函数 LINSPACE(X1, X2) generates a row vector of 100 linearly equally 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矩阵。

第 1 页

河北科技大学教案用纸

eye()生成单位矩阵。 2、Matlab的数值显示格式 思考题:

(1)3次执行exist(’pi’)的结果一样吗?如果不一样,试解释为什么? >> pi ans = 3.1416 >> sin(pi); >> exist('pi') ans = 5

>> pi=0; >> exist('pi') ans = 1 >> pi pi = 0

>> clear >> exist('pi') ans = 5 >> pi ans = 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.7550 2.3249 3.0799 4.0801 5.4051 7.1603 9.4856 12.5661 2、矩阵的创建、引用和运算 (1)矩阵的创建和引用

第 2 页

河北科技大学教案用纸

练习:创建以下矩阵: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 1 B =

0 0 0 0 0 0 0 0 0

>> E=[C;D], F=E(2:5,:), G=reshape(F,3,4)E =

1 0 0 0 1 0 0 0 1 8 1 6 3 5 7 4 9 2 F =

0 1 0 0 0 1 8 1 6 3 5 7 G =

0 3 1 1 0 1 5 6 8 0 0 7

第 3 页

C =

1 0 0 0 1 0 0 0 1 D =

8 1 6 3 5 7 4 9 2

河北科技大学教案用纸

>> 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 6 8 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 7 8 -1 -3 >> x=A\\B x = 1.0200 -14.0000 9.7200 2)求矩阵的秩; >> r=rank(A) r = 3

3)求矩阵的特征值与特征向量 >> [X,Lamda]=eig(A) X =

0.8013 -0.1094 -0.1606

第 4 页

B = 3 -4 -7

河北科技大学教案用纸

0.3638 -0.6564 0.8669 0.4749 0.7464 -0.4719 Lamda =

4)矩阵的乘幂(平方)与开方 >> A^2 ans =

62 29 33 34 12 6 26 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.6323 0.4830 0.2465 0.2876 0.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 5 7

第 5 页

9.7326 0 0 0 -3.2928 0 0 0 1.5602

河北科技大学教案用纸

0 0 -3 >> a1=rot90(A) a1 =

3、多维数组的创建及运算 练习:创建三维数组A,第一页为

,第二页为

,第三页为

。然后用reshape

4 7 -3 3 5 -1 6 -2 8

函数重排为数组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 >> B=reshape(A,3,2,2) B(:,:,1) = 1 2 4 1 3 2

B(:,:,2) = 2 7 1 5 3 1

A(:,:,2) = 1 2 2 1

A(:,:,3) = 3 5 7 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 4 r =

第 6 页

河北科技大学教案用纸

0 0 2 -5 -1 2、多形式插值和拟合

有一组实验数据如附表1-1所示。请分别用拟合(二阶至三阶)和插值(线性和三次样条)的方法来估测X=9.5时Y的值 X Y 1 16 2 32 3 70 4 142 5 260 6 436 7 682 8 1010 9 1432 10 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.6000 y2 =

1.6712e+003 3、习题

(1)用函数roots求方程>> roots([1 -1 -1]) ans = -0.6180 1.6180 (2)

,在n个节点(n不要太大,如取5~11)上用分段线性和三次

的根

>> 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 =

1682

样条插值方法,计算m个插值点(m可取50~100)的函数值。通过数值和图形输出,将两种插值结果与精度进行比较。适当增加n,再作比较。

>> x=linspace(0,2*pi,8),y=sin(x) x =

第 7 页

河北科技大学教案用纸

0 0.8976 1.7952 2.6928 3.5904 4.4880 5.3856 6.2832 y =

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)

10.80.60.40.20-0.2-0.4-0.6-0.8-101234567

>> e1=y1-y0;e2=y2-y0; >> plot(xi,e1)

第 8 页

河北科技大学教案用纸

0.10.080.060.040.020-0.02-0.04-0.06-0.08-0.101234567

>> plot(xi,e2)

0.0150.010.0050-0.005-0.01-0.01501234567

(3)大气压强p随高度x变化的理论公式为

,为验证这一公式,

测得某地大气压强随高度变化的一组数据如表所示。试用插值法和拟合法进行计算并绘图,

第 9 页

河北科技大学教案用纸

看那种方法较为合理,且总误差最小。

高度/m 压强/Pa 0 0.9689 300 0.9322 600 0.8969 1000 0.8519 1500 0.7989 2000 0.7491 插值法: >> x=[0 300 600 1000 1500 2000]; p=[0.9689 0.9322 0.8969 0.8519 0.7989 0.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=[0 300 600 1000 1500 2000]; p=[0.9689 0.9322 0.8969 0.8519 0.7989 0.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-004 a = 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

第 10 页

本文来源:https://www.bwwdw.com/article/4bfp.html

Top