当前位置:文档之家› MATLAB语言与数学实验1

MATLAB语言与数学实验1

MATLAB语言与数学实验1
MATLAB语言与数学实验1

第一篇MATLAB语言与基本数学实验 (2)

第1章矩阵运算与数组运算 (4)

1.1 矩阵输入 (4)

1.2 矩阵元素 (5)

1.3 矩阵运算 (6)

1.3.1 转置矩阵 (6)

1.3.2 矩阵加减 (6)

1.3.3 矩阵乘法 (6)

1.3.4 矩阵除法 (7)

1.4 数组运算 (8)

1.4.1 数组的加减 (8)

1.4.2 数组的乘除运算 (8)

1.4.3 数组的乘方 (8)

1.5 向量和下标 (9)

1.5.1 向量的生成 (9)

1.5.2 下标 (10)

1.6 MATLAB的语句与变量 (12)

1.6.1 语句与变量 (12)

1.6.2 数 (13)

1.6.3 关系运算 (14)

1.6.4 逻辑运算 (14)

1.7 常用操作命令 (15)

习题 (16)

第2章常用的数学函数 (18)

2.1 数据统计 (18)

2.2 多项式 (19)

2.2.1 多项式的四则运算 (20)

2.2.2 多项式的求导 (21)

2.2.3 多项式的求值和求根 (21)

2.3 函数极值 (22)

2.4 MATLAB符号计算 (23)

2.4.1 建立符号对象 (23)

2.4.2 符号表达式运算 (25)

2.4.3 符号微积分 (27)

习题 (31)

第3章编程 (32)

3.1 M文件 (32)

3.1.1 M文件概述 (32)

3.1.2 M文件的建立与打开 (32)

3.2 程序控制结构 (33)

3.2.1 顺序结构 (33)

3.2.2 选择结构 (34)

3.2.3 循环结构 (36)

3.3 函数文件 (39)

3.3.1 函数文件的基本结构 (39)

3.3.2 函数调用 (40)

3.3.3 字符串函数 (40)

3.4 程序举例 (41)

3.5 软件包的集成 (46)

习题 (48)

第4章绘图 (50)

4.1 二维数据曲线图 (50)

4.1.1 绘制单根二维曲线 (50)

4.1.2 绘制多根二维曲线 (51)

4.1.3 设置曲线样式 (52)

4.1.4 图形标注 (55)

4.1.5 坐标控制 (55)

4.1.6 图形窗口的分割 (56)

4.2 其他二维图形 (58)

4.2.1 其他坐标系下的二维数据曲线图 (58)

4.2.2 隐函数作图 (60)

4.3 三维图形 (61)

4.3.1 三维曲线 (62)

4.3.2 三维曲面 (62)

习题 (64)

第5章图形用户界面设计 (65)

5.1 图形窗口的创建与设置 (65)

5.1.1 图形窗口的创建 (65)

5.1.2 图形窗口的属性与属性设置 (66)

5.1.3 图形窗口属性的获取 (67)

5.2 菜单环境的创建 (68)

5.2.1 简易菜单的设计 (68)

5.2.2 用户自定义菜单的设计与使用 (69)

5.3 对话框设计 (71)

5.3.1 对话框的基本元素 (71)

5.3.2 标准对话框的实现 (71)

2.2.1 一般对话框的设计 (72)

习题 (80)

第一篇MATLAB语言与基本数学实验

MATLAB 是matrix laboratory(矩阵实验室)的缩写,MATLAB软件包是由美国Mathwork

公司推出的,目前最为流行的版本是MA TLAB6.5,其最高版本已达到MATLAB7.4。MATLAB是一款功能强、效率高、便于进行科学和工程计算的应用软件,被誉为“巨人肩上的工具”。

在大学里,它已成为应用线性代数的先行课程;在工业领域,MA TLAB被用于解决实际工程中数学问题,其中包括:一般数值分析、矩阵运算、数字信号处理、数学建模、系统优化与控制、仿真等。总而言之,MATLAB已发展得超出了“矩阵实验室”的范围,而成为了一种方便、实用、多功能的数学运算的“演算纸”。

计算机编程与数值计算被一般人视为畏途,被看成是只有少数专家、高手才能掌握技能。为什么一般计算机用户会对编程、数值计算感到困难重重,主要是受编程技术与数学算法这两大瓶颈的制约。

MATLAB提供了一种全新的计算机编程语言,MA TLAB中的基本数据元素是不需要指定维数的矩阵,因此解决同样的数值计算问题,使用MA TLAB要比使用其它编程语言提高编程效率几倍。MA TLAB对于问题的表达方式,几乎与问题的数学表达形式完全一致,这大大降低了对使用者的数学知识、计算机编程能力的要求。实践证明,普通大学生可以在几十分钟内学会MATLAB的基础知识,在短短的几个小时的使用中就能初步掌握它,使你能够高效率地、富于创造性地进行的科学研究与计算。

MATLAB还提供了强大的作图功能,使计算机作图变得极为简单。

本篇主要通过大学数学中一些实例,介绍MATLAB语言。通过本篇的学习,能对MATLAB的主要功能有较为全面的了解,掌握MATLAB编程,并学会利用MATLAB解决实际数学问题。

第1章 矩阵运算与数组运算

MATLAB 提供了强大的矩阵运算和数组运算的功能,利用这些功能,可以非常方便地进行科学与工程计算。本章介绍MA TLAB 的矩阵运算、数组运算、关系运算、逻辑运算和一些常用的操作命令。

1.1 矩阵输入

MATLAB 软件主要进行数字矩阵的运算,矩阵可以用几种不同的方式输入到MA TLAB 。 1 直接列出矩阵元素。 2 通过程序产生。 3 建立m 文件。

4 从外部数据文件中装入。

在MA TLAB

语言中,不需要对矩阵的维数、类型作说明,而直接使用。下面用例子来

例1-1 输入矩阵

????

? ??=987654321A

在MA TLAB 命令空间中,通过键盘输入,A=[1,2,3;4,5,6;7,8,9],当按下

Enter 键时,

MATLAB

A 123

456789

=

这里,矩阵中的元素用逗号分隔,各行之间用分号分隔。

在MA TLAB 命令空间中,可以通过编程来输入矩阵A 。选取菜单“file/new/m-file ”,进入MATLAB 程序编辑器,输入以下程序代码,并将程序以名字prog1_1.m 存盘。

for i=1:1:3

for j=1:1:3

A(i,j)=(i-1)*3+j; end end A

在MATLAB 命令空间中,只要我们键入prog1_1,运行该程序,在屏幕上就会显示出矩阵A 。

当然,我们也可以通过程序编辑器为需要输入的矩阵建立一个m 文件。对于上述矩阵,

我们输入程序代码

A=[1,2,3;4,5,6;7,8,9]

仍以文件名prog1_1.m 存盘。当我们在命令窗口中键入prog1_1,按下Enter 键后,屏幕上也会显示出矩阵A 。对于一些大型的、数据无规律的矩阵的输入,通常采用这一方法。

MATLAB 中有一种后缀为.mat 的文件,它是一种外部数据文件,这类文件可使用load 命令将它装载到MA TLAB 命令空间。

1.2 矩阵元素

在MA TLAB 中,矩阵的元素可以是表达式、行(列)向量或者另一个矩阵,使用方式非常灵活。例如:

键入x=[-1.3,sqrt(3),(1+2+3)*4/5],则显示结果为 x =

-1.3000 1.7321 4.8000 这里,sqrt(3)表示3。

单独的矩阵元素可以被函数调用,被其它的矩阵调用。如再键入x(5)=abs(x(1)),意即:

15x x =,则矩阵

x

x =

-1.3000 1.7321 4.8000 0.0000 1.3000

x 是一个5维向量,由于4x 未加定义,系统自动置为0。如再键入x(4)=abs(x(2)),则

x =

-1.3000 1.7321 4.8000 1.7321

1.3000

在矩阵中,可增加另一矩阵或行(列)向量,拼装成一个新的矩阵。 例如:如果

????

? ??=987654321A

