第八章 matlab软件快速入门

第八章 matlab软件快速入门
第八章 matlab软件快速入门

198

第八章 Matlab软件快速入门

8.1 Matlab概述

MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。

20世纪80年代初期,Cleve Moler与John Little等利用C语言开发了新一代的MATLAB 语言,此时的MATLAB语言已同时具备了数值计算功能和简单的图形处理功能。1984年,Cleve Moler与John Little等正式成立了Mathworks公司,把MATLAB语言推向市场,并开始了对MATLAB工具箱等的开发设计。

现在,MATLAB已经发展成为适合多学科的大型软件,已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具。

MATLAB系统由两部分组成,即MATLAB内核及辅助工具箱,两者的调用构成了MATLAB 的强大功能。MATLAB语言以数组为基本数据单位,包括控制流语句、函数、数据结构、输入输出及面向对象等特点的高级语言,它具有以下主要特点:

1)运算符和库函数极其丰富,语言简洁,编程效率高,MATLAB除了提供和C语言一样的运算符号外,还提供广泛的矩阵和向量运算符。

2)既具有结构化的控制语句(如for循环、while循环、break语句、if语句和switch 语句),又有面向对象的编程特性。

3)图形功能强大。它既包括对二维和三维数据可视化、图像处理、动画制作等高层次的绘图命令,也包括可以修改图形及编制完整图形界面的、低层次的绘图命令。

4)功能强大的工具箱。工具箱可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互的功能。而学科性工具箱是专业性比较强的,如优化工具箱、统计工具箱、控制工具箱、小波工具箱、图象处理工具箱、通信工具箱等。

5)易于扩充。除内部函数外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可修改源文件和加入自己的文件,它们可以与库函数一样被调用。

199

8.2 MATLAB的开发环境

MATLAB的开发环境就是在使用MATLAB的过程中可激活的,并且为用户使用提供支持的集成系统。这里介绍比较重要的如:桌面平台系统、帮助系统。

8.2.1 MATLAB桌面平台

桌面平台是各桌面组件的展示平台,默认设置情况下的桌面平台包括6个窗口,具体如下:

MATLAB主窗口

MATLAB6比早期版本增加了一个主窗口。该窗口不能进行任何计算任务的操作,只用来进行一些整体的环境参数的设置。

命令窗口(Command Window)

命令窗口是对MATLAB进行操作的主要载体,默认的情况下,启动MATLAB时就会打开命令窗口,显示形式如图1-1所示。一般来说,MATLAB的所有函数和命令都可以在命令窗口中执行。在MATLAB命令窗口中,命令的实现不仅可以由菜单操作来实现,也可以由命令行操作来执行,下面就详细介绍MALTAB命令行操作。

实际上,掌握MALAB命令行操作是走入MATLAB世界的第一步,命令行操作实现了对程序设计而言简单而又重要的人机交互,通过对命令行操作,避免了编程序的麻烦,体现了MATLAB所特有的灵活性。

例如:

%在命令窗口中输入sin(pi/5),然后单击回车键,则会得到该表达式的值

sin(pi/5)

ans=

0.5878

由例可以看出,为求得表达式的值,只需按照MALAB语言规则将表达式输入即可,结果会自动返回,而不必像其他的程序设计语言那样,编制冗长的程序来执行。当需要处理相当繁琐的计算时,可能在一行之内无法写完表达式,可以换行表示,此时需要使用续行符“……”否则MATLAB将只计算一行的值,而不理会该行是否已输入完毕。

例如:

sin(1/9*pi)+sin(2/9*pi)+sin(3/9*pi)+……

sin(4/9*pi)+sin(5/9*pi)+sin(6/9*pi)+……

sin(7/9*pi)+sin(8/9*pi)+sin(9/9*pi)+……

200 ans=

5.6713

使用续行符之后MATLAB会自动将前一行保留而不加以计算,并与下一行衔接,等待完整输入后再计算整个输入的结果。

“↑”

在MATLAB命令行操作中,有一些键盘按键可以提供特殊而方便的编辑操作。比如:

可用于调出前一个命令行,“↓”可调出后一个命令行,避免了重新输入的麻烦。当然下面即将讲到的历史窗口也具有此功能。

历史窗口(Command History)

历史命令窗口是MATLAB6新增添的一个用户界面窗口,默认设置下历史命令窗口会保留自安装时起所有命令的历史记录,并标明使用时间,以方便使用者的查询。而且双击某一行命令,即在命令窗口中执行该命令。

发行说明书窗口(Launch Pad)

发行说明书窗口是MATLAB6所特有的,用来说明用户所拥有的Mathworks公司产品的工具包、演示以及帮助信息。当选中该窗口中的某个组件之后,可以打开相应的窗口工具包。

当前目录窗口(Current Directory )

在当前目录窗口中可显示或改变当前目录,还可以显示当前目录下的文件,包括文件名、文件类型、最后修改时间以及该文件的说明信息等并提供搜索功能。

工作空间管理窗口(Workspace)

工作空间管理窗口是MATLAB的重要组成部分。在工作空间管理窗口中将显示所有目前保存在内存中的MATLAB变量的变量名、数据结构、字节数以及类型,而不同的变量类型分别对应不同的变量名图标。

8.2.2 MATLAB帮助系统

完善的帮助系统是任何应用软件必要的组成部分。MATLAB提供了相当丰富的帮助信息,同时也提供了获得帮助的方法。首先,可以通过桌面平台的【Help】菜单来获得帮助,也可以通过工具栏的帮助选项获得帮助。此外,MATLAB也提供了在命令窗口中的获得帮助的多种方法,在命令窗口中获得MATLAB帮助的命令及说明列于表7.3-1中。其调用格式为:

命令+指定参数

表7.3-1

例如:

>>help sin

SIN Sine

SIN(X) is the sine of the elements of X

Overloaded methods

Help sym/sin.m

另外也可以通过在组件平台中调用演示模型(demo)来获得特殊帮助。

8.3 Matlab基本量

MATLAB强大的数值计算功能使其在诸多数学计算软件中傲视群雄,是MATLAB软件的基础。本节将简要介绍MATLAB的数据类型、矩阵的建立及运算。

8.3.1 MATLAB 数据类型

MATLAB的数据类型主要包括:数字、字符串、矩阵、单元型数据及结构型数据等,限于篇幅我们将重点介绍其中几个常用类型。

变量与常量

变量是任何程序设计语言的基本要素之一,MATLAB语言当然也不例外。与常规的程序设计语言不同的MATLAB并不要求事先对所使用的变量进行声明,也不需要指定变量类型,MATLAB语言会自动依据所赋予变量的值或对变量所进行的操作来识别变量的类型。在赋值过程中如果赋值变量已存在时,MATLAB语言将使用新值代替旧值,并以新值类型代替旧值类型。

在MATLAB语言中变量的命名应遵循如下规则:

(1)变量名区分大小写。

(2)变量名长度不超31位,第31个字符之后的字符将被MATLAB语言所忽略。

202 (3)变量名以字母开头,可以是字母、数字、下划线组成,但不能使用标点。

与其他的程序设计语言相同,在MATLAB语言中也存在变量作用域的问题。在未加特殊说明的情况下,MATLAB语言将所识别的一切变量视为局部变量,即仅在其使用的M文件内有效。若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字global。一般来说全局变量均用大写的英文字符表示。

MATLAB语言本身也具有一些预定义的变量,这些特殊的变量称为常量。表8.3-1给出了MATLAB语言中经常使用的一些常量值。

表8.3-1

在MATLAB语言中,定义变量时应避免与常量名重复,以防改变这些常量的值,如果已改变了某外常量的值,可以通过“clear+常量名”命令恢复该常量的初始设定值(当然,也可通过重新启动MATLAB系统来恢复这些常量值)。

数字变量的运算及显示格式

MALAB是以矩阵为基本运算单元的,而构成数值矩阵的基本单元是数字。为了更好地学习和掌握矩阵的运算,首先对数字的基本知识作简单的介绍。

对于简单的数字运算,可以直接在命令窗口中以平常惯用的形式输入,如计算2和3的乘积再加1时,可以直接输入:

>> 1+2*3

ans=

7

这里“ans”是指当前的计算结果,若计算时用户没有对表达式设定变量,系统就自动赋当前结果给“ans”变量。用户也可以输入:

>> a=1+2*3

a=

7

203 此时系统就把计算结果赋给指定的变量a了。

MATLAB语言中数值有多种显示形式,在缺省情况下,若数据为整数,则就以整数表示;若数据为实数,则以保留小数点后4位的精度近似表示。MATLAB语言提供了10种数据显示格式,常用的有下述几种格式:

short 小数点后4位(系统默认值)

long 小数点后14位

short e 5位指数形式

long e 15位指数形式

MATLAB语言还提供了复数的表达和运算功能。在MATLAB语言中,复数的基本单位表示为i或j。在表达简单数数值时虚部的数值与i、j之间可以不使用乘号,但是如果是表达式,则必须使用乘号以识别虚部符号。

字符串

字符和字符串运算是各种高级语言必不可少的部分,MATLAB中的字符串是其进行符号运算表达式的基本构成单元。

在MATLAB中,字符串和字符数组基本上是等价的;所有的字符串都用单引号进行输入或赋值(当然也可以用函数char来生成)。字符串的每个字符(包括空格)都是字符数组的一个元素。例如:

>>s=’matrix laboratory’;

s=

matrix laboratory

>> size(s) % size查看数组的维数

ans=

1 17

8.3.2 矩阵及其运算

矩阵是MATLAB数据存储的基本单元,而矩阵的运算是MATLAB语言的核心,在MATLAB 语言系统中几乎一切运算均是以对矩阵的操作为基础的。下面重点介绍矩阵的生成、矩阵的基本运算和矩阵的数组运算。

8.3.2.1矩阵的生成

直接输入法

从键盘上直接输入矩阵是最方便、最常用的创建数值矩阵的方法,尤其适合较小的简单矩阵。在用此方法创建矩阵时,应当注意以下几点:

204

●输入矩阵时要以“[ ]”为其标识符号,矩阵的所有元素必须都在括号内。

●矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔。

●矩阵大小不需要预先定义。

●矩阵元素可以是运算表达式。

●若“[ ]”中无元素表示空矩阵。

另外,在MATLAB语言中冒号的作用是最为丰富的。首先,可以用冒号来定义行向量。

例如:

>> a=1:0.5:4

a=

Columns 1 through 7

1 1.5

2 2.5

3 3.5 4

其次,通过使用冒号,可以截取指定矩阵中的部分。

例如:

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

A=

1 2 3

4 5 6

7 8 9

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

B=

1 2 3

4 5 6

通过上例可以看到B是由矩阵A的1到2行和相应的所有列的元素构成的一个新的矩阵。在这里,冒号代替了矩阵A的所有列。

2.外部文件读入法

MATLAB语言也允许用户调用在MATLAB环境之外定义的矩阵。可以利用任意的文本编辑器编辑所要使用的矩阵,矩阵元素之间以特定分断符分开,并按行列布置。另外也可以利用load函数,其调用方法为: Load+文件名[参数]

Load函数将会从文件名所指定的文件中读取数据,并将输入的数据赋给以文件名命名的变量,如果不给定文件名,则将自动认为matlab.mat文件为操作对象,如果该文件在MATLAB

205 搜索路径中不存在时,系统将会报错。

例如:事先在记事本中建立文件: 1 1 1

(并以data1.txt保存) 1 2 3

1 3 6

在MATLAB命令窗口中输入:

>> load data1.txt

>> data1

data1=

1 1 1

1 2 3

1 3 6

3.特殊矩阵的生成

对于一些比较特殊的矩阵(单位阵、矩阵中含1或0较多),由于其具有特殊的结构,MATLAB提供了一些函数用于生成这些矩阵。常用的有下面几个:

zeros(m) 生成m阶全0矩阵

eye(m) 生成m阶单位矩阵

ones(m) 生成m阶全1矩阵

rand(m) 生成m阶均匀分布的随机阵

randn(m) 生成m阶正态分布的随机矩阵

8.3.2.2 矩阵的基本数学运算

矩阵的基本数学运算包括矩阵的四则运算、与常数的运算、逆运算、行列式运算、秩运算、特征值运算等基本函数运算,这里进行简单介绍。

1.四则运算

矩阵的加、减、乘运算符分别为“+,—,*”,用法与数字运算几乎相同,但计算时要满足其数学要求(如:同型矩阵才可以加、减)。

在MATLAB中矩阵的除法有两种形式:左除“\”和右除“/”。在传统的MATLAB算法中,右除是先计算矩阵的逆再相乘,而左除则不需要计算逆矩阵直接进行除运算。通常右除要快一点,但左除可避免被除矩阵的奇异性所带来的麻烦。

2.与常数的运算

常数与矩阵的运算即是同该矩阵的每一元素进行运算。但需注意进行数除时,常数通常只能做除数。

206 3.基本函数运算

矩阵的函数运算是矩阵运算中最实用的部分,常用的主要有以下几个:det(a) 求矩阵a的行列式

eig(a) 求矩阵a的特征值

inv(a)或a ^ (-1) 求矩阵a的逆矩阵

rank(a) 求矩阵a的秩

trace(a) 求矩阵a的迹(对角线元素之和)

例如: >> a=[2 1 –3 –1; 3 1 0 7; -1 2 4 –2; 1 0 –1 5];

>> a1=det(a);

>> a2=det(inv(a));

>> a1*a2

ans=

1

注意:命令行后加“;”表示该命令执行但不显示执行结果。

8.3.2.3 矩阵的数组运算

我们在进行工程计算时常常遇到矩阵对应元素之间的运算。这种运算不同于前面讲的数学运算,为有所区别,我们称之为数组运算。

1.基本数学运算

数组的加、减与矩阵的加、减运算完全相同。而乘除法运算有相当大的区别,数组的乘除法是指两同维数组对应元素之间的乘除法,它们的运算符为“.*”和“./”或“.\”。前面讲过常数与矩阵的除法运算中常数只能做除数。在数组运算中有了“对应关系”的规定,数组与常数之间的除法运算没有任何限制。

另外,矩阵的数组运算中还有幂运算(运算符为.^ )、指数运算(exp)、对数运算(log)、和开方运算(sqrt)等。有了“对应元素”的规定,数组的运算实质上就是针对数组内部的每个元素进行的。

例如:

>> a=[2 1 -3 -1; 3 1 0 7; -1 2 4 -2; 1 0 -1 5];

>> a^3

ans=

32 -28 -101 34

99 -12 -151 239

207 -1 49 93 8

51 -17 -98 139

>> a .^3

ans=

8 1 -27 -1

27 1 0 343

-1 8 64 -8

1 0 -1 125

由上例可见矩阵的幂运算与数组的幂运算有很大的区别。

2.逻辑关系运算

逻辑运算是MATLAB中数组运算所特有的一种运算形式,也是几乎所有的高级语言普遍适用的一种运算。它们的具体符号、功能及用法见表7.3-2。

表7.3-2

说明:

●在关系比较中,若比较的双方为同维数组,则比较的结果也是同维数组。它的元

素值由0和1组成。当比较双方对应位置上的元素值满足比较关系时,它的对

应值为1,否则为0。

●当比较的双方中一方为常数,另一方为一数组,则比较的结果与数组同维。

●在算术运算、比较运算和逻辑与、或、非运算中,它们的优先级关系先后为:

比较运算、算术运算、逻辑与或非运算。

例如:

208 >>a=[1 2 3; 4 5 6; 7 8 9];

>> x=5;

>> y= ones(3)*5;

>> xa= x<=a

xa=

0 0 0

0 1 1

1 1 1

>> b=[0 1 0; 1 0 1; 0 0 1];

>> ab=a&b

ab=

0 1 0

1 0 1

0 0 1

8.4 MATLAB数值计算

MATLAB数值分析方法主要讲述Matlab软件用于函数插值与最小二乘法拟合的方法,以及最优化求解工具箱的使用。

8.4.1函数插值与最小二乘法拟合

插值与拟合是来源于实际、又广泛应用于实际的两种重要方法。随着计算机的不断发展及计算水平的不断提高,它们已在国民生产和科学研究等方面扮演着越来越重要的角色。下面对插值中分段线性插值、拟合中的最为重要的最小二乘法拟合加以介绍。

8.4.1.1 分段线性插值

所谓分段线性插值就是通过插值点用折线段连接起来逼近原曲线,这也是计算机绘制图形的基本原理。实现分段线性插值不需编制函数程序,MATLAB自身提供了内部函数interp1其主要用法如下:

interp1(x,y,xi) 一维插值

◆ yi=interp1(x,y,xi)

对一组点(x,y) 进行插值,计算插值点xi的函数值。x为节点向量值,y为对应的节点函数值。如果y 为矩阵,则插值对y 的每一列进行,若y 的维数超出x 或 xi 的维数,

209

则返回NaN 。 ◆ yi=interp1(y,xi)