键入B=[A;[

10,11,12

12345678910

11

12B ?? ?

?

= ? ???

也可以用冒号‘:’从大矩阵中抽取出部分行、列向量,作成一个新的小矩阵。

例如,从A 矩阵中抽取前二行元素作成新矩阵C ,可用命令C=A(1:2,:)来实现,其结果为:

123C 456??

= ???

该命令的含义为:取A 中前二行、所有列,组成C 矩阵。同理,A 左上角的二阶子矩阵可

以用命令D=A(1:2,1:2)来实现,其结果为:

12D 45??= ???

而由A 的第1,3两行,第1,3两列元素所生成的二阶子矩阵可以用命令E=A([1,3],[1,3])来实现,其结果为:

13E 79??= ???

1.3 矩阵运算

1.3.1 转置矩阵

矩阵的转置矩阵用符号“′”来表示。

例如A=[1,2,3;4,5,6;7,8,9],那么B = A ′,则结果显示为:

B 147258369

=

1.3.2 矩阵加减

两矩阵必须同阶才可进行加减运算,另外MATLAB 还特别作了扩充,允许矩阵与一个数量(即1×1矩阵)进行加减运算。

例如键入A=[1,2,3;4,5,6;7,8,9],B=[1,4,7;2,5,8;3,6,9],则 C=A+B 的结果显示为:

C 2

61061014101418

=

如果键入x=[-1,0,2],则y=x-1的结果为:

y 211

=

--

1.3.3 矩阵乘法

当左乘矩阵的列数等于右乘矩阵的行数时,两矩阵可以进行乘法。在MA TLAB 中,矩阵A 乘以矩阵B 应表示成A*B 。

例如:若102X -?? ?= ? ???,211Y -?? ?

=- ? ???

则X ?*Y 的结果显示为4,而X*Y ?的结果为:

X*Y 2

110

042

2

'=

--- 数乘矩阵运算,就是用数乘以矩阵的每一个元素。

例如:Y=pi*X 或Y=X*pi (pi 在MA TLAB 中专门用来表示圆周率π),其结果为:

Y 31416

0000062832

=

-???

1.3.4 矩阵除法

MATLAB 中有两种除法,即左除“\”与右除“/”。

若A 为非奇异方阵(|A|!=0),B 为矩阵,则A\B ,B/A 的数学意义分别为11,--BA B A 。在MA TLAB 中,这两种运算也可以分别表示为inv(A)*B ,B*inv(A)。 例1-2 求解以下非齐次线性方程组

??????

?=+-+-=+-=--=+-+0

674522963852432143242

14321x x x x x x x x x x x x x x 在MA TLAB 命令空间中,分别输入系数矩阵,右端列向量 A=[2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6] b=[8;9;-5;0]

键入命令det(A),可得到系数矩阵的行列式值为27,故系数矩阵A 非奇异,方程组有唯一解;再键入命令x=A \b ,其结果显示为

x =

3.0000 -

4.0000 -1.0000 1.0000

1.4 数组运算

MATLAB 为数组定义了非常灵活的运算规则。

1.4.1 数组的加减

数组的加减运算与矩阵的加减运算是完全相同的,其运算符号为“+”、“-”。

1.4.2 数组的乘除运算

MATLAB 提供了功能独特的数组乘(.*),数组除(.\ 或 ./)运算。首先,我们介绍这些运算的数学意义。

设12(,,

,)n x x x x =,12(,,

,)n y y y y =,则

1122*(,,

,)n n x y x y x y x y ?=

12

12\(

,,,

)n

n y y y x y x x x ?= 12

12

/(,,,

)n

n

x x x x y y y y ?= 显然,在进行除法运算时,要求每个除数均不为零,否则系统会给出警告提示。

例如,若输入数组x =[1,2,3], y =[4,5,6],然后分别键入命令

z1=x .*y ,z2=x .\y ,z3=x ./y

则屏幕上会显示出以下结果:

z1 =

4 10 18 z2 =

4.0000 2.5000 2.0000 z3 =

0.2500 0.4000 0.5000

1.4.3 数组的乘方

数组的乘方用符号“.^”来表示,而数组的乘方有三种形式。 1 向量的向量次方

例如:键入x =[1,2,3], y =[4,5,6],z=x .^y ,则结果为: z=

1 3

2 729

它的数学意义是4

5

6

(1,2,3)(1,32,729)z ==。

2 向量的数量次方

例如:键入x =[1,2,3],z=x .^2,则结果为: z=

1 4 9

它的数学意义是222(1,2,3)(1,4,9)z ==。

3 数量的向量次方

例如:键入x =[1,2,3],z=2.^x ,则结果为: z=

2 4 8

它的数学意义是123(2,2,2)(2,4,8)z ==。

1.5 向量和下标

MATLAB 的下标可在向量和矩阵的运算中使用,而且十分的方便。

1.5.1 向量的生成

冒号运算符“:”是MATLAB 中最重要的一个运算符号,可以用它来生成向量、矩阵,甚至可以用它来生成简易的表格。

例如:键入x = 1:1:5,可生成一个5维的行向量,其元素从1开始依步长1增至5,即

x=

1 2 3 4 5

必须指出,当步长为1时,可省略成为x=1:5。

如果键入y = 6:-1:1,可生成一个6维行向量,其元素从6开始依步长-1减至1,即

y =

6 5 4 3 2 1

下面我们给出两个使用“:”运算符的实例。 例1-3 给出从1至6的平方根值。 键入x=1:6;y=sqrt(x);table=[x ; y ],则 table =

1.0000

2.0000

3.0000

4.0000

5.0000

6.0000 1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 例1-4 作图说明函数sin x

y x

=

,当0x →时的极限为1。 在MA TLAB 命令空间中,键入命令

x=pi/2:-0.1:0.0001,y=sin(x)./x ,plot(x,y,?o ?) 我们可得到图1-1。

图1-1 sin /y x x =在[0.0001,/2]π上的散点图

从图象上可观察到,当x 从/2π以步长0.1逐渐减少至0.0001,即0x →时,函数值逐渐趋向于1。命令plot(x,y,’o ’)的含义是,用圆卷画出对应的坐标点(x,y)。从这个例子可以看出,在MA TLAB 中,计算一系列点的函数值,作函数图象是非常方便的。

1.5.2 下标

矩阵中元素除具有值之外,还具有下标。因此,MATLAB 提供了丰富、方便的下标操

作运算。利用它可以从一个矩阵中分离出子矩阵

例如:键入A=[1,2,3;4,5,6;7,8,9],再键入 A(3,3)=A(1,3)+A(3,1),则A 被改变为

A 12

3

4567810

=

可以看出,原来矩阵A 中的元素A(3,3)被置换成了新值A(1,

3)+A(3,1)=3+7=10

MATLAB 表示元素相邻的子矩阵有以下几种方法。

键入A(1:3,3),表示由A 中的第1至3行与第3列交叉处的元素构成的子矩阵; 键入A(1:2,2:3),表示由A 中第1、2两行与第2、3两列的交叉处元素构成的子矩阵;

键入A(:,2),表示A 中所有行与第2列的交叉处元素构成的列向量; 键入A(1,:),表示A 中的第1行与所有列的交叉处元素构成的行向量。 MATLAB 表示元素不相邻的子矩阵有以下方法。

键入A([1,3],[1,3]),表示由A 中第1、3行与第1、3列交叉处的元素所构成的子矩阵。

这一表示方法还可用向量形式表示:row=[1,3],col=[1,3],A(row ,col)。 键入A([1,3],:),表示A 中第1、3行与其所有列交叉处元素所构成的子矩阵。 在MA TLAB 中,可以将矩阵的一部分(子矩阵)赋值给另一矩阵中指定部分。

例如,设123456789A ?? ?= ? ???,012012012B ?? ?

= ? ???

键入A(:,[2,3])=B(:,[1,2]),它表示将B 中的1、2两列赋值给A 中的2、3

两列,则A 矩阵成为

????

? ??=107104101A

再键入A=A(:,3:-1:1),亦即 A=A([1,2,3],[3,2,1]),可将A 的第1列与

第3列交换位置,则A 矩阵又变成了

????

? ??=701401101A

当然,交换矩阵A 中的第1、3两列,也可表示成 A(:,[1,3])=A(:,[3,1])。

在MA TLAB 中,符号A(:)的特性在处理某些问题时,是十分有用的。

1 若A(:)出现在赋值语句的右边,将A 中所有元素展开成一列向量。 例如:设1234A ??

=

???

,键入b = A(:),则列向量b 为 b 1324

= 2 若A(:)出现在赋值语句的左边,表示用右边的向量,对矩阵A 重新赋值。 例如,设1234A ??

=

???

,键入A(:)=11:14,则表示以11至14这4个数所作成的行向量重新组成2×2的矩阵A 。

11131214A ??= ???

注意:只有当向量的元素个数与原矩阵所含元素个数相等时,才可进行这种赋值。

矩阵()ij m n A a ?=展开成列向量时,元素ij a 在列向量中的位置,可以按照公式

(1)j m i -+进行计算。

例1-5 用初等行变换化下述矩阵A 为行简化阶梯形。

456123789A ?? ?= ? ???

在数学上,可进行如下初等行变换

456123789A ?? ?

= ? ???12

123456789r r ??

?? ? ???211234036789r r ??

?--- ? ???

3112

370360612r r ?? ?--- ? ?--??

212

3101230612r ?? ?- ? ?

--??321236012000r r ?? ?+ ? ???

121012012000r r -??

?- ? ???

在MA TLAB 中,依次键入如下命令,可将A 化成行简化阶梯形矩阵。

A=[4,5,6;1,2,3;7,8,9] A([1,2],:)=A([2,1],:) A(2,:)=A(2,:)-4*A(1,:) A(3,:)=A(3,:)-7*A(1,:) A(2,:)=-A(2,:)/3 A(3,:)=A(3,:)+6*A(2,:) A(1,:)=A(1,:)-2*A(2,:)

当然,在MATLAB 中,键入命令rref(A),便可将矩阵A 化为行简化阶梯形矩阵。

1.6 M ATLAB 的语句与变量

1.6.1 语句与变量

MATLAB 中的变量不需要作类型说明,一切由MA TLAB 自行解释、判断。当语句表述不妥当时,系统会自动显示出错信息。

MATLAB 语句通常形式为 1 变量

= 2 表达式

表达式由操作符、函数、变量名组成。

表达式的结果为一个矩阵,显示在屏幕上,同时存入变量中供以后调用。 如果省略变量名和等号“=”,则系统自动将它赋给缺省变量ans(意指answer)。 例如,键入1/2,则屏幕显示 ans =

0.5000

若再键入 x = 40.5/81,则屏幕显示

x =

0.5000

若语句结束之后按Enter 键,则语句被立即执行,并在屏幕上显示出结果。若在语句的最后加上分号“;”,则语句被执行,但结果不显示在屏幕上。

如果表达式很长,一行放不下,键入省略号“…”之后再按Enter 键,便可以续行。 例1-6 利用幂级数展开式

23

1

ln(1)(1)

23

n

n x x x x x n

-+=-+-

+-+(11x -<≤)

讨论ln2近似值的计算问题。 因为1

1111ln 21(1)234

n n

-=-

+-++-+,如果我们取前20项的和作为ln2的近似值,

在MA TLAB 命令窗口中,可直接键入命令

s=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8+1/9-1/10+…

1/11-1/12+1/13-1/14+1/15-1/16+1/17-1/18+1/19-1/20

可得到近似值s=0.6688。调用MATLAB 内建函数log(x),可知log(2)≈0.6931,可见所求得的近似值s 有较大误差。

下面,我们将计算ln2所采用的数项级数进行改造,构造出收敛速度更快的级数。

因为 23

ln(1)23n x x x x x n

-=--

----

351ln ln(1)ln(1)2()135

x x x x x x x +=+--=+++-

取13x =

,那么 )351

331311(

22ln 5

3 +?+?+?= 取前3项来作近似计算,在MA TLAB 命令窗口中,键入命令 s=2*(1/3+1/(3*3^3)+1/(5*3^5))

可得到s=0.6930。显然,这一近似值的效果要好得多。

MATLAB 中的变量名是以英文字母开头,后接字母、数字或下划线的字符序列,最多63个字符。

MATLAB 中的变量区分大小写,即A 与a 不是同一个变量。

MATLAB 提供的标准函数名以及命令名必须用小写字母,如求矩阵A 的逆用inv(A),不能写与INV (A )或Inv(A),否则会出错。

1.6.2 数

MATLAB 采用十进制或科学计数制来表示整数与实数。如3,-99,9.23,1.6021e-10,1.6021e10等,其数的表示范围在308

30810

~10-之间,字长可达到16位。

i 是系统定义的虚数单位,MA TLAB 支持复数运算。例如,在MATLAB 中输入复数i z 43+=,只需键入z=3+4*i 。

输入复数矩阵???

?

???+?+?+?+=i i i

i A 84736251有两种输入方式: A=[ 1+5*i ,2+6* i ;3+7* i ,4+8* i ] 或 A=[1,2;3,4]+i*[5,6;7,8] 变量eps 是系统定义的容许误差,16

eps 2.220410-=?,当然用户也可以将此值自行设

置为任何非负值。

pi表示圆周率π。

inf表示无穷大。MATLAB中允许零作除数,但会给出一个警告信息。

例如,键入s = 1/0,屏幕上会出现以下信息

Warning: Divide by zero.

(Type "warning off MATLAB:divideByZero" to suppress this warning.)

s =

Inf

nan表示不定值,它是由inf/inf或0/0运算而产生的。

1.6.3关系运算

MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。

关系运算的运算法则为:

1 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式的值为1,否则为0。

2 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同,它的元素由0或1组成。

3 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。

例如

若键入x=(1<2)

则x =

1

若键入A=[1,2,3;2,3,4],B=[1,2,2;2,2,3],C=(A<=B)

则 C =

1 1 0

1 0 0

若键入A=[1,2,3;2,3,4],b=1,C=(A<=b)

则 C =

1 0 0

0 0 0

1.6.4逻辑运算

MATLAB提供了3种逻辑运算符:&(与)、|(或)、~(非)。

逻辑运算的运算法则为:

1 在逻辑运算中,确认非零元为真,用1表示,零元素为假,用0表示。

2 设参与逻辑运算的是两个标量a和b,那么

a&b a,b全为非零时,运算结果为1,否则为0。

a|b a,b中只要有一个非零时,运算结果为1;只有当a,b全为零时,运算结果为0。

~a 当a为零时,运算结果为1;当a非零时,运算结果为0。

3 若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规

则逐个进行。最终运算的结果是一个与原矩阵同维的矩阵,其元素由0或1组成。

4 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素是由0或1组成。

5 若对一个矩阵做逻辑非运算,那么将对矩阵中的每个元素按标量规则逐个取逻辑非,最终运算的结果是一个与原矩阵同维的矩阵,其元素由0或1组成。

6 在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。

例如,若键入A=[0,2,3;0,2,0],B=[0,0,0;2,3,4],A&B,A|B,~A,则其结果分别为

ans =

0 0 0

0 1 0

ans =

0 1 1

1 1 1

ans =

1 0 0

1 0 1

1.7 常用操作命令

format命令用来控制数显示格式,该命令仅影响数的显示,不影响数的计算与存贮,在MATLAB中,数都以双精度执行所有的运算。

MATLAB一般只给出5位有效数字,若要增加数字的字长,可键入format long命令,它将使字长增加到16位。当再次键入format命令,则数值的输出字长恢复到5位。

help命令是一个非常实用的命令,它提供了了MA TLAB大部分命令用法的联机帮助信息,使用起来非常方便。

例如,键入help format命令,可得到关于format的使用信息。

了解MATLAB有关信息的另一个方法是,点击菜单项“help/Matlab Help”,直接打开MATLAB自带的帮助文件。

quit命令可退出MATLAB。退出MATLAB,会引起工作空间中变量的丢失,在退出MATLAB之前,可对整个工作空间存盘,以备下次使用,存盘有三种方式。

1 键入save命令,将工作空间中的一切变量存入名为matlab.mat的文件中,下次调用此文件,只需键入命令load。

2 键入save filename,将工作空间的一切变量存入名为filename.mat的文件中,下次调用该文件时,可使用load filename来实现。

3 键入save filename x y z,仅将工作空间中的变量x,y,z存入名为filename.mat 的文件中,下次调用时,键入load filename即可。

clear命令用于清除工作空间的变量。键入命令clear x y z,可清除变量x,y,z。键入clear all,可清除一切变量。当然,点击菜单项“edit/clear workspace”,也可以清除工作空间中的一切变量。

clc命令用于清除屏幕信息,使屏幕看起来更简洁。点击菜单项“edit/clear command window”,也可以清除屏幕上的一切信息。

who 命令可检验MATLAB 工作空间中建立的变量名。

whos 命令可检验MATLAB 工作空间中变量名、维数、字节数、数据类型。 在命令窗口输入命令时,可通过↑键重新调出上一个命令行,对它进行修改或者重新执行,这给递推计算提供了极大的方便。 例1-7 利用递推式

112

()2n n n

x x x +=+,

(12,n =),其中,12x =

求2的近似值。

数学上可以证明,数列{}n x 单调减少且有下界2,据极限存在准则,有lim 2n n x →∞

=

因此,当n 充分大时,2n x ≈,这表明,可以用n x 的值作为2的近似。

在MATLAB 命令窗口,按照以下操作可以实现2的近似计算。

format long

x=2

x=(x+2/x)/2 然后按↑键,调出表达式x=(x+2/x)/2,并执行;再按↑键,再调出表达式x=(x+2/x)/2,再执行;再按↑键,再调出表达式x=(x+2/x)/2,再执行,可以得到x = 1.41421356237469。

应用MATLAB 内建函数sqrt(x),键入命令sqrt(2),可得到2的近似值约为

1.41421356237310。

习题

1. 利用递推方法,求极限111+++

的近似值。(1.61803347392815)

2. 利用矩阵的初等行变换,求下列向量组的极大无关组与秩。

123451322522235,,,,3121211110ααααα??????????

????????????????????=====????????????????????---??????????

3. 计算范德蒙行列式的值。

2342342

3

4

1111222233334444(288)

4. 已知数据表

x i

-1

1

2

y i

-2

-1 1 2

计算函数

4

4

11

()()j i j i i j

j i

z x L z y x x ==≠-=-∑∏

在 1.2z =的值。 5. 由函数展开式

357

21

1

arctan (1)

(11)357

21

n n x x x x x x x n --=-+-+

+-+-≤≤-

可得到一个可用来计算圆周率π的公式

1

1111

4(1(1))357

(21)

n n π--+-+

+-+

=-

(1)若取级数前20项之和的值作为π的近似值,说明该近似值的精度达到了多少; (2)若用欧拉公式

11

arctan

arctan 4

23

π

=+计算π的近似值,说明计算效率是否有所提高,并详细推导出计算公式。

(3)利用递推公式

)22,2,0(1)1(2/1)1(1111

111

11+===????

?

?

?

?

???++=+=

++=

++++++p b a a b a p p b b b b a a b a n n n n n n n n n n n n n 再计算π的近似值,并讨论这一计算方法的效率。

第2章 常用的数学函数

MATLAB 提供了丰富的标准函数,利用这些标准函数,可以很方便地进行科学与工程计算。本章介绍MA TLAB 中一些最为常用的数学函数以及它们的使用方法。

2.1 数据统计

利用MATLAB 提供的一系列数据统计函数,可以方便地完成许多计算。 1 求向量的最大值和最小值

求一个向量x 的最大值的函数有两种调用格式,分别是:

(1)max(x):返回向量x 的最大值,如果x 中包含复数元素,则按模取最大值。 (2)[y, i]=max(x):返回向量x 的最大值存入y ,最大值的序号存入i ,如果x 中包含复数元素,则按模取最大值。

求向量x 的最小值函数是min(x),用法与max(x)完全相同。 2 求矩阵的最大值和最小值

求矩阵A 的最大值的函数有三种调用格式,分别是:

(1)max(A):返回一个行向量,向量的i 个元素是矩阵A 的第i 列的最大值。

(2)[y,u]=max(A):返回行向量y 和u ,y 纪录A 的每列的最大值,u 纪录每列最大值的行号。

求矩阵A 的最小值的函数min(A),用法与max(A)完全相同。 3 求和与求积

数据序列求和与求积函数是sum 和prod ,其使用方法类似。设x 是一个向量,A 是一个矩阵,函数的调用格式为:

sum(x):返回向量x 各元素之和。 prod(x):返回向量x 各元素的乘积。

sum(A):返回一个行向量,其第i 个元素是A 的第i 列的元素之和。 prod(A):返回一个行向量,其第i 个元素是A 的第i 列的元素乘积。 sum(A ,dim):当dim 为1时,该函数等同于sum(A);当dim 为2时,返回一个列向量,其第i 个元素是A 的第i 行的元素之和。

prod(A ,dim):当dim 为1时,该函数等同于prod(A);当dim 为2时,返回一个列向量,其第i 个元素是A 的第i 行的元素乘积。

4 平均值、标准方差

对于具有n 个元素的向量12[,,,]n x x x x =,其平均值、标准方差或方差的计算公式

如下:

1

1n

i i x x n ==∑

211

1()1n

i i x x n σ==--∑ 或

221

1()n i i x x n σ==-∑ MATLAB 提供了mean ,std 函数来计算平均值、标准方差或方差。这些函数的调用方法如下:

mean(x):返回向量x 的算术平均值。 std(x):返回向量x 的标准方差。

对于矩阵A ,mean 函数的一般调用格式为: y=mean(A ,dim)

这里,dim 取1或2。当dim=1时,返回一个行向量y ,y 的第i 个元素是A 的第i 列元素的平均值;当dim=2时,返回一个列向量y ,y 的第i 个元素是A 的第i 行元素的平均值。

对于矩阵A ,std 函数的一般调用格式为: y=std(A ,flag ,dim)

这里,dim 取1或2。当dim=1时,求各列元素的标准方差;当dim=2时,求各行元素的标准方差。flag 取0或1,当flag=0时,按1σ计算标准方差;当flag=1时,按2σ计算方差。缺省flag=0,dim=1。

5 相关系数

对于两组数据序列12[,,,]n x x x x =,12[,,,]n y y y y =,其相关系数的计算公式

如下:

1

2

2

1

1

()()

()

()

n

i

i

i n

n

i

i

i i x x y y r x x y y ===--=

-?

-∑∑∑

MATLAB 提供了corrcoef 函数来计算相关系数,corrcoef 函数的调用格式为: r=corrcoef(x ,y) 6 排序

对向量元素的进行排序是一种经常性的操作,MA TLAB 提供了sort 函数对向量x 进行排序。

y=sort(x):返回一个对x 中元素按升序排列后的向量y 。

[y ,i]=sort(x):返回一个对x 中的元素按升序排列的向量y ,而i 记录y 中元素在x 中的位置。

2.2 多项式

在MA TLAB 中,n 次多项式用一个1n +维的行向量表示,缺少的幂次项系数为0,如果n 次多项式表示为:

1121()n n n n p x a x a x a x a -+=++

++

则在MATLAB 中,()p x 用向量121[,,

,,]n n p a a a a +=来表示。

2.2.1 多项式的四则运算

多项式之间可以进行四则运算,其运算结果仍为多项式。 1 多项式的加减运算

MATLAB 没有提供专门进行多项式加减运算的函数。事实上,多项式的加减运算就是其所对应的系数向量的加减运算。对于次数相同的两个多项式,可直接对多项式系数向量进行加减运算。如果多项式的次数不同,则应该把低次的多项式系数不足的高次项用0补足,使各多项式具有相同的次数。

例2-1 求多项式3

2

253x x x -++和61x -的和。

命令如下: p1=[1,-2,5,3]; p2=[0,0,6,-1]; c=p1+p2 c=

1 -

2 11 2 2 多项式的乘法运算

函数conv(p1,p2)用于求多项式p1和p2的乘积。这里,p1、p2是两个多项式系数向量。 例2-2 求多项式4

3

810x x +-和2

23x x -+的乘积。

命令如下:

p1=[1,8,0,0,-10]; p2=[2,-1,3]; c=conv(p1,p2) c=

2 15 -5 24 -20 10 -30

3 多项式除法

函数[q ,r]=deconv(p1,p2)用于多项式p1和p2作除法运算,其中q 返回多项式p1除以p2的商式,r 返回p1除以p2的余式。这里,q 和r 仍是多项式系数向量。

例2-3 求多项式4

3

810x x +-除以多项式2

23x x -+的结果。 命令如下:

p1=[1,8,0,0,-10]; p2=[2,-1,3];

[q,r]=deconv(p1,p2) q =

0.5000 4.2500 1.3750 r =

0 0 0 -11.3750 -14.1250

MATLAB数学实验第二版答案(胡良剑)

数学实验答案 Chapter 1 Page20,ex1 (5) 等于[exp(1),exp(2);exp(3),exp(4)] (7) 3=1*3, 8=2*4 (8) a为各列最小值,b为最小值所在的行号 (10) 1>=4,false, 2>=3,false, 3>=2, ture, 4>=1,ture (11) 答案表明:编址第2元素满足不等式(30>=20)和编址第4元素满足不等式(40>=10) (12) 答案表明:编址第2行第1列元素满足不等式(30>=20)和编址第2行第2列元素满足不等式(40>=10) Page20, ex2 (1)a, b, c的值尽管都是1,但数据类型分别为数值,字符,逻辑,注意a与c相等,但他们不等于b (2)double(fun)输出的分别是字符a,b,s,(,x,)的ASCII码 Page20,ex3 >> r=2;p=0.5;n=12; >> T=log(r)/n/log(1+0.01*p) Page20,ex4 >> x=-2:0.05:2;f=x.^4-2.^x; >> [fmin,min_index]=min(f) 最小值最小值点编址 >> x(min_index) ans = 0.6500 最小值点 >> [f1,x1_index]=min(abs(f)) 求近似根--绝对值最小的点 f1 = 0.0328 x1_index = 24 >> x(x1_index) ans = -0.8500 >> x(x1_index)=[];f=x.^4-2.^x; 删去绝对值最小的点以求函数绝对值次小的点 >> [f2,x2_index]=min(abs(f)) 求另一近似根--函数绝对值次小的点 f2 = 0.0630 x2_index = 65 >> x(x2_index) ans = 1.2500

数学实验练习题(MATLAB)

注意:在下面的题目中m 为你的学号的后3位(1-9班)或4位(10班以上). 第一次练习题 1.求解下列各题: 1)30sin lim x mx mx x ->- 2)(4)cos ,1000.0=x mx y e y 求 3)21/2 0mx e dx ?(求近似值,可以先用inline 定义被积函数,然后用quad 命令) 4)4 224x dx m x +? 5 0x =展开(最高次幂为8). 2.对矩阵21102041A m -?? ?= ? ?-?? ,分别求逆矩阵,特征值,特征向量,行列式,并求矩阵,P D (D 是对角矩阵),使得1A PDP -=。 3. 已知2 1(),()2f x e x μσ=--分别在下列条件下画出)(x f 的图形: (1)/600m σ=,μ分别为0,1,1-(在同一坐标系上作图); (2)0μ=,σ分别为1,2,4,/100m (在同一坐标系上作图). 4.画 (1)sin 020cos 02100x u t t y u t u t z m ??=≤≤?=?≤≤??=?

(2) sin()03,03z mxy x y =≤≤≤≤ (3)sin()(/100cos )02cos()(/100cos )02sin x t m u t y t m u u z u π π=+?≤≤?=+?≤≤?=? 的图(第4题只要写出程序). 5.对于方程50.10200 m x x --=,先画出左边的函数在合适的区间上的图形,借助于软件中的方程求根的命令求出所有的实根,找出函数的单调区间,结合高等数学的知识说明函数为什么在这些区间上是单调的,以及该方程确实只有你求出的这些实根。最后写出你做此题的体会. 第二次练习题 判断迭代收敛速度的程序 x0=1;stopc=1;eps=10^(-8);a=1;c=1;b=2*c;d=a;k=0; f=inline('(a*x+b)/(c*x+d)'); kmax=100; while stopc>eps&k

Matlab数学实验报告一

数学软件课程设计 题目非线性方程求解 班级数学081 姓名曹曼伦

实验目的:用二分法与Newton迭代法求解非线性方程的根; 用Matlab函数solve、fzero、fsolve求解非线性方程(组)的解。 编程实现二分法及Newton迭代法; 学会使用Matlab函数solve、fzero、fsolve求解非线性方程(组)的解。 通过实例分别用二分法及迭代法解非线性方程组并观察收敛速度。 实验内容: 比较求exp(x)+10*x-2的根的计算量。(要求误差不超过十的五次方) (1)在区间(0,1)内用二分法; (2)用迭代法x=(2-exp(x))/10,取初值x=0 。 试验程序 (1)二分法: format long syms x s=exp(x)+10*x-2 a=0; b=1; A=subs(s,a) B=subs(s,b) f=A*B %若f<0,则为由根区间 n=0; stop=1.0e-5; while f<0&abs(a-b)>=stop&n<=100; Xk=(a+b)/2; %二分 M= subs(s, Xk); if M* A<0 symbol=1 %若M= subs(s, Xk)为正,则与a二分 b= Xk else symbol=0 % 若M= subs(s, Xk)为负,则与b二分 a= Xk end n=n+1 end Xk n (2)牛顿迭代法; format long

syms x s= (2-exp(x))/10; %迭代公式 f=diff(s); x=0; %迭代初值 a=subs(f,x); %判断收敛性(a是否小于1) s=(2-exp(x))/10; stop=1.0e-5; %迭代的精度 n=0; while a<1&abs(s-x)>=stop&n<=100; x=s %迭代 s=(2-exp(x))/10; n=n+1 end 实验结果: (1)二分法: symbol =1 b =0.50000000000000 n =1 symbol =1 b =0.25000000000000 n =2 symbol =1 b =0.12500000000000 n =3 symbol =0 a =0.06250000000000 n =4 symbol =1 b =0.09375000000000 n =5 symbol =0 a =0.07812500000000 n =6 symbol =1 b =0.09054565429688 n =15 symbol =1 b =0.09053039550781 n =16 symbol =0 a =0.09052276611328 n =17 Xk =0.09052276611328 n =17 (2)迭代法 由x =0.10000000000000 n =1 x =0.08948290819244 n =2 x =0.09063913585958 n =3 x =0.09051261667437 n =4 x =0.09052646805264 n =5 试验结果可见用二分法需要算17次,而用迭代法求得同样精度的解仅用5次,但由于迭代法一般只具有局部收敛性,因此通常不用二分法来求得非线性方程的精确解,而只用它求得根的一个近似解,再用收敛速度较快的迭代法求得其精确解。

matlab实验五答案1

实验五 1、编写程序,该程序在同一窗口中绘制函数在 []0,2π之间的正弦曲线和余弦曲线,步长 为200/π,线宽为2个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚线,两条曲线交点处,用红色星号标记并标注sin(x)=cos(x);通过函数方式在生成的图形中添加注释,至少应包括:标题,文本注释,图例和坐标轴标注。%x=linspace(0,2*pi,1000);x=[0:pi/200:2*pi]sinx =sin(x);cosx =cos(x); k=find(abs(sinx-cosx)<1e-2);x1=x(k); plot(x,sinx,'LineWidth',2) hold on ,plot(x,cosx,'r:','LineWidth',2)hold on ,plot(x1,sin(x1),'r*')xlabel('x:(0-2\pi)'); ylabel('y:sin(x)/cos(x)'); title('正弦-余弦曲线'); text(x1+0.1,sin(x1),'sin(x)=cos(x)');legend('sin(x)','cos(x)'); 1 2 34 5 6 7 x:(0-2π) y :s i n (x )/c o s (x ) 正弦-余弦曲线 2、绘制图像:双曲抛物面:22 x y z =- ,1616x -<<,44y -<<,并对绘制的双曲抛物面尝试进行视点控制。 [X,Y]=meshgrid(-16:0.4:16,-4:0.1:4);Z =X.^2/16-Y.^2/4; subplot(1,3,1),plot3(X,Y,Z),view(0,180),title('azimuth =0,elevation =180'); subplot(1,3,2),plot3(X,Y,Z),view(-37.5,-30),title('azimuth =

MATLAB实验报告

实验一 MATLAB 环境的熟悉与基本运算 一、实验目的及要求 1.熟悉MATLAB 的开发环境; 2.掌握MATLAB 的一些常用命令; 3.掌握矩阵、变量、表达式的输入方法及各种基本运算。 二、实验内容 1.熟悉MATLAB 的开发环境: ① MATLAB 的各种窗口: 命令窗口、命令历史窗口、工作空间窗口、当前路径窗口。 ②路径的设置: 建立自己的文件夹,加入到MATLAB 路径中,并保存。 设置当前路径,以方便文件管理。 2.学习使用clc 、clear ,了解其功能和作用。 3.矩阵运算: 已知:A=[1 2;3 4]; B=[5 5;7 8]; 求:A*B 、A.*B ,并比较结果。 4.使用冒号选出指定元素: 已知:A=[1 2 3;4 5 6;7 8 9]; 求:A 中第3列前2个元素;A 中所有列第2,3行的元素; 5.在MATLAB 的命令窗口计算: 1) )2sin(π 2) 5.4)4.05589(÷?+ 6.关系及逻辑运算 1)已知:a=[5:1:15]; b=[1 2 8 8 7 10 12 11 13 14 15],求: y=a==b ,并分析结果 2)已知:X=[0 1;1 0]; Y=[0 0;1 0],求: x&y+x>y ,并分析结果 7.文件操作 1)将0到1000的所有整数,写入到D 盘下的文件 2)读入D 盘下的文件,并赋给变量num