此格式默认x=1:n ,n 为向量y 的元素个数值,或等于矩阵y 的size(y,1)。 ◆ yi=interp1(x,y,xi,’method’)

method 用来指定插值的算法。默认为线性算法。其值常用的可以是如下的字符串。 ● nearest 线性最近项插值。 ● linear 线性插值。 ● spline 三次样条插值。 ● cubic 三次插值。

所有的插值方法要求x 是单调的。x 也可能并非连续等距的。

正弦曲线的插值示例: >> x=0:0.1:10; >> y=sin(x); >> xi=0:0.25:10; >> yi=interp1(x,y,xi); >> plot(x,y,’0’,xi,yi)

则可以得到相应的插值曲线(读者可自己上机实验)。

Matlab 也能够完成二维插值的运算,相应的函数为interp2,使用方法与interpl 基本相同,只是输入和输出的参数为矩阵,对应于二维平面上的数据点,详细的用法见Matlab 联机帮助。

8.4.1.2 最小二乘法拟合

在科学实验的统计方法研究中,往往要从一组实验数据),(i i y x 中寻找出自变量x 和因变量y 之间的函数关系y=f(x) 。由于观测数据往往不够准确,因此并不要求y=f(x)经过所有的点 ),(i i y x ,而只要求在给定点i x 上误差i i i y x f -=)(δ按照某种标准达到最小,通常采用欧氏范数2

δ

作为误差量度的标准。这就是所谓的最小二乘法。在MATLAB 中实现最小

二乘法拟合通常采用polyfit 函数进行。

函数polyfit 是指用一个多项式函数来对已知数据进行拟合,以下列数据为例介绍这个函数的用法:

>> x=0:0.1:1;

>> y=[ -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30

210

11.2 ]

为了使用polyfit,首先必须指定我们希望以多少阶多项式对以上数据进行拟合,如果指定一阶多项式,结果为线性近似,通常称为线性回归。选择二阶多项式进行拟合。

>> P= polyfit (x, y, 2)

P=

-9.8108 20.1293 -0.0317

函数返回的是一个多项式系数的行向量,写成多项式形式为:

.92-

+

8108

x

-x

.0

0317

20

1293

.

为了比较拟合结果,绘制两者的图形:

>> xi=linspace (0, 1, 100); %绘图的X-轴数据。

>> Z=polyval (p, xi); %得到多项式在数据点处的值。

当然,也可以选择更高幂次的多项式进行拟合,如10阶:

>> p=polyfit (x, y, 10);

>> xi=linspace (0, 1,100);

>> z=ployval (p, xi);

读者可以上机绘图进行比较,曲线在数据点附近更加接近数据点的测量值了,但从整体上来说,曲线波动比较大,并不一定适合实际使用的需要,所以在进行高阶曲线拟合时,“越高越好”的观点不一定对的。

8.4.2 优化工具箱及其应用

在工程设计、经济管理和科学研究等诸多领域中,人们常常会遇到这样的问题:如何从一切可能的方案中选择最好、最优的方案,在数学上把这类问题称为最优化问题。这类问题很多,例如当设计一个机械零件时如何在保证强度的前提下使重量最轻或用量最省(当然偷工减料除外);如何确定参数,使其承载能力最高;在安排生产时,如何在现有的人力、设备的条件下,合理安排生产,使其产品的总产值最高;在确定库存时如何在保证销售量的前提下,使库存成本最小;在物资调配时,如何组织运输使运输费用最少。这些都属于最优化问题所研究的对象。

MATLAB的优化工具箱被放在toolbox目录下的optim子目录中,其中包括有若干个常用的求解函数最优化问题的程序。MATLAB的优化工具箱也在不断地完善。不同版本的MATLAB,其工具箱不完全相同。在MATLAB5.3版本中,对优化工具箱作了全面的改进。每个原有的常用程序都重新编制了一个新的程序。除fzero和fsolve外都重新起了名字。

211

这些新程序使用一套新的控制算法的选项。与原有的程序相比,新程序的功能增强了。在MATLAB5.3和6.0版本中,原有的优化程序(除fzero 和fsolve 外)仍然保留并且可以使用,但是它们迟早会被撤消的。鉴于上述情况,这里只介绍那些新的常用的几个优化程序。

8.4.2.1 线性规划问题

线性规划是最优化理论发展最成熟,应用最广泛的一个分支。在MATLAB 的优化工具箱中用于求解下述线性规划的问题

cx z =min

??

?

??≤≤=≤)(,)(,)(,..11有界约束线性等式约束线性不等式约束

UB x LB b x A b Ax t s

求解函数是linprog ,其主要格式为:

[x, fval, exitflag, output, lambda]= linprog(c, A, b, A1, b1 , LB, UB, x0, options)

其中,linprog 为函数名,中括号及小括号中所含的参数都是输入或输出变量,这些参数的主要用法及说明如下:

(1)c, A 和b 是不可缺省的输入宗量;x 是不可缺省的输出宗量,它是问题的解。 (2)当x 无下界时,在LB 处放置[ ]。当无上界时,在UB 处放置[ ]。 如果x 的某个分量i x 无下界,则置LB(i )=-inf. 如果i x 无上界,则置UB(i )=inf. 如果无线性不等式约束,则在A 和b 处都放置[ ]。 (3)x0是解的初始近似值。

(4)options 是用来控制算法的选项参数向量。 (5)输出宗量fval 是目标函数在解x 处的值。

(6)输出宗量exitflag 的值描述了程序的运行情况。如果exitflag 的值大于0,则程序收敛于解x ;如果exitflag 的值等于0,则函数的计算达到了最大次数;如果exitflag 的值小于0,则问题无可行解,或程序运行失败。 (7)输出宗量output 输出程序运行的某些信息。 (8)输出宗量Lambda 为在解x 处的值 Lagrange 乘子。 例:求解线性规划问题 min 3212x x x z +--=,

212

???????????≤≥≥≤+-≤-+=++50012

224

462..321321321

321x x x x x x x x x x x x t s

解:在命令窗口中键入

>> c=[-2,-1,1]; a=[1,4,-1; 2,-2,1]; b=[4; 12]; a1=[1,1,2]; b1=6; >> lb=[0; 0; -inf]; ub=[inf; inf; 5]; >> [x, z]=linprog(c,a,b,a1,b1,1b,ub) 运行后得到:

x= 4.6667 0.0000 0.6667 z=

-8.6667

8.4.2.2 非线性约束最优化

在MATLAB 的优化工具箱中有一个求解下述非线性规划的问题 )(min x f

?????

??

??≤≤≤≤=≤)(,)(,0)()(,0)()(,)(,..111有界约束非线性等式约束非线性不等式约束线性等式约束

线性不等式约束UB x LB x C x C b x A b Ax t s

求解函数是fmincon ,其主要格式为:

[x, fval, exitflag, output, lambda, grad, hessian]=fmincon(‘fun’, x0, A, b, A1, b1 , LB,

UB, ‘nonlcon’, options, p1, p2,……)

其中,fmincon 为函数名,参数的主要用法有的与线性规划中的相同,下面介绍几个非线性规划特有的:

213

(1)‘fun’和x0是不可缺省的输入宗量。fun 是给出目标函数的M 文件的名字,x0是极小值点的初始近似值。x 是不可缺省的输出宗量,它是问题的解。 (2)nonlcon 是给出非线性约束函数)(x C 和)(1x C 的M 文件的文件名。 (3)宗量p1,p2…是向目标函数传送的参数的值。 (4)输出宗量grad 为目标函数在解x 处的梯度。

(5)输出宗量hessian 为目标函数在解x 处的Hessian 矩阵。 例:求解非线性规划问题

min )12424()(2212

22

11++++=x x x x x e x f x ,

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

1005.101..2121212

121x x x x x x x x x x t s ,

解:建立目标函数的M 文件 function y=nline (x)

y=exp (x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); 建立非线性约束条件的M 文件

function [c1, c2]=nyueshu (x)

c1=[1.5+x(1)*x(2)-x(1)-x(2); -x(1)*x(2)-10]; c2=0;

在命令窗口中键入

>> x0=[-1,1]; a=[1, -1]; b=1; a1=[1,1]; b1=0;

>> [x, f]=fmincon (‘nline’, x0, a, b, a1, b1, [ ], [ ], ‘nyueshu’) 运行后得到:

x=

-1.2247 1.2247 f= 1.8951

8.4.2.3 二次规划问题

二次规划数学模型的一般形式为:

cx Hx x T

+2

1min

214

??

?

??≤≤=≤)(,)(,)(,..11有界约束线性等式约束线性不等式约束

UB x LB b x A b Ax t s

其中H 为对称矩阵,约束条件与线型规划相同。在MATLAB 的优化工具箱中有一个求解上述规划问题的程序:

[x, fval, exitflag, output, lambda]= quadprog(H, c, A, b, A1, b1 , LB, UB, x0, options)

其中,quadprog 为函数名,参数的主要用法及说明同线性规划,这里不再赘述。 例求解如下二次优化问题。

212

221108)(min x x x x x f --+=

??

?≥≤+0

,6

23.

.2121x x x x t s 解:将目标函数化为标准形式

()???

? ??--+????

?????? ??=212121

1082002)(2

1)(x x x x x x x f 在命令窗口中键入

>> H=[2, 0; 0, 2]; c=[-8, -10]; a=[3, 2]; b=6; lb=[0, 0]; x0=[1,1]; >> x=quadprog (H, c, a, b, [ ], [ ], lb, [ ], x0) 运行后得到:

x= 0.3077 2.5385

8.4.2.4 foptions 函数

对于优化的控制,MATLAB 共提供了18个参数,这些参数对优化的进行起者很关键的作用。下面就对参数选择函数foptions 作详细介绍。

● foptions 优化函数调用中的参数选择。参数具体意义如下:

options(1) 参数显示控制(默认值为0)。等于1时显示一些结果。 options(2) 优化点x 的精度控制(默认值为1e –4)。 options(3) 优化函数F 的精度控制(默认值为1e –4)。 options(4) 违反约束的结束标准(默认值为1e –6)。 options(5) 策略选择。不常用。

215 options(6) 优化程序方法的选择。值为0时为BFGS算法,值为1时采用DFP 算法。

options(7) 线性插值算法选择。值为0时为混合插值算法,值为1时采用立方插值算法。

options(8) 函数值显示(目标-达到问题中的Lambda)。

options(9) 若需要检测用户提供的导数则设为1。

options(10) 函数和约束求值的数目。

options(11) 函数导数求值的个数。

options(12) 约束求值的数目。

options(13) 等式约束的数目。

options(14) 函数求值的最大次数(默认值为100 变量个数)。

options(15) 用于目标-达到问题中的特殊目标。

options(16) 优化过程中变量的最小梯度值。

options(17) 优化过程中变量的最大梯度值。

options(18) 步长设置(默认值为1或更小)。

8.5 Matlab符号计算

在数学应用中,常常需要做极限、微分、求导数等运算,MATLAB称这些运算为符号运算。MATLAB的符号运算功能是通过调用符号运算工具箱(Symbolic Math Toolbox)内的工具实现,其内核是借用Maple数学软件的。MATLAB的符号运算工具箱包含了微积分运算、化简和代换、解方程等几个方面的工具,其详细内容可通过MATLAB系统的联机帮助查阅,本节仅对它的常用功能做简单介绍。

8.5.1 符号变量与符号表达式

MATLAB符号运算工具箱处理的对象主要是符号变量与符号表达式。要实现其符号运算,首先需要将处理对象定义为符号变量或符号表达式,其定义格式如下:格式1: sym (‘变量名’) 或 sym (‘表达式’)

功能:定义一个符号变量或符号表达式。

例如:

>> sym (‘x’) % 定义变量x为符号变量

>> sym(‘x+1’) % 定义表达式x+1为符号表达式

216 格式2: syms 变量名1 变量名2 …… 变量名n

功能:定义变量名1、变量2 ……、变量名 n为符号变量。

例如:

>> syms a b x t % 定义a,b, x,t 均为符号变量

8.5.2 微积分运算

1、极限

格式:limit (f, t, a, ‘left’ or ‘right’)

功能:求符号变量t 趋近a 时,函数f 的(左或右)极限。‘left’表示求左极限,‘right’表示求右极限,省略时表示求一般极限;a省略时变量t 趋近0; t省略时默认变量为x ,若无x则寻找(字母表上)最接近字母x 的变量。

例如:求极限

x

x x

t3

2

1

lim?

?

?

?

?

+

的命令及结果为:

>> syms x t

>> limit ((1+2*t/x)^(3*x) , x, inf )

ans=

exp(6*t)

再如求函数x / |x| ,当0

x时的左极限和右极限,命令及结果为:

>> syms x

>> limit(x/abs(x), x, 0, ’left’) ans = -1

>> limit(x/abs(x),x, 0, ’right’) ans = 1

2、导数

格式: diff (f,t,n)

功能:求函数f 对变量 t的n 阶导数。当n省略时,默认 n=1;当t省略时,默认变量x, 若无x时则查找字母表上最接近字母x 的字母。

例如:求函数f=a*x^2+b*x+c对变量 x的一阶导数, 命令及结果为

>> syms a b c x

>> f=a*x^2+b*x+c;

>> diff(f)

ans=

2*a*x+b

求函数f 对变量b的一阶导数(可看作求偏导), 命令及结果为

217 >> diff(f,b) ans=x

求函数f 对变量x的二阶导数, 命令及结果为

>> diff(f,2) ans=2*a

3、积分

格式: int(f,t,a,b)

功能:求函数f 对变量 t从a 到b的定积分. 当a和b省略时求不定积分;当t省略时, 默认变量为(字母表上)最接近字母x的变量。

例如:求函数f=a*x^2+b*x+c对变量x不定积分, 命令及结果为

>> syms a b c x

>> f=a*x^2+b*x+c;

>> int(f)

ans=

1/3*a*x^3+1/2*b*x^2+c*x

求函数f 对变量b不定积分, 命令及结果为

>> int(f,b)

ans=

a*x^2*b+1/2*b^2*x+c*b

求函数f 对变量x 从 1到5的定积分, 命令及结果为

>> int(f,1,5)

ans=

124/3*a+12*b+4*c

4、级数求和

格式: symsum (s,t,a,b)

功能:求表达式s中的符号变量t从第a项到第b项的级数和。

例如:求级数x/1

+

+ 的前三项的和, 命令及结果为

+

1/1+

2/1

3/1

>> symsum(1/x,1,3) ans=11/6

8.5.3 化简和代换

MATLAB符号运算工具箱中,包括了较多的代数式化简和代换功能,下面仅举出部分常见运算。

simplify 利用各种恒等式化简代数式

expand 将乘积展开为和式

数学软件MATLAB实验作业

数学软件与数学实验作业 一.《数学软件》练习题(任选12题,其中19-24题至少选2题): 3.对下列各式进行因式分解. (1). syms x y >> factor(x^5-x^3) (2). syms x y >> factor(x^4-y^4) (3). syms x >> factor(16-x^4) (4). syms x >> factor(x^3-6*x^2+11*x-6) (5). syms x y >> factor((x+y)^2-10*(x+y)+25) (6). syms x y >> factor(x^2/4+x*y+y^2) (7). syms x y a b >> factor(3*a*x+4*b*y+4*a*y+3*b*x) (8). syms x >> factor(x^4+4*x^3-19*x^2-46*x+120) 5.解下列方程或方程组. (1).solve('(y-3)^2-(y+3)^3=9*y*(1-2*y)') (2). solve('3*x^2+5*(2*x+1)') (3). solve('a*b*x^2+(a^4+b^4)*x+a^3*b^3','x') (4). solve('x^2-(2*m+1)*x+m^2+m','x') (5). [x,y]=solve('4*x^2-9*y^2=15','2*x-3*y=15') 6.计算极限. (1). syms x f=(exp(x)-exp(-x))/sin(x); limit(f,x,0) (2) syms x >> f=(x/(x-1)-1/log(x)); >> limit(f,x,1) (3). syms x >> f=(1-cos(x))/x^2; >> limit(f,x,0)

matlab课后答案完整版

ones表示1矩阵 zeros表示0矩阵 ones(4)表示4x4的1矩阵 zeros(4)表示4x4的0矩阵 zeros(4,5)表示4x5的矩阵 eye(10,10)表示10x10的单位矩阵rand(4,5)表示4x5的伴随矩阵 det(a)表示计算a的行列式 inv(a)表示计算a的逆矩阵 Jordan(a)表示求a矩阵的约当标准块rank(a)表示求矩阵a的秩 [v,d]=eig(a)对角矩阵 b=a’表示求a矩阵的转置矩阵 sqrt表示求平方根 exp表示自然指数函数 log自然对数函数 abs绝对值 第一章 一、5(1) b=[97 67 34 10;-78 75 65 5;32 5 -23 -59]; >> c=[97 67;-78 75;32 5;0 -12]; >> d=[65 5;-23 -59;54 7]; >> e=b*c e = 5271 11574 -11336 664 1978 3112 (2)a=50:1:100 二、1 、x=-74; y=-27; z=(sin(x.^2+y.^2))/(sqrt(tan(abs(x+y)))+pi) z = 2、a=::; >> b=exp*a).*sin(a+ 3、x=[2 4; 5]; y=log(x+sqrt(1+x.^2))/2 y =4、a*b表示a矩阵和b矩阵相乘 a.*b表示a矩阵和b矩阵单个元素相乘A(m,n)表示取a矩阵第m行,第n列 A(m,:)表示取a矩阵第m行的全部元素 A(:,n)表示取a矩阵的第n列全部元素 A./B表示a矩阵除以b矩阵的对应元素, B.\A等价于A./B A.^B表示两个矩阵对应元素进行乘方运算A.^2表示a中的每个元素的平方 A^2表示A*A 例:x=[1,2,3]; y=[4,5,6]; z=x.^y z= 1 3 2 729 指数可以是标量(如y=2).底数也可以是标量(如x=2) 5、a=1+2i; >> b=3+4i; >> c=exp((pi*i)/6) c = + d=c+a*b/(a+b) d = + 第二章 二、4、(1) y=0;k=0; >> while y<3 k=k+1; y=y+1/(2*k-1); end >> display([k-1,y-1/(2*k-1)]) ans = 第三章 二1(1)

实验一 Matlab基本操作

实验一Matlab基本操作 题目: 1.利用基本矩阵产生 3x3 和15x8 的单位阵,全1 阵,全0 阵,均匀分布的随 机阵([-1,1]之间),正态分布随机阵(方差4,均值1) 2.利用diag()函数和rot90()产生下列矩阵: 然后求解a 阵的逆矩阵aa 及b 阵的特征值和对应特征向量,并利用reshape 将 aa 阵变换成行向量。 3.产生一均匀分布在(-5,5)随机阵(50x2),精确到小数点后一位。 4.编程实现当α∈[-π,π],间隔为1o 时,求解正弦和余弦的值,并利用plot() 函数绘制正弦,余弦曲线。 5.利用rand 函数产生(0,1)间均匀分布的10x10 随机矩阵a,然后统计a 中大于等于0.6 的元素个数。 6.利用randn 函数产生均值为0,方差为1 的10x10 正态分布随机阵,然后统计其中大于-0.5,小于0.5 的元素个数。 7.编程实现下表功能: 8.有一矩阵a,找出矩阵中其值大于1 的元素,并将他们重新排列成列向量b。 9.在一保定市区9 月份平均气温变化测量矩阵temp_Baoding_sep 中(48x30),存在有奇异值(大于42o C,小于0o C),编程实现删除奇异值所在的行。 10.在给定的100x100 矩阵中,删除整行内容全为0 的行,删除整列内容全为0 的列。 程序: 1. %3X3矩阵 a1=eye(3) a2=ones(3) a3=zeros(3) a4=1-2*rand(3) a5=2*randn(3)+1 %15X8矩阵 b1=eye(15,8) b2=ones(15,8) b3=zeros(15,8) b4=1-2*rand(15,8) b5=2*randn(15,8)+1 运行结果:

matlab第八章

第8章M文件函数 使用MATLAB函数时,例如inv, abs, angle和sqrt,MATLAB获取传递给它的变量,利用所给的输入,计算所要求的结果。然后,把这些结果返回。由函数执行的命令,以及由这些命令所创建的中间变量,都是隐含的。所有可见的东西是输入和输出,也就是说函数是一个黑箱。 这些属性使得函数成为强有力的工具,用以计算命令。这些命令包括在求解一些大的问题时,经常出现的有用的数学函数或命令序列。由于这个强大的功能,MATLAB提供了一个创建用户函数的结构,并以M文件的文本形式存储在计算机上。MATLAB函数fliplr 是一个M文件函数良好的例子。 function y = fliplr(x) % FLIPLR Flip matrix in the left/right direction. % FLIPLR(X) returns X with row preserved and columns flipped % in the left/right direction. % % X = 1 2 3 becomes 3 2 1 % 4 5 6 6 5 4 % % See also FLIPUD, ROT90. % Copyright (c) 1984-94 by The MathWorks, Inc. [m, n] = size(x); y = x(: , n : -1 : 1); 一个函数M文件与脚本文件类似之处在于它们都是一个有.m扩展名的文本文件。如同脚本M文件一样,函数M文件不进入命令窗口,而是由文本编辑器所创建的外部文本文件。一个函数的M文件与脚本文件在通信方面是不同的。函数与MATLAB工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。在函数内中间变量不出现在MATLAB工作空间,或与MATLAB工作空间不交互。正如上面的例子所看到的,一个函数的M文件的第一行把M文件定义为一个函数,并指定它的名字。它与文件名相同,但没有.m扩展名。它也定义了它的输入和输出变量。接下来的注释行是所展示的文本,它与帮助命令:? help fliplr相对应。第一行帮助行称为H1 行,是由lookfor命令所搜索的行。最后,M文件的其余部分包含了MATLAB创建输出变量的命令。 8.1 规则和属性

MATLAB基础教程 薛山第二版 课后习题答案

《MATLAB及应用》实验指导书《MATLAB及应用》实验指导书 班级:T1243-7 姓名:柏元强 学号:20120430724 总评成绩: 汽车工程学院 电测与汽车数字应用中心

目录 实验04051001 MATLAB语言基础 (1) 实验04051002 MATLAB科学计算及绘图 (18) 实验04051003 MATLAB综合实例编程 (31)

实验04051001 MATLAB语言基础 1实验目的 1)熟悉MATLAB的运行环境 2)掌握MATLAB的矩阵和数组的运算 3)掌握MATLAB符号表达式的创建 4)熟悉符号方程的求解 2实验内容 第二章 1.创建double的变量,并进行计算。 (1)a=87,b=190,计算 a+b、a-b、a*b。 clear,clc a=double(87); b=double(190); a+b,a-b,a*b (2)创建 uint8 类型的变量,数值与(1)中相同,进行相同的计算。 clear,clc a=uint8(87); b=uint8(190); a+b,a-b,a*b 2.计算:

(1) () sin 60 (2) e3 (3) 3cos 4??π ??? clear,clc a=sind(60) b=exp(3) c=cos(3*pi/4) 3.设2u =,3v =,计算: (1) 4 log uv v (2) () 2 2 e u v v u +- (3) clear,clc u=2;v=3; a=(4*u*v)/log(v) b=((exp(u)+v)^2)/(v^2-u) c=(sqrt(u-3*v))/(u*v) 4.计算如下表达式: (1) ()() 3542i i -+ (2) () sin 28i - clear,clc (3-5*i)*(4+2*i) sin(2-8*i)

数学软件MATLAB附加习题

第2章 Matlab 矩阵及其运算 1. 给定一实数矩阵A ,试写一组指令,将其所有非正元素设定为0. 2. 给定一实数矩阵A ,试写一组指令,将其所有nan 元素设定为0. 3. 给定一实数和虚数交错的矩阵A ,试写一组指令,将其所有虚数元素设定为nan. 4. 请写一组指令,产生元素值为0或1的向量,向量长度为100,且出现0或1的概率各占一半。如果要求元素值为-1或1呢? 5. 假设有一整数矩阵A ,请写一函数,将此整数矩阵以ASCII 的整数方式存于文件之中。例如当矩阵内容如下时 ??? ? ??87654321, 则储存到文件中的内容为 1 2 3 4 5 6 7 8 6. 本题练习二进制文件的读写。 (1)请将A=magic(10)以uint8的数据类型存入一个二进制文件mytest.bin ,使用指令为fwrite. (2)请再用fread 指令将此魔方阵读至工作空间中的AA 变量中。 7. 设计一个函数captalize.m ,其用法如下: outputStr=capitalize(inputStr) 其中inputStr 是一英文字符串,函数会将此字符串中每个单词的第一个字母改为大写,其余为小写,并将多余空格代换成一个空格,outputStr 则是最后的输出字符串。例如,当输入是’ how are you! ’时,所得到的输出字符串是’ How are you! ’. 8. 请创建下列4 9. ⑴ 请依歌星名字内码来排序,产生新的元胞数组B 。 ⑵ 请依年代来排序,产生新的元胞数组C 。 ⑶ 请依歌名字数来排序,产生新的元胞数组D (若字数相同,则按歌名中字符的内码来排序)。 10. 在上题的元胞数组中,求出年代的最大值、最小值、平均值及中位数。 11.