8.符号运算 1)对表达式f=x 3 -1 进行因式分解 2)对表达式f=(2x 2*(x+3)-10)*t ,分别将自变量x 和t 的同类项合并 3)求 3(1)x dz z +? 三、实验报告要求 完成实验内容的3、4、5、6、7、8,写出相应的程序、结果

浅析Matlab数学实验报告

数学实验报告 姓名: 班级: 学号: 第一次实验任务 过程: a=1+3i; b=2-i; 结果: a+b =3.0000 + 2.0000i a-b =-1.0000 + 4.0000i a*b = 5.0000 + 5.0000i a/b = -0.2000 + 1.4000i 过程: x=-4.5*pi/180; y=7.6*pi/180; 结果: sin(abs(x)+y)/sqrt(cos(abs(x+y))) =0.2098 心得:对于matlab 中的角度计算应转为弧度。 (1)过程: x=0:0.01:2*pi; y1=sin(x); y2=cos(x); y3=exp(x); y4=log(x); plot(x,y1,x,y2,x,y3,x,y4) plot(x,y1,x,y2,x,y3,x,y4) 结果: (2)过程:>> subplot(2,2,1) >> plot(x,y1) >> subplot(2,2,2) >> plot(x,y2) ./,,,,2,311b a b a b a b a i b i a ?-+-=+=计算、设有两个复数 6,7,5.4)