Matlab figure 基本操作

Matlab figure基本操作 set(gcf,'Position',[300 300 700 220]); %调整Figure位置和大小。前两个为离屏幕左下角的X,Y距离,后两个值为Figure窗口的宽和高 set(gca,'Position',[.05 .1 .9 .8]); %调整绘图范围(比例关系)。0.05+0.9为横向比例,最大为1;0.1+0.8为纵向比例。0.05和0.1为距离Figure左下角的X,Y距离 figure_FontSize=12; set(gca,'FontSize',figure_FontSize,'FontName','Arial'); xlabel('Distance (m)','FontSize',figure_FontSize,'fontweight','b','FontName','Arial'); ylabel('Thickness (m)','FontSize',figure_FontSize,'fontweight','b','FontName','Arial'); box off; %关闭上和右侧刻度线 grid on; %添加网格线 xkd=[10 20 30]; %定义坐标刻度数量 ykd=[100 200 300]; xkd_label=[1 3 5]; %更改刻度 ykd_label=[100 200 300]; set(gca,'xtick',xkd); set(gca,'xticklabel',xkd_label); set(gca,'ytick',ykd); set(gca,'yticklabel',ykd_label); set(gca,'xscale','log'); %改为对数坐标

MatLab在中学数学教学中的应用

MatLab在中学数学教学中的应用 摘要:多媒体教学受到人们的日益重视,制作多媒体课件的能力日趋成为衡量一个教师教学能力的标准之一。MatLab功能强大且简单易用,本文首先对MatLab的发展历史和基本组成框架进行了简单介绍。在此基础上,利用MabLab函数绘制了学数学教学过程中常见的二维和三维函数。并得出结论认为,MatLab适用于中学多媒体课件的制作。 关键词:多媒体教学中学数学MatLab 1 引言 随着计算机技术的发展,多媒体教学越来越受到人们的重视。现代教育理论认为[1]:全面实施素质教育,传统教学陈旧的教学手段和简单的教学技术在当今世界的多层次教学、演示教学、实验教学等现代化课堂教学中就显得力不从心。实验心理学家赤瑞特拉通过大量的实验证实:人类获取的信息83%来自视觉,11%来自听觉,1.5%来自触觉,这三个加起来达到95.5%。可见如何充分利用这三者来提高教学质量是人类认知心理学的要求。 多媒体计算机辅助教学是指利用多媒体计算机,综合处理和控制符号、语言、文字、声音、图形、图像、影像等多种媒体信息,把多媒体的各个要素按教学要求,进行有机组合并通过屏幕或投影机投影显示出来,同时按需要加上声音的配合,以及使用者与计算机之间的人机交互操作,完成教学或训练过程。Matlab 是美国MathWorks 公司自20 世纪80 年代中期推出的数学软件,具有优秀的数值计算能力和卓越的数据可视化能力。尽管MatLab 并不是一专门的教学软件,但其强大的绘图功能使得数学教学中的抽象概念直观易解。 2 多媒体教学特点 多媒体技术的特性主要包括信息载体的多样化、集成性和交互性三个方面[2]。信息载体的多样化指的就是信息媒体的多样化多媒体就是要把机器处理的信息多样化或多维化, 使之在信息交互的过程中, 具有更加广阔和更加自由的空间。多媒体的集成性主要表现在两个方面,即多媒体信息媒体的集成和处理这些媒体的设备的集成,。对于前者而言,各种信息媒体尽管可能会是多通道的输入或输出,但应该成为一体。对于后者而言,指的是多媒体的各种设备应该成为一体。多媒体的交互性则是指用户在使用多媒体过程中可以与之进行交互,输入目标参数,从而得到理想中的多媒体信息输出。 多媒体技术的特性决定了多媒体教学如下特点: 1)教学手段集成化 多媒体计算机集激光唱盘、录像机、电视机和计算机控制于一体, 即可以充分利用语音和电视教学的优势, 又有计算机交互式教学的特点,克服了传统教学手段三个“一”(一支粉笔、一本书、一张嘴)的单一性缺点。 2)教学方式多样化

实验一 Matlab基本操作及运算

实验一Matlab基本操作及运算 一、实验目的: 1.熟悉MATLAB基本操作 2.掌握矩阵、变量、表达式的各种基本运算 二、实验基本知识: 1.熟悉MATLAB环境 熟悉MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。 2.掌握MATLAB常用命令 3.MATLAB变量与运算符 变量命名规则如下: (1)变量名可以由英语字母、数字和下划线组成 (2)变量名应以英文字母开头 (3)长度不大于31个 (4)区分大小写 MATLAB中设置了一些特殊的变量与常量,列于下表。 MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符

表2 MATLAB算术运算符 表3 MATLAB关系运算符 表4 MATLAB逻辑运算符 表5 MATLAB特殊运算

4. MATLAB的一维、二维数组的访问 表6 子数组访问与赋值常用的相关指令格式 5. MATLAB的基本运算 表7 两种运算指令形式和实质内涵的异同表 6.MATLAB的常用函数

表8 标准数组生成函数 表9 数组操作函数 7.多项式运算 poly——产生特征多项式系数向量 roots——求多项式的根 p=poly2str(c,‘x’)—(将特征多项式系数向量c转换为以习惯方式显示是多项式)conv, convs——多项式乘运算 deconv——多项式除运算 polyder(p)——求p的微分 polyder(a, b)——求多项式a,b乘积的微分 [p,q]=polyder(p1,p2)——求解多项式p1/p2微分的有理分式 poly(p,A)——按数组运算规则求多项式p在自变量A的值 polym(p,A)——按矩阵运算规则求多项式p在自变量A的值

数学软件_Matlab下

七、优化问题 MATLAB 软件可以线性规划、0-1规划、非线性规划、二次规划、多目标规划等优化问题。 1.线性规划(Lin ear Prog ramming ,简写为LP )问题 线性规划问题就是求多变量线性函数在线性约束条件下的最优值。满足约束条件的解称为可行解,所有可行解构成的集合称为可行域,满足目标式的可行解称为最优解。 MATLAB 解决的线性规划问题的标准形式为: min z f x T =? .. A x b s t Aeq x beq lb x ub ì祝??? ?í??#??? 其中,,,,,f x b beq lb ub 为列向量,,A Aeq 为矩阵。在MATLAB 中求解线性规划问题函数为linprog ,其使用格式为: [x, fval, exitflag, output, lambda] = linprog(f, A, b, Aeq, beq, lb, ub) 输入部分:其中各符号对应线性规划问题标准形式中的向量和矩阵,如果约束条件中

有缺少,则其相应位置用空矩阵[]代替。 输出部分:其中x 为最优解,用列向量表示;fval 为最优值;exitflag 为退出标志,若exitflag=1表示函数有最优解;output 表明算法和迭代情况;lambda 表示存储情况。 例. 用linprog 函数求下面的线性规划问题 12312312312123 min 54620324423230.. 0,00x x x x x x x x x x x s t x x x ---ì-+?????++????+???í?£???£????£?? 在命令窗口输入如下命令: >> f = [-5, -4,-6]; A = [1 -1 1; 3 2 4; 3 2 0]; b = [20; 42; 30]; lb = zeros(3,1);

数学实验与数学软件(Mathmaticandmatlab)

数学软件与数学实验2013-2014学年度秋季学期期末试卷 专业:统计学 班级:11级2班 学号:20110723 姓名:晏静

一、按要求计算出下列表达式的值 (1)318, 3 162 53 ?? + ? ?? , 21 eπ+, 2.5 tg, 2 log15; (2)给出π的9位和e的10位近似值; (3)求658和4102的最大公约数及35和25的最小公倍数; (4)产生10个0与10之间随机数的一个表; (5)求虚数1453 i i i i +- -的实部,虚部,模,共轭,辐角。 (6)自己运用Table建立两个表,并进行表运算,如连接、并集、交、排序等操作。

二、因式分解 22212321332112322 1 22(1)()()()4;(2)21;x x x x x x x x x x x x x x x +++++---- 解: 三、解方程(组) 1234234124234-2+344-+-3(1)+31-73+3 x x x x x x x x x x x x x -=??=? ? +=??+=-? 65432(2)5232002000.x x x x x x -+--++= 四、求极限 () 20 (1)1sin ;(2);(3)56! ctg x n x n n n Lim x Lim n n →→∞ →∞++

(1) (2) (3) 五、求导数 32 22(1)()=ln(x+1+);(2)()=cos 2,; (3)=log (),Z . x f x x f f x e y x y Z xy x y y ???求的导数已知求求关于的二阶导 (1) (2) (3) 六、求下列定积分与不定积分: ()()()12201+sin ln 1+(1);(2);(3)sin (1+cos ) +1(1+)(2+-) x x dx dx x x x x x x ? ? ?2 2-(4)=0,=1,==.y D D x y y x I x e d σ??设是由直线围成的区域,计算的值 (1) (2)