cos()sin(2=-=++y x y x y x ,其中、计算的图形。 下分别绘制)同一页面四个坐标系)同一坐标系下(、在( x y e y x y x y x ln ,,cos ,sin 213==== >> subplot(2,2,3) >> plot(x,y3) >> subplot(2.2.4) >> subplot(2,2,4) >> plot(x,y4) 结果: 心得:在matlab中,用subplot能够实现在同一页面输出多个坐标系的图像,应注意将它与hold on进行区别,后者为在同一坐标系中划出多条曲线。 5、随机生成一个3x3矩阵A及3x2矩阵B,计算(1)AB,(2)对B中每个元素平方后得到的矩阵C,(3)sinB,(4)A的行列式,(5)判断A是否可逆,若可逆,计算A的逆矩阵,(6)解矩阵方程AX=B,(7)矩阵A中第二行元素加1,其余元素不变,得到矩阵D,计算D。 过程:A=fix(rand(3,3).*10) ; B=fix(rand(3,3).*10);

实验5 Matlab程序设计1

实验5 Matlab 程序设计1 实验目的: 1、 掌握建立和执行M 文件的方法; 2、 掌握实现选择结构的方法; 3、 掌握实现循环结构的方法。 实验内容: 1. 从键盘输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然 后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 2. 求分段函数的值。 ,x x x x y x x x x x x x ?+- <≠-?=-+ ≤<≠≠??-- ?2226035605231且且及其他 用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。请输入x 的值 x=input('请输入x 的值'); if x<0&x~=-3 y=x*x+x-6; elseif 0<=x&x<5&x~=2&x~=3 y=x*x-5*x+6; else y=x*x-x-1; end y

second 请输入x的值-5 y = 14 second 请输入x的值-3 y = 11 >> second 请输入x的值0 y = 6 >> second 请输入x的值1

y = 2 >> second 请输入x的值2 y = 1 >> second 请输入x的值2.5 y = -0.2500 >> second 请输入x的值3

5 >> second 请输入x的值5 y = 19 >> 3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89 分为B,70~79分为C,60~69分为D,60分以下为E。 要求: (1)分别用if语句和swich语句实现。 (2)grade=input('input grade:'); (3)if grade<=100&grade>=90 (4)level='A'; (5)elseif grade<=89&grade>80 (6)level='B'; (7)elseif 70<=grade&grade<=79

南邮MATLAB数学实验答案(全)

第一次练习 教学要求:熟练掌握Matlab 软件的基本命令和操作,会作二维、三维几何图形,能够用Matlab 软件解决微积分、线性代数与解析几何中的计算问题。 补充命令 vpa(x,n) 显示x 的n 位有效数字,教材102页 fplot(‘f(x)’,[a,b]) 函数作图命令,画出f(x)在区间[a,b]上的图形 在下面的题目中m 为你的学号的后3位(1-9班)或4位(10班以上) 1.1 计算30sin lim x mx mx x →-与3 sin lim x mx mx x →∞- syms x limit((902*x-sin(902*x))/x^3) ans = 366935404/3 limit((902*x-sin(902*x))/x^3,inf) ans = 0 1.2 cos 1000 x mx y e =,求''y syms x diff(exp(x)*cos(902*x/1000),2) ans = (46599*cos((451*x)/500)*exp(x))/250000 - (451*sin((451*x)/500)*exp(x))/250 1.3 计算 22 11 00 x y e dxdy +?? dblquad(@(x,y) exp(x.^2+y.^2),0,1,0,1) ans = 2.1394 1.4 计算4 2 2 4x dx m x +? syms x int(x^4/(902^2+4*x^2)) ans = (91733851*atan(x/451))/4 - (203401*x)/4 + x^3/12 1.5 (10)cos ,x y e mx y =求 syms x diff(exp(x)*cos(902*x),10) ans = -356485076957717053044344387763*cos(902*x)*exp(x)-3952323024277642494822005884*sin(902*x)*exp(x) 1.6 0x =的泰勒展式(最高次幂为4).

MATLAB数学实验100例题解

一元函数微分学 实验1 一元函数的图形(基础实验) 实验目的 通过图形加深对函数及其性质的认识与理解, 掌握运用函数的图形来观察和分析 函数的有关特性与变化趋势的方法,建立数形结合的思想; 掌握用Matlab 作平面曲线图性的方法与技巧. 初等函数的图形 2 作出函数x y tan =和x y cot =的图形观察其周期性和变化趋势. 解:程序代码: >> x=linspace(0,2*pi,600); t=sin(x)./(cos(x)+eps); plot(x,t);title('tan(x)');axis ([0,2*pi,-50,50]); 图象: 程序代码: >> x=linspace(0,2*pi,100); ct=cos(x)./(sin(x)+eps); plot(x,ct);title('cot(x)');axis ([0,2*pi,-50,50]); 图象: cot(x) 4在区间]1,1[-画出函数x y 1 sin =的图形. 解:程序代码: >> x=linspace(-1,1,10000); y=sin(1./x); plot(x,y); axis([-1,1,-2,2]) 图象:

二维参数方程作图 6画出参数方程???==t t t y t t t x 3cos sin )(5cos cos )(的图形: 解:程序代码: >> t=linspace(0,2*pi,100); plot(cos(t).*cos(5*t),sin(t).*cos(3*t)); 图象: 极坐标方程作图 8 作出极坐标方程为10/t e r =的对数螺线的图形. 解:程序代码: >> t=0:0.01:2*pi; r=exp(t/10); polar(log(t+eps),log(r+eps)); 图象: 90270 分段函数作图 10 作出符号函数x y sgn =的图形. 解:

matlab 数学实验 迭代 _ 蛛网图(免积分)

数学实验—实验报告(免积分) 一、实验项目:Matlab实验三—迭代 二、实验目的和要求 a.熟悉MATLAB软件的用户环境,掌握其一般目的命令和MATLAB数组操作与 运算函数; b.掌握MATLAB软件的绘图命令,能够熟练应用循环和选择结构实现各种循环 选择功能; c.借助MATLAB软件的绘图功能,对函数的特性进行探讨,广泛联想,大胆猜 想,发现进而证实其中的规律。 三、实验内容 问题一:将方程53 x x x +-+=改写成各种等价的形式进行迭代 5210 观察迭代是否收敛,并给出解释。 问题二:迭代以下函数,分析其收敛性。 4 f(x)=x-a 使用线性连接图、蛛网图或费根鲍姆图对参数a进行讨论和观察,会得到什么结论? 问题一: (1)画图 x1=-6:0.01:6; x2=-3:0.01:3; x3=-1:0.01:1; x4=-0.8:0.01:-0.75; y1=x1.^5 +5*x1.^3-2*x1+1; y2=x2.^5 +5*x2.^3-2*x2+1; y3=x3.^5 +5*x3.^3-2*x3+1; y4=x4.^5 +5*x4.^3-2*x4+1; subplot(2,2,1),plot(x1,y1) ,title('图(1)') ,grid on, subplot(2,2,2),plot(x2,y2) ,title('图(2)'),grid on, subplot(2,2,3),plot(x3,y3) ,title('图(3)'),grid on, subplot(2,2,4),plot(x4,y4) ,title('图(4)') ,grid on,

MATLAB实验五 函数文件

MATLAB实验报告 学院:光电学院 班级:073-1 姓名:刘颖 学号:200713503117

实验五 函数文件 1.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。 程序设计: function [e ln s c]=num(x) e=exp(x) ln=log(x) s=sin(x) c=cos(x) end 运行结果: >> num(5i) e = 0.2837 - 0.9589i ln = 1.6094 + 1.5708i s = 0 +74.2032i c = 74.2099 ans = 0.2837 - 0.9589i 2.一物理系统可用下列方程组来表示: ??? ? ??? ???????= ?????? ??? ??? ???????????? ??----g g m m N N a a m m m m 2121212 111001cos 0 0sin 00cos 0 sin 0sin cos θ θθ θθθ 从键盘输入 m 1 、 m 2 和θ的值,求 N a a 121、、和 N 2 的值。其中g 取9.8,输入θ时以角度为单位。 程序设计: 函数文件in.m: function [a1,a2,N1,N2]=in(m1,m2,t) g=9.8; A=[m1*cos(t) -m1 -sin(t) 0;m1*sin(t) 0 cos(t) 0;0 m2 -sin(t) 0;0 0 -cos(t) 1]; C=[0;m1*g;0;m2*g]; B=inv(A)*C; a1=B(1); a2=B(2); N1=B(3); N2=B(4); end 调用in.m 的命令文件: >> m1=1;m2=2;t=30*pi/180; >> [a1,a2,N1,N2]=in(m1,m2,t) 运行结果: a1 = 6.5333 a2 = 1.8860 N1 = 7.5440 N2 = 26.1333 4.设 f(x)= 01 .01 1 .01 ) 3() 2(4 2 +++--x x , 编写一个MATLAB 函数文件fx.m ,使得调用f(x)时,x 可用矩阵代入,得出的f(x)为同阶矩阵。 程序设计: 函数文件fx.m: function A=fx(x) A=1./((x-2).^2+0.1)+1./(((x-3).^4)+0.01) end 调用fx.m 的命令文件: >> A=fx([1 2;2 3;4 3]) 运行结果: A = 0.9716 10.9901 10.9901 100.9091 1.2340 100.9091 5.已知y= ) 20()30() 40(f f f + (1)当f(n)=n+10ln(n 2+5)时,求y 的值。

MATLAB数学实验报告

Matlab 数学实验报告

一、实验目的 通过以下四组实验,熟悉MATLAB的编程技巧,学会运用MATLAB的一些主要功能、命令,通过建立数学模型解决理论或实际问题。了解诸如分岔、混沌等概念、学会建立Malthu模型和Logistic 模型、懂得最小二乘法、线性规划等基本思想。 二、实验内容 2.1实验题目一 2.1.1实验问题 Feigenbaum曾对超越函数y=λsin(πx)(λ为非负实数)进行了分岔与混沌的研究,试进行迭代格式x k+1=λsin(πx k),做出相应的Feigenbaum图 2.1.2程序设计 clear;clf; axis([0,4,0,4]); hold on for r=0:0.3:3.9 x=[0.1]; for i=2:150 x(i)=r*sin(3.14*x(i-1)); end pause(0.5) for i=101:150

plot(r,x(i),'k.'); end text(r-0.1,max(x(101:150))+0.05,['\it{r}=',num2str(r)]) end 加密迭代后 clear;clf; axis([0,4,0,4]); hold on for r=0:0.005:3.9 x=[0.1];

for i=2:150 x(i)=r*sin(3.14*x(i-1)); end pause(0.1) for i=101:150 plot(r,x(i),'k.'); end end 运行后得到Feigenbaum图

2.2实验题目二 2.2.1实验问题 某农夫有一个半径10米的圆形牛栏,长满了草。他要将一头牛拴在牛栏边界的桩栏上,但只让牛吃到一半草,问拴牛鼻子的绳子应为多长? 2.2.2问题分析 如图所示,E为圆ABD的圆心,AB为拴牛的绳子,圆ABD为草场,区域ABCD为牛能到达的区域。问题要求区域ABCD等于圆ABC 的一半,可以设BC等于x,只要求出∠a和∠b就能求出所求面积。先计算扇形ABCD的面积,2a÷π×πx2=2aπ2,再求AB的面积,用扇形ABE的面积减去三角形ABE的面积即可。

(完整版)Matlab实验5选择结构程序结构

实验五、选择与循环结构 一、实验目的: 1、 掌握建立和执行M 文件的方法。 2、 掌握利用if 语句实现选择结构的方法。 3、 掌握利用switch 语句实现多分支选择结构的方法。 4、 掌握try 语句的使用。 5、 掌握利用for 语句实现循环结构的方法。 6、 掌握利用while 语句实现循环结构的方法。 7、 熟悉利用向量运算来代替循环的操作方法。 二、实验内容: 1、 列分段函数的值。 ?? ???--≠≠<≤+--≠<-+=其他且且,632,100,6530,6222x x x x x x x x x x x y 要求: (1) 用if 语句实现,分别输出x =-0.5,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。 提示:x 的值从键盘输入,可以是向量。 %homework_5_1_1.m x=input('请输入x 的值:x='); if (x<0 & x~=-3) y= x.*x + x - 6 elseif (x>=0 & x<10 & x~=2 & x~=3) y=x.*x-5.*x+6 else y=x.*x-x-6 end >> homework_5_1 请输入x 的值:x=[-0.5 -3.0 1.0 2.0 2.5 3.0 5.0] y = -5.2500 6.0000 -6.0000 -4.0000 -2.2500 0 14.0000 (2) 用逻辑表达式实现上述函数。 %homework_5_1_2.m x=input('请输入x 的值:x=') y=(x<0 & x~=-3).*(x.*x+x-6)... +(x>=0 & x<10 &x~=2 &x~=3).*(x.*x-5.*x+6)... +(x>=10 | x==-3 | x==3 | x==2).*(x.*x-x-6) >> homework_5_1_2 请输入x=[-0.5 -3.0 1.0 2.0 2.5 3.0 5.0] x = -0.5000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000 y = -6.2500 6.0000 2.0000 -4.0000 -0.2500 0 6.0000

实验五MATLAB的基本绘图方法

实验三MATLAB的基本绘图方法 一、实验目的 1.二维平面图形的绘制 2.三维立体图形的绘制 3.隐函数作图 二、实验地点:A404 三、实验日期: 四、实验内容 (一)二维平面图形的绘制 1、Plot的使用方法介绍 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当x 为m×n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,…元素为纵坐标值绘制多条曲线。 例1:画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 注:在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MA TLAB 软件专门提供了这方面的参数选项,我们只要在每个坐标后加上相关字符串,就可实现它们的功能。具体参见教材。 2、图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 图形修饰函数表如下: 函数含义 grid on (/off) 给当前图形标记添加(取消)网络 xlable(‘string’) 标记横坐标 ylabel(‘string’) 标记纵坐标 title(‘string’) 给图形添加标题 text(x,y,’string’) 在图形的任意位置增加说明性文本信息 gtext(‘string’) 利用鼠标添加说明性文本信息 axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值 例2、给例1的图形中加入网络和标记。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2)

Matlab数学实验一2015(标准答案版)

Matlab数学实验一——matlab初体验 一、实验目的及意义 [1] 熟悉MATLAB软件的用户环境; [2] 了解MATLAB软件的一般目的命令; [3] 掌握MATLAB数组操作与运算函数; 通过该实验的学习,使学生能熟悉matlab的基础应用,初步应用MATLAB软件解决一些简单问题。 二、实验内容 1.认识matlab的界面和基本操作 2.了解matlab的数据输出方式(format) 3. MATLAB软件的数组(矩阵)操作及运算练习; 三、实验任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→原理→算法与编程→计算结果或图形→心得体会) 完成如下题目,并按照实验报告格式和要求填写实验报告 1.在commandwindow中分别输入如下值,看它们的值等于多少,并用matlab的help中查询这些缺省预定义变量的含义,用中文写出它们的意义。 ijeps inf nan pi realmaxrealmin 2.分别输入一个分数、整数、小数等,(如:a=1/9),观察显示结果,并使用format函数控制数据的显示格式,如:分别输入format short、format long、format short e、format long g、format bank、format hex等,然后再在命令窗口中输入a,显示a的值的不同形式,并理解这些格式的含义。 3.测试函数clear、clc的含义及所带参数的含义(利用matlab的help功能)。 4. 写出在命令窗口中的计算步骤和运行结果。 (1)计算 1.22 10 (ln log) 81 e ππ +- ; >>(log(pi)+log(pi)/log(10)-exp(1.2))^2/81 >>ans = 0.0348 (2) >> x=2;y=4; >> z=x^2+exp(x+y)-y*log(x)-3 z = 401.6562 (3)输入变量 13 5.3, 25 a b ?? ==?? ?? ,在工作空间中使用who,whos,并用save命令将变量存入”D:\exe0 1.mat”文件。测试clear命令,然后用load命令将保存的”D:\exe01.mat”文件载入>> a=5.3 a=