MATLAB 基本操作和简单语句输入

实验一基本操作和简单语句输入 一、实验目的和要求 1、熟悉MATLAB的命令窗口 2、掌握MATLAB的一些基本操作,能够进行一般的数值计算 3、实现语句的重调和修改 二、实验内容和步骤 1、启动MATLAB 2、观察MATLAB窗口的组成部分 (1)了解菜单栏各菜单项的功能,用书变打开MA TLAB的各个菜单,在状态栏里显示当前鼠标所指的菜单项的含义 (2)用鼠标指向常用工具栏的每个工具按钮,了解各个工具按钮的含义 3、命令窗口的打开和关闭 (1)查看窗口的打开和关闭 (2)在命令窗口中输入命令a=3;b=4;y=a*b+a/b,然后回车,查看命令显示结果 (3)利用MATLAB中编辑命令行事常用的按键功能,调出上一语句,对它进行修改(如把分号改成逗号,看运行结果),并把运行结果复制到word中保存。 >> a=3;b=4;y=a*b+a/b, y = 12.7500 >> a=3,b=4,y=a*b+a/b, a = 3 b = 4 y = 12.7500 (4)关闭命令窗口

(5)打开命令窗口 4、使用MATLAB帮助 熟悉MATLAB的帮助系统,通过帮助系统了解有关内容 5、在命令窗口中输入demo,将出现MA TLAB的演示窗,通过演示窗,对MATLAB的功能进一步的浏览。 三、试验环境 计算机MA TLAB软件 四、练习 1、调出MATLAB\stateflow的演示实例

2、计算y=x^3+(x-0.98)^2/(x+1.25)^3-5(x+1/x),x=2,x=3时的值 3、计算cos60?-√(9-√2) 4、已知a=3,A=4,b=a^2,B=b^2-1,c=a+A-2B,C=a+B+2c,求C

实验一 MATLAB基本操作及运算

实验一 MATLAB 基本操作及运算 一、 实验目的 二、 实验的设备及条件 三、 实验内容 1、 建立以下标量: 1) a=3 2) j ,(j 为虚数单位) 3) c=3/2πj e 2、 建立以下向量: 1) Vb= 2.71382882????????-???? 2) Vc=[4 3.8 … -3.8 -4 ] (向量中的数值从4到-4,步长为-0.2) 3、 建立以下矩阵: 1) 3333Ma ????=?????? L M O M L Ma 为一个7×7的矩阵,其元素全为3. 2) 11191212921020100Mb ??????=?????? L O M M O M L

Mb 为一个10×10的矩阵. 3) 114525173238Mc ????=?????? 4、 使用题1中的变量计算下列等式的x,y,z 的值: 1) ((15)/6)111a x e --=+ 2) 2x π= 3) 3ln([()()]sin(/3))x b c b c a π=+-R ,其中R 表示复数实部。 5、 求解函数值22/(2.25)ct y e -=,其中c 取值见题1,t 的取值范围为题2中行 向量Vc 。 6、 使用题1和题3中所产生的标量和矩阵计算等式 1()()T Mx a Mc Mc Mc -=?? 其中*为矩阵所对应行列式的值,参考det 。 7、 函数的使用和矩阵的访问。 1) 计算矩阵Mb 每一列的和,结果应为行向量形式。 2) 计算整个矩阵Mb 的平均值。 3) 用向量[1 1…1] 替换Mb 的最上一行的值 4) 将矩阵Mb 的第2~5行,第3到9列的元素所构成的矩阵赋值给矩阵SubMb 。 5) 删除矩阵Mb 的第一行; 6) 使用函数rand 产生一个1×10的向量r ,并将r 中值小于0.5的元素设置为0。 8、 已知CellA (1, 1)=‘中国’,CellA (1,2)=‘北京’,CellA (2,1)是一个3乘3的单位阵,CellA (2, 2)=[1 2 3],试用MATLAB 创建一个2×2的细胞数组CellA 。 9、 已知结构数组student 中信息包含有姓名,学号,性别,年龄和班级,试用MATLAB 创建相应的结构数组student 。该数组包含有从自己学号开始连续5个同学的信息(如果学号在你后面的同学不足5个则往前排序),创建完成后查看自己的信息。

matlab习题第八章

第八章 实验指导 1、 >> syms x y; >> A=x^4-y^4; >> factor(A) ans = (x - y)*(x + y)*(x^2 + y^2) >> a=5135; >> factor(a) ans = 5 13 79 2、(1) >> syms x >> f=(x-2)/(x^2-4); >> limit(f,x,2)

ans = 1/4 (2) >> syms x f=(sqrt(pi)-sqrt(acos(x)))/sqrt(x+1); limit(f,x,-1,'right') ans = -Inf 3、 (1) >> syms x y >> f=sin(1/x); >> diff(f) ans = -cos(1/x)/x^2 >> diff(f,x,2)

ans = (2*cos(1/x))/x^3 - sin(1/x)/x^4 >> f=(1-cos(2x))/x; (2) >> f=(1-cos(2*x))/x f = -(cos(2*x) - 1)/x >> diff(f) ans = (2*sin(2*x))/x + (cos(2*x) - 1)/x^2 >> diff(f,x,2) ans =

(4*cos(2*x))/x - (4*sin(2*x))/x^2 - (2*(cos(2*x) - 1))/x^3 4、 (1)、 >> x=sym('x'); >> f=sqrt(exp(x)+1); >> int(f) ans = atan((exp(x) + 1)^(1/2)*i)*2*i + 2*(exp(x) + 1)^(1/2) (2) >> x=sym('x'); y=sym('y'); f=x/(x+y); >> int(f,y) ans = x*log(x + y) (3) >> syms x;

matlab数学实验第八章~第十章部分习题答案

第八章 exercize 2 x=[480 500 380 1100 1100 490 230 250 300 510 1300]; >> y=[180 150 170 350 460 240 60 90 110 250 200]; >> plot(x,y,'*') >> c=corrcoef(x,y); exercize 7(1) a=1/sqrt(2*pi)% 被积函数的最大值 a = 0.3989 n=10000;x=rand(n,1);y=unifrnd(0,0.4,n,1); c1=y>0;c2=y> nc=sum(c1&c2) nc = 8534 >> i=nc*0.4/n i = 0.3414 7(3) n=60000; y=rand(n,1); x=unifrnd(0,pi,n,1); z=rand(n,1); c1=y

第九章 exercize 3(1) >>x=linspace(0,2*pi,10); >> y=sin(x); >> xi=linspace(0,2*pi,50);yi=sin(xi); >> yi1=interp1(x,y,xi); >> yi2=interp1(x,y,xi,'spline'); >> plot(xi,yi1,'r',xi,yi2,'b',x,y,'*') e1=norm(yi1-yi),e2=norm(yi2-yi) %均方误差 e1 = 0.3097 e2 = 0.0158 exercize 3(4) x=linspace(-2,2,10);y=exp(-x.^2); >> xi=linspace(-2,2,80); >> yi1=interp1(x,y,xi);yi2=interp1(x,y,xi,'spline'); >> yi=exp(-xi.^2); >> plot(xi,yi1,'r',xi,yi2,'g',x,y,'*') >> e1=norm(yi1-yi),e2=norm(yi2-yi) e1 = 0.1518 e2 = 0.0069 exercize 12 y=[100 75 80 70 50 65 90 100 110 60]'; >> x1=[1000 600 1200 500 300 400 1300 1100 1300 300]'; >> x2=[5 7 6 6 8 7 5 4 3 9]'; >> plot(x1,y,'*') >> plot(x2,y,'o') >> [b,bint,r,rint,stats]=regress(y,[ones(10,1),x1,x2]);

数学软件四大家Maple、MATLAB、MathCAD和Mathematica