Matlab实验

MATLAB实验报告 学校:湖北文理学院 学院:物理与电子工程学院 专业:电子信息工程 学号: 2013128182 姓名:张冲 指导教师:宋立新

实验一 MATLAB环境的熟悉与基本运算 一、实验目的: 1.熟悉MATLAB开发环境 2.掌握矩阵、变量、表达式的各种基本运算 二、实验内容 1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明, 学习使用指令eye(其它不会用的指令,依照此方法类推) 2、学习使用clc、clear,观察command window、command history和workspace 等窗口的变化结果。 3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、 exerc2、exerc3……),学习使用MATLAB的基本运算符。 三、练习 1)help rand,然后随机生成一个2×6的数组,观察command window、 command history和workspace等窗口的变化结果。 2)学习使用clc、clear,了解其功能和作用。 3)用逻辑表达式求下列分段函数的值 4)求[100,999]之间能被21整除的数的个数。(提示:rem,sum的用法) 四、实验结果 1)

2)clc:清除命令窗口所有内容,数值不变;clear:初始化变量的值。3) 4)

实验二 MATLAB数值运算 一、实验目的 1、掌握矩阵的基本运算 2、掌握矩阵的数组运算 二、实验内容 1)输入C=1:2:20,则C(i)表示什么?其中i=1,2,3, (10) 2)输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗 口中执行下列表达式,掌握其含义: A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A 3)二维数组的创建和寻访,创建一个二维数组(4×8)A,查询数组A第2 行、第3列的元素,查询数组A第2行的所有元素,查询数组A第6列的所有 元素。 4)两种运算指令形式和实质内涵的比较。设有3个二维数组A 2×4,B 2×4 ,C 2×2 , 写出所有由2个数组参与的合法的数组运算和矩阵指令。 5)学习使用表4列的常用函数(通过help方法) 6)学习使用表5数组操作函数。 7)生成一个3行3列的随机矩阵,并逆时针旋转90°,左右翻转,上下翻转。 8)已知a=[1 2 3],b=[4 5 6],求a.\b和a./ b 9)用reshape指令生成下列矩阵,并取出方框内的数组元素。 三、实验结果 1)C(i)表示C中的第i个的数值;

MATLAB数学实验A

clear; clc; a=1;b=1; ezplot(sprintf('x^2/%f-y^2/%f',a^2,b^2)); hold on; ezplot(sprintf('x^2/%f-y^2/%f-1',a^2,b^2)); ezsurf('sin(a)*cos(b)','sin(a)*sin(b)','cos(a)',[0,pi,0,2*pi],60); hold on; ezsurf('x^2+y^2',[-1,1,-1,1],60);

clear all; x=-8:0.1:8; y=-8:0.1:8; [X,Y]=meshgrid(x,y); Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2+2); [X,Y,Z]=peaks(50); surf(X,Y,Z)

syms x y; y=2*x^3-6*x^2-18*x+7; solve(diff(y,x),x) x=-1;eval(y) x=3;eval(y)

syms x y; z='x*y'; dblquad(z,1,4,-1,2) 结果 ans = 11.2500 求函数1+x -exp(2*x)+5的原函数clear all syms x C; f=int(1+x -exp(2*x)+5,'x')+C syms x y; >> x=0:0.01:1; >> y=sin(sin(x)); >> trapz(x,y)

x=0:0.05:1; y=[1.97687 2.17002 2.34158 2.46389 2.71512 3.06045 3.27829 3.51992 3.8215 4.2435 4.55188 4.88753 5.15594 5.698 6.04606 6.42701 7.00342 7.50192 7.89178 8.49315 9.0938] cftool 解常微分方程y’=-0.9y/(1+2x)的数值解y(0)=1 从0到0. 1的数值解,取步长0.02 clear all x1=0; x2=0.1; h=0.02; y(1,1)=1;