数学软件四大家Maple、MATLAB、MathCAD和Mathematica 目前在科技和工程界上比较流行和著名的数学软件主要有四个,分别是MATLAB、Maple、MathCAD和Mathematica。它们在各自针对的目标都有不同的特色。下面就让我为你一一道来。 一、Maple 系统 Maple 是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。 Maple 的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学。它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语言开发的。 Maple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解。输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内。 二、MATLAB 系统 MATLAB原是矩阵实验室(Matrix Laboratory)在70年代用来提供Linpack和Eispack软件包的接口程序,采用C语言编写。从80年代出现3.0的DOS版本,逐渐成为科技计算、视图交互系统和程序语言。MATLAB可以运行在十几个操作平台上,比较常见的有基于Windows 9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。 MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、系统识别工具包、优化工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包、样条工具包、符号数学工具包、图像处理工具包、统计工具包等。而且5.x版本还包含一套几十个的PDF文件,从MATLAB的使用入门到其他专题应用均有详细的介绍。 MATLAB是数值计算的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。MATLAB在输入方面也很方便,可以使用内部的Editor或者其他任何字符处理器,同时它还可以与Word6.0/7.0结合在一起,在Word的页面里直接调用MATLAB 的大部分功能,使Word具有特殊的计算能力。 三、MathCAD 系统 MathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件。从早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也从简单的数值计算,直至引用Maple强大的符号计算能力,使得它发生了一个质的飞跃。 MathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件。MathCAD7.0 Professional(专业版)运行在Win9X/NT 下,它的主要特点是输入格式与人们习惯的数学书写格式很近似,采用WYSWYG(所见所得)界面,特别适合一般无须进行复杂编程或要求比较特殊的计算。MathCAD 7.0 Professional 还带有一个程序编辑器,对于一般比较短小,或者要求计算速度比较低时,采用它也是可以的。这个程序编辑器的优点是语法特别简单。 MathCAD可以看作是一个功能强大的计算器,没有很复杂的规则;同时它也可以和Word、Lotus、WPS2000等字处理软件很好地配合使用,可以把它当作一个出色的全屏幕数学公式编辑器。 四、Mathematica 系统 Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的符号计算不是基于Maple上的,而是自己开发的。 Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,Mathematica是一个交互式的计算系统,计算是在用户和Mathematica互相交换、传递信息数据的过程中完成的。Mathematica系统所接受的命令都被称作表达式,系统在接受了一个表达式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有比较严格的规定,用户必须按照系统规定的数学格式输入,系统才能正确地处理,不过由于3.0版本引入输入面板,并且可以修改、重组输入面板,因此以前版本输入指令时需要不断切换大小写字符的繁琐方式得到很好的改善。5.1版本可以用各种格式保存文件和剪贴内容,包括RTF、HTML、BMP等格式。 Mathematica的符号功能是最强的。且它的运行构架是最优的。符号运算效力与解析能力是最好的(数值运算当然是Matlab最好)。它的构架由核心系统与前端系统构成。两个系统既合作又独立。这个比Matlab的构架都要优秀。它是专为研究人员开发的。至于Maple的符号能力根本就比Mathematica弱很多的。它基本上是为中学生与大学生之学习研发的。不足以进行物理学与技术科学的运演。而Mathematica是最好的物理学科研的工具。Matlab是最好的技术科学数值求解的工具。朋友们应该知了。数值类的数学软件是Matlab最好最全。符号分析类的数学软件是Mathematica最好。 五、四种软件的比较 选用何种数学软件?如果仅仅是要求一般的计算或者是普通用户日常使用,首选的是MathCAD,它在高等数学方面所具有的能力,足够一般客户的要求,而且它的输入界面也特别友好。如果要求计算精度、符号计算和编程方面的话,最好同时使用Maple和Mathematica,它们在符号处理方面各具特色,有些Maple不能处理的,Mathematica却能处理,诸如某些积分、求极限等方面,这些都是比较特殊的。如果要求进行矩阵方面或图形方面的处理,则选择MATLAB,它的矩阵计算和图形处理方面则是它的强项,同时利用MATLAB的NoteBook功能,结合Word6.0/7.0的编辑功能,可以很方便地处理科技文章

MATLAB(第四章和第八章)

第四章 线性代数问题的计算机求解 一、实验内容: 题目1. Jordan 矩阵是矩阵分析中一类很实用的矩阵,其一般形式为 J= ????????? ???--ααα 0 00 010001-,例如J1= ??? ???? ?????????-----500001500001500001500001 5 试利用diag()函数给出构造J1的语句。 【分析】该题为对角矩阵的问题。对J 要利用diag()能够构造对角矩阵和次对角矩阵的性 质。J1只需对角矩阵和次对角矩阵相加即可。这里需要对diag()函数的调用。如A=diag(V)---已知向量生成对角矩阵,A=diag(V,k)—生成主对角线上第k 条对角线为V 的矩阵(其中k 可为正负) 【解答】: 输入如下语句: >>J1=diag([-5 -5 -5 -5 -5])+diag([1 1 1 1],1) 按ENTER 键,显示如下: J1= -5 1 0 0 0 0 -5 1 0 0 0 0 -5 1 0 0 0 0 -5 1 0 0 0 0 -5 题目5. 试求出Vandermonde 矩阵A=????? ?? ???????? ?111112 3 4234234 234234e e e e d d d d c c c c b b b b a a a a ,的行列式, 并以最简的形式显示结果。 【求解】该问题有两个知识点。一个构造是Vandermonde 矩阵,另一个是求矩阵的行列式。 前者可以利用书中编写的面向符号矩阵的vander()函数构造出Vandermonde 矩阵。需要用到V=vander(C)来调用。后者可以用MATLAB 的det()函数来求解,他会自动采用解析解法求出其行列式的值。需要注意运用det()的前提是符号矩阵,本题中A 已是符号矩阵,所以不用转换。最后,用simple()函数简化一下即可。 【解答】: (1)构造矩阵: 输入如下语句: >>syms a b c d e; A=vander([a b c d e])

我的matlab第八章作业

8.3某随动系统的微分方程为: 已知:。试分别就K=2.5、5.0、12.5三种情况对系统进行仿真,考擦的动态性能。 解:由分析可知A=[0,1,0;0,0,1;-40k/3,-40/3,-10;] B=[0;0;k;],c=[1,0,0] 总输入为 (1)故当K=2.5时 plot(tout,yout) xlabel('tout') ylabel('yout') title('K=2.5') 输出的图为: (2)当K=5时 输入为: plot(tout,yout) xlabel('tout') ylabel('yout') title('K=5') 输出的图为:

(3)当K=12.5时 输入为: plot(tout,yout) xlabel('tout') ylabel('yout') title('K=12.5') 输出图为: 8.2已知系统模型 当p=1、2、10时,对以上几种情况进行仿真,并比较不同输入幅值下的系统输出响应。解:由分析可知:A=[0,1;-1,-2;],B=[p;p],c=[1,0,0] (1)故总输入的仿真式为:

<1>当p=1输入为u(t)=1时输入为: plot(tout,yout) xlabel('tout') ylabel('yout') title('p=1') <2>当p=2,输入为u(t)=1时输入为: plot(tout,yout) xlabel('tout') ylabel('yout') title('p=2') 输出为:

<3>当p=10输入为u(t)=1时输入为: plot(tout,yout) xlabel('tout') ylabel('yout') title('p=10') 输出为: (2)当输入为u(t)=t时,总输入函数为: <1>当p=1时 输入为: plot(tout,yout) xlabel('tout') ylabel('yout') title('p=1')

Matlab有限元分析操作基础

Matlab 有限元分析20140226 为了用Matlab 进行有限元分析,首先要学会Matlab 基本操作,还要学会使用Matlab 进行有限元分析的基本操作。 1. 复习:上节课分析了弹簧系统 x 推导了系统刚度矩阵 11221 2 1200k k k k k k k k -?? ??-????--+??

2. Matlab有限元分析的基本操作 (1)单元划分(选择何种单元,分成多少个单元,标号)(2)构造单元刚度矩阵(列出…) (3)组装系统刚度矩阵(集成整体刚度矩阵) (4)引入边界条件(消除冗余方程) (5)解方程 (6)后处理(扩展计算)

3. Matlab有限元分析实战【实例1】

分析: 步骤一:单元划分

步骤二:构造单元刚度矩阵 >>k1=SpringElementStiffness(100) >>…?

步骤三:构造系统刚度矩阵 a) 分析SpringAssemble库函数 function y = SpringAssemble(K,k,i,j) % This function assembles the element stiffness % matrix k of the spring with nodes i and j into the % global stiffness matrix K. % function returns the global stiffness matrix K % after the element stiffness matrix k is assembled. K(i,i) = K(i,i) + k(1,1); K(i,j) = K(i,j) + k(1,2); K(j,i) = K(j,i) + k(2,1); K(j,j) = K(j,j) + k(2,2); y = K; b) K是多大矩阵? 今天的系统刚度矩阵是什么? 因为 11 22 1212 k k k k k k k k - ?? ?? - ????--+ ?? 所以 1000100 0200200 100200300 - ?? ?? - ?? ?? -- ?? ?

相关文档
最新文档