matlab数学实验练习题

Matlab 数学实验 实验一 插值与拟合 实验内容: 预备知识:编制计算拉格朗日插值的M 文件。 1. 选择一些函数,在n 个节点上(n 不要太大,如5 ~ 11)用拉格朗日、分段线性、三次样条三种插值方法,计算m 个插值点的函数值(m 要适中,如50~100)。通过数值和图形输出,将三种插值结果与精确值进行比较。适当增加n ,再做比较,由此作初步分析。下列函数任选一种。 (1)、 ;20,sin π≤≤=x x y (2)、;11,)1(2/12≤≤--=x x y (3)、;22,cos 10≤≤-=x x y (4)、22),ex p(2≤≤--=x x y 2.用电压V=10伏的电池给电容器充电,电容器上t 时刻的电压为 ) (0)()(τt e V V V t v ---=,其中0V 是电容器的初始电压,τ是充电常数。试由下面 一组t ,V 数据确定0V 和τ。 实验二 常微分方程数值解试验 实验目的: 1. 用MATLAB 软件求解微分方程,掌握Euler 方法和龙格-库塔方法; 2. 掌握用微分方程模型解决简化的实际问题。 实验内容: 实验三 地图问题 1. 下图是一个国家的地图,为了计算出它的国土面积,首先对地图作如下测量:以由西向东方向为x 轴,由南到北方向为y 轴,选择方便的原点,并将从最西边界点到最东边界点在x 轴上的区间适当地划分为若干段,在每个分点的y 方向测出南边界点和北边界点的y 坐标y1和y2,这样就得到了表中的数据(单位mm )。

根据地图的比例我们知道18mm相当于40km,试由测量数据计算该国土 2 实验四狼追兔问题 狼猎兔问题是欧洲文艺复兴时代的著名人物达.芬奇提出的一个数学问题。当一个兔子正在它的洞穴南面60码处觅食时,一只恶狼出现在兔子正东的100码处。当两只动物同时发现对方以后,兔子奔向自己的洞穴,狼以快于兔子一倍的速度紧追兔子不放。狼在追赶过程中所形成的轨迹就是追击曲线。狼是否会在兔子跑回洞穴之前追赶上兔子? 为了研究狼是否能够追上兔子,可以先考虑求出狼追兔子形成的追击曲线,然后根据曲线来确定狼是否能够追上兔子。 试验五:开放式基金的投资问题 某开放式基金现有总额为15亿元的资金可用于投资,目前共有8个项目可供投资者选择。每个项目可以重复投资,根据专家经验,对每个项目投资总额不能太高,且有个上限。这些项目所需要的投资额已经知道,在一般情况下,投资一年后各项目所得利润也可估计出来(见表一), 表一: 投资项目所需资金及预计一年后所得利润(单位:万元)

实验5 Matlab绘图操作实验报告

Tutorial 5 实验报告 实验名称:Matlab 绘图操作 实验目的: 1、 掌握绘制二维图形的常用函数; 2、 掌握绘制三维图形的常用函数; 3、 掌握绘制图形的辅助操作。 实验内容: 1. 设sin .cos x y x x ?? =+ ??+?? 23051,在x=0~2π区间取101点,绘制函数的曲线。 2. 已知: y x =21,cos()y x =22,y y y =?312,完成下列操作: (1) 在同一坐标系下用不同的颜色和线性绘制三条曲线; (2) 以子图形式绘制三条曲线; (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 3. 已知:ln(x y x x ≤=??+>??0102 ,在x -≤≤55区间绘制函数曲线。 4. 绘制极坐标曲线sin()a b n ρθ=+,并分析参数a 、b 、n 对曲线形状的影响。 5.在xy 平面内选择区域[][],,-?-8888, 绘制函数z =的三种三维曲面图。 6. 用plot 函数绘制下面分段函数的曲线。 ,(),,x x f x x x x ?+>? ==??+

8. 在同一坐标轴中绘制下列两条曲线。 (1).y x =-205 (2)sin()cos ,sin()sin x t t t y t t π=?≤≤? =?303 实验结果: 1. 2. (1)

(2)

(3)

相关主题
文本预览
相关文档 最新文档