数学实验与数学建模(matlab在建模中的应用)

合集下载

数学建模实验二:微分方程模型Matlab求解与分析

数学建模实验二:微分方程模型Matlab求解与分析

实验二: 微分方程模型Matlab 求解与分析一、实验目的[1] 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析; [2] 熟悉MATLAB 软件关于微分方程求解的各种命令;[3] 通过范例学习建立微分方程方面的数学模型以及求解全过程; [4] 熟悉离散 Logistic 模型的求解与混沌的产生过程。

二、实验原理1. 微分方程模型与MATLAB 求解解析解用MATLAB 命令dsolve(‘eqn1’,’eqn2’, ...) 求常微分方程(组)的解析解。

其中‘eqni'表示第i 个微分方程,Dny 表示y 的n 阶导数,默认的自变量为t 。

(1) 微分方程 例1 求解一阶微分方程 21y dxdy+= (1) 求通解 输入:dsolve('Dy=1+y^2')输出:ans =tan(t+C1)(2)求特解 输入:dsolve('Dy=1+y^2','y(0)=1','x')指定初值为1,自变量为x 输出:ans =tan(x+1/4*pi)例2 求解二阶微分方程 221()04(/2)2(/2)2/x y xy x y y y πππ'''++-=='=-原方程两边都除以2x ,得211(1)04y y y x x'''++-= 输入:dsolve('D2y+(1/x)*Dy+(1-1/4/x^2)*y=0','y(pi/2)=2,Dy(pi/2)=-2/pi','x')ans =- (exp(x*i)*(pi/2)^(1/2)*i)/x^(1/2) +(exp(x*i)*exp(-x*2*i)*(pi/2)^(3/2)*2*i)/(pi*x^(1/2))试试能不用用simplify 函数化简 输入: simplify(ans)ans =2^(1/2)*pi^(1/2)/x^(1/2)*sin(x) (2)微分方程组例3 求解 d f /d x =3f +4g ; d g /d x =-4f +3g 。

Matlab与数学建模

Matlab与数学建模

Matlab与数学建模⼀、学习⽬标。

(1)了解Matlab与数学建模竞赛的关系。

(2)掌握Matlab数学建模的第⼀个⼩实例—评估股票价值与风险。

(3)掌握Matlab数学建模的回归算法。

⼆、实例演练。

1、谈谈你对Matlab与数学建模竞赛的了解。

Matlab在数学建模中使⽤⼴泛:MATLAB 是公认的最优秀的数学模型求解⼯具,在数学建模竞赛中超过 95% 的参赛队使⽤ MATLAB 作为求解⼯具,在国家奖队伍中,MATLAB 的使⽤率⼏乎 100%。

虽然⽐较知名的数模软件不只 MATLAB。

⼈们喜欢使⽤Matlab去数学建模的原因:(1)MATLAB 的数学函数全,包含⼈类社会的绝⼤多数数学知识。

(2)MATLAB ⾜够灵活,可以按照问题的需要,⾃主开发程序,解决问题。

(3)MATLAB易上⼿,本⾝很简单,不存在壁垒。

掌握正确的 MATLAB 使⽤⽅法和实⽤的⼩技巧,在半⼩时内就可以很快地变成 MATLAB ⾼⼿了。

正确且⾼效的 MATLAB 编程理念就是以问题为中⼼的主动编程。

我们传统学习编程的⽅法是学习变量类型、语法结构、算法以及编程的其他知识,因为学习时候是没有⽬标的,也不知道学的知识什么时候能⽤到,收效甚微。

⽽以问题为中⼼的主动编程,则是先找到问题的解决步骤,然后在 MATLAB 中⼀步⼀步地去实现。

在每步实现的过程中,遇到问题,查找知识(互联⽹时代查询知识还是很容易的),定位⽅法,再根据⽅法,查询 MATLAB 中的对应函数,学习函数⽤法,回到程序,解决问题。

在这个过程中,知识的获取都是为了解决问题的,也就是说每次学习的⽬标都是⾮常明确的,学完之后的应⽤就会强化对知识的理解和掌握,这样即学即⽤的学习⽅式是效率最⾼,也是最有效的⽅式。

最重要的是,这种主动的编程⽅式会让学习者体验到学习的成就感的乐趣,有成就感,⾃然就强化对编程的⾃信了。

这种内⼼的⾃信和强⼤在建模中会发挥意想不到的⼒量,所为信念的⼒量。

数学实验与数学建模(matlab在建模中的应用)

数学实验与数学建模(matlab在建模中的应用)

第六章数学实验与数学建模学习目标1.掌握利用Matlab软件进行了相关的数学运算的方法.2.以软件辅助来完成数学实验.3.了解数学建模思想方法,能够对一些简单问题建立数学模型求解分析.教学要求析、矩阵运算、信号处理、图形显示和建模仿真功能. Matlab是“Matrix Laboratory”的缩写,意思是“矩阵实验室”,其强大的数据处理能力和丰富的工具箱使它的编程极为简单,因此,它成为科学家和工程技术人员解决实际问题的首选计算工具软件。

本章的第一节主要介绍Matlab软件的简单使用方法,从第二节到第六节在讲解Matlab 用于解决高等数学和线性代数中的相关计算的函数基础上, 通过一些简单的数学实验例题,让学生体会如何用Matlab辅助解决数学问题. 最后,通过一些与线性代数相关的数学建模实例,让学生掌握数学建模的简单方法,学会利用Matlab软件辅助解决实际问题,以培养学生良好的数学意识和数学素质.6.1 Matlab环境及使用方法6.1.1 Matlab窗口管理Matlab启动后显示三个窗口,如图6.1所示。

左上窗口为工作区间窗口,显示用户定义的变量及其属性类型及变量长度。

工作区间窗口也可显示为当前目录窗口,显示Matlab 所使用的当前目录及该目录下的全部文件名。

左下窗口为历史窗口,显示每个工作周期(指Matlab启动至退出的工作时间间隔)在命令窗口输入的全部命令,这些命令还可重新获取应用。

右侧窗口为Matlab命令窗口,可在里面输入相关运算命令,完成相应计算。

三个窗口中的记录除非通过Edit菜单下的清除操作,否则将一直保存。

Matlab运行期间(即程序退出之前),除非调用Clear函数,否则Matlab会在内存中保存全部变量值,包括命令输入的变量以及执行程序文件所引入的变量。

清除工作空间变量值也可以通过Edit下拉菜单中的Clear Workspace命令实现。

Clear函数可以清除内存中的所有变量。

MATLAB在数学建模中的应用

MATLAB在数学建模中的应用

MATLAB在数学建模中的应用随着科学技术的不断进步,数学建模在许多领域得到了广泛的应用。

其中,MATLAB作为一种功能强大的计算软件,具有很多优势,使其成为数学建模中的重要工具之一。

本文将介绍MATLAB在数学建模中的应用。

一、MATLAB的基本特点MATLAB是一种用于数学计算、数据分析、可视化和编程的高级技术计算软件。

它提供了许多方便且易于使用的功能,包括数值分析、矩阵计算、信号处理、图像处理、统计分析和数据可视化等等。

MATLAB的高度集成性、易于编程、优雅的编程语言和强大的可视化功能,使其广泛应用于工程领域、科学研究、数学建模等领域。

二、MATLAB在数学建模中的应用1.求解数学模型MATLAB提供了一组广泛的数学函数和工具箱,用于求解各种数学模型。

例如微分方程、线性代数、函数逼近和数值积分等等。

通过这些工具箱可方便地进行数学建模,完成各种数学问题的求解。

同时,MATLAB的计算速度非常快,可以大大缩短计算时间,提高求解精度。

2.绘制图像MATLAB可以生成各种类型的图形和图表,从二维和三维函数图到统计图和数据可视化。

因为MATLAB支持向量和矩阵计算,因此绘制图像非常方便,可以准确地显示数学模型的参数变化。

这对于数学建模的理解和分析,以及对结果的解释和演示非常有帮助。

3.设计算法MATLAB是一种基于高级编程语言的环境。

因此,它为数学建模者提供了编写自己的算法的机会。

MATLAB不仅提供了许多内置的算法,而且还可以自定义算法,以满足特定的需求。

这给数学建模者带来了更多的灵活性和自主性。

4.交互式研究MATLAB提供了交互式控制台,将数值计算和可视化相结合。

数学建模者可以通过这个控制台和模型进行交互式研究,并在过程中进行参数设置和模型调整。

这种交互方式可以及时观察模型的性能和结果,以便及时调整模型参数。

同时它也可以帮助数学建模者更加深入地理解模型本身。

三、MATLAB在数学建模中的优势MATLAB具有许多出色的特点,使得它成为数学建模中的首选工具。

MATLAB在数学建模中的应用

MATLAB在数学建模中的应用
1、矩阵的基本运算
例1 已知
a/b
第30页/共131页
MATLAB在《线性代数》中的应用
1、矩阵的基本运算
例1 已知
a\b
第31页/共131页
2、解线性方程组
Hale Waihona Puke ref将矩阵A化为最简阶梯形
R(A)=4=n;所以方程组只有零解。
Rr ef
第32页/共131页
5、求积分
例11 求二重积分
符号积分
数值计算
第24页/共131页
MATLAB在《微积分》中的应用
6、解微分方程
例12
dsolveD
一定要大写
第25页/共131页
MATLAB在《微积分》中的应用
7、级数问题
taylor
eval
第26页/共131页
MATLAB在《线性代数》中的应用
4、用正交变换化二次型为标准形
结论:作正交变换
则有
第38页/共131页
上机实验题
第39页/共131页
第40页/共131页
实验练习
一. 输入A=[1,1,1;1,2,3;1,3,6],B=[8,1,6;3,5,7;4,9,2],u=[3;1;4], 1. A+B; 2. A-B; 3. A*B; 4. A*u; 5. 2A-3B; 6. A2+B2; 7. AB-BA。
第8页/共131页
学习它的意义:随着计算机科学和计算软件的发展,数学系学生必须掌握一门好的计算软件。这是我们就业、继续身造或做科研工作所要用到的。是当代大学生必备的一项技能。
第9页/共131页
其它计算软件:MATHEMATIC(数学分析问题的计算);LINGO(规划问题的计算)。可以说一个人掌握了一门计算软件,再学习其它计算软件就很容易。

matlab在数学建模中的应用

matlab在数学建模中的应用

Matlab在数学建模中的应用数学建模是通过对实际问题的抽象和简化,引入一些数学符号、变量和参数,用数学语言和方法建立变量参数间的内在关系,得出一个可以近似刻画实际问题的数学模型,进而对其进行求解、模拟、分析检验的过程。

它大致分为模型准备、模型假设、模型构成、模型求解、模型分析、模型检验及应用等步骤。

这一过程往往需要对大量的数据进行分析、处理、加工,建立和求解复杂的数学模型,这些都是手工计算难以完成的,往往在计算机上实现。

在目前用于数学建模的软件中,matlab 强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。

1 Matlab在数学建模中的应用下面将联系数学建模的几个环节,结合部分实例,介绍matlab 在数学建模中的应用。

1.1 模型准备阶段模型准备阶段往往需要对问题中的给出的大量数据或图表等进行分析,此时matlab的数据处理功能以及绘图功能都能得到很好的应用。

1.1.1 确定变量间关系例1 已知某地连续20年的实际投资额、国民生产总值、物价指数的统计数据(见表),由这些数据建立一个投资额模型,根据对未来国民生产总值及物价指数的估计,预测未来的投资额。

表1 实际投资额、国民生产总值、物价指数的统计表记该地区第t年的投资为z(t),国民生产总值为x(t),物价指数为y(t)。

赋值:z=[90.9 97.4 113.5 125.7 122.8 133.3 149.3 144.2 166.4 195 229.8 228.7 206.1 257.9 324.1 386.6 423 401.9 474.9 424.5]' x=[596.7 637.7 691.1 756 799 873.4 944 992.7 1077.6 1185.9 1326.4 1434.2 1549.2 1718 1918.3 2163.9 2417.8 2631.6 2954.7 3073]'y=[0.7167 0.7277 0.7436 0.7676 0.7906 0.8254 0.8679 0.91450.9601 1 1.0575 1.1508 1.2579 1.3234 1.4005 1.5042 1.63421.7842 1.95142.0688]'先观察x与z之间,y与z之间的散点图plot(x,z,'*')plot(y,z,'*')由散点图可以看出,投资额和国民生产总值与物价指数都近似呈线性关系,因此可以建立多元线性回归模型012z x y βββε=+++直接利用统计工具箱直接计算[b,bint,r,rint,stats]=regress(z,X,alpha)输入z :n 维数据向量X:[ones(20,1) x y],这里的1是个向量,元素全为常数1,即为ones(n,1)Alpha:置信水平,一般为0.05输出b :β的估计值bint:b 的置信区间r :残差向量z-Xbrint: r 的置信区间Stats:检验统计量2R ,F , p代入上述公式[b,bint,r,rint,stats]=regress(z,X,0.05)有b =322.80.4168-859.2322.75630.61850.859.479=+-z x y由stats =0.2672 920.7 0知z的99.085%可由模型确定,F远超过F检验的临界值,p远小于α=0.05 .bint =224. 421.70.0184 0.8151-1121. -597.5b的置信区间不包含零点,x,y对z影响都是显著的。

matlAB第1讲数学建模简介

matlAB第1讲数学建模简介
我们要建立一个模型来描述热量通过窗户的热传导(即 流失)过程,并将双层玻璃窗与用同样多材料做成的单层玻 璃窗(如右图,玻璃厚度为)的热量传导进行对比,对双层 玻璃窗能够减少多少热量损失给出定量分析结果。
返回
怎样撰写数学建模的论文? 1、摘要:问题、模型、方法、结果 2、问题重述 3、模型假设 4、分析与建立模型 5、模型求解
机理分析法建模的具体步骤大致可见右符合实际不符合实际交付使用从而可产生经济社会效益实际问题抽象简化假设确定变量参数建立数学模型并数学数值地求解确定参数用实际问题的实测数据等来检验该数学模型建模过程示意图模型数学模型的分类
数学建模与数学实验
数学建模简介
数学建模简介
1.关于数学建模
2.数学建模实例
A.人口预报问题 B. 椅子能在不平的地面上放稳吗? C.双层玻璃的功效
3.数学建模论文的撰写方法
一、名词解释
1、什么是数学模型?
数学模型是对于现实世界的一个特定对象,一个 特定目的,根据特有的内在规律,做出一些必要的假 设,运用适当的数学工具,得到一个数学结构。
简单地说:就是系统的某种特征的本质的数学表 达式(或是用数学术语对部分现实世界的描述),即 用数学式子(如函数、图形、代数方程、微分方程、 积分方程、差分方程等)来描述(表述、模拟)所研 究的客观对象或系统在某一方面的存在规律。
建模过程示意图
三、数学模型及其分类
模型
具体模型
直观模型 物理模型 思维模型
抽象模型
符号模型
数学模型的分类:
数学模型
数式模型 图形模型
◆ 按研究方法和对象的数学特征分:初等模型、几何模型
、优化模型、微分方程模型、图论模型、逻辑模型、稳定性模

讲数学模型和建模的书籍

讲数学模型和建模的书籍

讲数学模型和建模的书籍
以下是一些关于数学建模和建模的书籍:
《数学建模算法与应用》司守奎
《数学建模基础教程》刘保东
《R语言实战》 (美)卡巴科弗(Robert I. Kabacoff)
《Matlab在数学建模中的应用》卓金武
《SAS常用统计分析教程》胡良平
《SPSS统计分析基础教程》&《SPSS统计分析高级教程》张文彤
《数学建模方法与分析》(美)Mark M. Meerschaert
《数学建模》(美)Frank R. Giordano; William P. Fox; Steven B. Horton 《数学建模竞赛优秀论文评析》杨桂明/朱家明
《美国大学生数学建模竞赛题解析与研究》王杰
《正确写作美国大学生数字建模竞赛论文》王杰
《Matlab神经网络43个案例分析》王小川
《Matlab智能算法30个案例》史峰
《Matlab与数学实验》艾冬梅
《系统动力学》钟永光
以上书籍仅供参考,可以到图书馆查阅或咨询专业人士,以获取更多关于数学建模和建模的书籍。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学实验与数学建模学习目标1.掌握利用Matlab软件进行了相关的数学运算的方法.2.以软件辅助来完成数学实验.3.了解数学建模思想方法,能够对一些简单问题建立数学模型求解分析.教学要求Matlab是Mathworks公司推出的用于数值计算的交互式软件系统,具有强大的数值分析、矩阵运算、信号处理、图形显示和建模仿真功能. Matlab是“Matrix Laboratory”的缩写,意思是“矩阵实验室”,其强大的数据处理能力和丰富的工具箱使它的编程极为简单,因此,它成为科学家和工程技术人员解决实际问题的首选计算工具软件。

本章的第一节主要介绍Matlab软件的简单使用方法,从第二节到第六节在讲解Matlab 用于解决高等数学和线性代数中的相关计算的函数基础上, 通过一些简单的数学实验例题,让学生体会如何用Matlab辅助解决数学问题. 最后,通过一些与线性代数相关的数学建模实例,让学生掌握数学建模的简单方法,学会利用Matlab软件辅助解决实际问题,以培养学生良好的数学意识和数学素质.6.1 Matlab环境及使用方法6.1.1 Matlab窗口管理Matlab启动后显示三个窗口,如图6.1所示。

左上窗口为工作区间窗口,显示用户定义的变量及其属性类型及变量长度。

工作区间窗口也可显示为当前目录窗口,显示Matlab 所使用的当前目录及该目录下的全部文件名。

左下窗口为历史窗口,显示每个工作周期(指Matlab启动至退出的工作时间间隔)在命令窗口输入的全部命令,这些命令还可重新获取应用。

右侧窗口为Matlab命令窗口,可在里面输入相关运算命令,完成相应计算。

三个窗口中的记录除非通过Edit菜单下的清除操作,否则将一直保存。

Matlab运行期间(即程序退出之前),除非调用Clear函数,否则Matlab会在内存中保存全部变量值,包括命令输入的变量以及执行程序文件所引入的变量。

清除工作空间变量值也可以通过Edit下拉菜单中的Clear Workspace命令实现。

Clear函数可以清除内存中的所有变量。

Matlab命令窗口输入的信息会保持在窗口中,并可通过通过滚动条重新访问。

一旦信息量超出其滚动内容容量,则最早输入的信息将会丢失。

可以通过在命令窗口中输入clc 命令来清除命令窗口中的内容,也可以通过Edit下拉菜单中的Clear Command Window子菜单清除,但这个操作仅清除命令窗口中的内容,但不能删除变量,要删除变量,只能通过clear.为在命令窗口中能够更加清晰地显示字母及数字,Matlab提供了format函数的几种功能。

其中format short e是系统默认的设置,显示5位数字,format long e显示格式转换为16位数字加3位指数位的显示格式.format compact命令将剔除显示中多余的空行或空格. 这此属性值也可通过单击File菜单的spreference子菜单,弹出的spreference设置窗口后选择Command Window项进行设置(如图6.2).图6.1 图6.2使用Matlab 过程中有两个有用的组合键“^c ”(Crtl+c)用于终止程序或函数的执行,也可用于退出暂停的程序或函数;“^p ”(Ctrl+p)用于将最近键入的信息显示在Matlab 命令窗口中,按Enter 键可再次执行该命令,连续按两次“^p ”,可调用上两次的输入信息,以此类推.6.1.2 Matlab 的基本语法Matlab 允许用户创建的变量名不可超过63个字符,多余部分将被忽略掉.变量名要求以大写或小写字母开头,后面跟大小写字母,数字或下划线。

字符间不允许有空格. 变量名区分大小写,例变量名A1与a1表示不同变量. 此外,不能使用希腊字母,或者上下标字符作为变量名,但可以拼写希腊字母,或在下标字符前加入下划线表示变量. 例如,1λ可写为lamda_1.Matlab 在命令窗口运行时,要求首先在“>>”提示符后定义一个或多个变量,并进行赋值,然后表达式才能够使用变量。

赋值运算符为“=”,输入变量名和等号后,按Enter 表示结束.例如要实现2=a ,则要在命令窗口中进行以下信息交互:>> a=2 用户输入a = 系统响应 2注:表达式后加分号(;)可省略系统响应信息的显示.Matlab 允许在一行中输入多个表达式,表达式间以逗号或分号进行分隔,行尾以Enter 键结束.用逗号分隔时系统会回显输入的值,如果用分号分隔表达式,不会输出响应信息. 例如按如下格式输入信息:>> a=2;b=2.5,c=3; 系统显示为:b =2.5000此时变量a 和b 的值不显示,但内存中存在. 标量的加、减、乘、除和幂运算分别用+,- ,*,/,^表示,默认的运算次序为:幂运算为最高,其次为乘除,最后为加减。

同时在表达式中可用圆括号来确定运算次序。

例6-1计算当6,3,2===c b a ,时cab t ⎪⎭⎫⎝⎛+=213的值.输入:>> a=2;b=3;c=6;t=(3/(1+2*a*b))^c 结果: t =1.5103e-004Matlab 软件中包含了大量的函数,表6.1、表6.2、表6.3、表6.4给出了一些常用的函数及其功能说明.表6.1 常用初等函数的Matlab表示数学函数Matlab表示exp(x)xesqrt(x)xln log(x)xlg log10(x)xx abs(x))sgn(x sign(x) 表6.2 三角函数和双曲函数的Matlab表示三角函数双曲函数数学函数原函数反函数原函数反函数表6.3 Matlab复数运算函数Matlab函数功能a Complex(a,b) 表示复数bi abs(z) 取复数z的模conj(z) 取复数z的共扼复数real(z) 取复数z的实部imag(z) 取复数z的虚部表6.4 小数转换为整数的Matlab函数Matlab函数功能fix(x) 舍去小数部分round(x) 四舍五入ceil(x) 取上整floor(x) 取下整Matlab 软件中还有一些内置的常量,如表6.5所示表6.5 部分常量的Matlab 表示数学常量Matlab 表示 πpi ∞inf 虚数单位ii(或j)一些特殊字符在Matlab 中有特殊的功能,如表6.6所示表6.6 特殊字符及其功能说明 符号 名称 功能有了上述基本知识后,我们就可以利用Matlab 进行一些简单的运算了. 例6-2 计算7ln 1arcsin 3sin2e -+π输入:>> sin(pi/3)+asin(1)-exp(2)*log(7) 结果: ans =-11.9416注:命令窗口作为计算器应用且未将计算结果分配给表达式时,Matlab 默认将计算结果分配给变量名ans.6.1.3 Matlab 的编辑器为了避免在命令窗口中输入多个表达式或重复输入一组表达式,且输入的表达式在执行完后能够进行修改, Matlab 定义了程序文件:包含一组命令的文件,文件中每一命令行的执行都同在命令窗口里的执行一样.程序文件可由Matlab 编辑器创建,编辑器的启动可由File 下拉菜单中New 子菜单下的file M 来完成,窗口如图6.3所示.使用Matlab 编辑器创建的程序文件,点击图6.3所示的Run 图标,可执行文件. 但在执行前首先要保存,保存可用File 下拉菜单中的as Save 子菜单,文件扩展名“.m ”将自动添加到文件名末尾. 文件名的命名规则与变量名的命名规则相同.例6-3 编写一个m 文件,用来计算下面的表达式)(θ2)(πθcos 2r R r R S L +++=其中)arcsin(θSrR =,50,12,30===S r R ,求L m 文件如下: R=30; r=12; S=50;theta=asin((R-r)/S);L=2*S*cos(theta)+pi*(R+r)+2*theta*(R-r) 运算结果: >> L = 238.4998Matlab 编辑器的另外一个重要的功能是用来定义函数. 函数具有模块化、结构化和重用性的特点,是Matlab 程序的重要组成部分,下面我们给出Matlab 定义函数的方法.Matlab 定义函数格式如下:Function [OutputVariables ]=FunctionName(InputVariables )图6.3%Comments Expression(s)其中,OutputVariables 是输出变量,变量之间用逗号隔开;InputVariables 是输入变量,变量之间用逗号隔开;Function 是保留字;FunctionName 是函数名称,命名规则与变量命名规则一致;函数文件可以存储在任何已定义或即将定义的路径下,但文件名必须是FunctionName.m ; %Comments 是函数程序的注释部分,为了增强程序的可读性;Expression(s)是实现函数功能的主体程序,由一行或多行Matlab 语句组合完成,函数的定义是在Matlab 的编辑器中完成的.注:当函数只是为了实现某一特定功能,而不涉及参数传递时,OutputVariables 或InputVariables 是可以省略的.例6-4 定义函数xy x y x f sin ),(2+=,并求当2,5π==y x 时的函数值.定义函数程序如下(在编辑器中输入): function value1=hanshu1(x,y) value1=x^2+sin(x*y); 保存为hanshu1.m在命令窗口中输入如下信息: >> hanshu1(5,pi/2) 结果: ans = 266.2 高等数学与MatlabMatlab 的符号运算工具箱包含了微积分运算、解微分方程等几个方面的工具,本节我们主要介绍利用Matlab 软件辅助解决高等数学中的相关计算问题.6.2.1 求函数极限求函数极限是高等数学中的重要计算,它在数学模型的分析和预测中起着重要的作用,Matlab 提供了求极限的符号函数limit 来完成这项工作,其调用格式和功能如表6.7所示.表6.7 limit 函数使用说明格式功能l=limit(S,x,a) 求符号函数S ,当a x →时的极限 l=limit(S,x,a,’right ’) 求符号函数S ,当+→a x 时的右极限 l=limit(S,x,a,’left ’)求符号函数S ,当-→a x 时的左极限注:对于符号函数S ,也可以是普通的Matlab 内置或自定义函数. 下面通过实例来说明这一函数用法: 例6-5 求xx xx e e -∞→+∞→lim lim 和输入: >> syms x>> r_value=limit(exp(x),x,+inf), l_value=limit(exp(x),x,-inf) 结果: r_value = infl_value = 0 注:“syms x ”语句是用来创建符号变量. 例6-6 求xx xx e e 01lim lim →→-和输入:>> syms x>> l_value=limit(exp(1/x),x,0,'left'),value=limit(exp(1/x),x,0) 结果: l_value = 0value = NaN注:NaN 在Matlab 里面表示数值(结果)不存在.6.2.2 求导运算求函数的导数和微分是高等数学中的基本计算,也是解决实际问题过程中的常用的一种方法,Matlab 提供了专门求导数的符号函数diff ,能够帮助解决求导数和微分的问题.diff 的调用格式和功能如表6.8所示表6.8 diff 函数使用说明格式 功能d=diff(S,’x ’) 求符号函数S 关于变量x 的一阶导数(偏导数) d=diff(S,’x ’,n)求符号函数S 关于变量x 的n 阶导数(偏导数)注:对于符号函数S ,也可以是普通的Matlab 内置或自定义函数.下面我们通过两个实例来说明这函数的用法:例6-7 求导数x dx dsin ,求偏导数33∂)sin(∂,∂)sin(∂x xy x xy 输入:>> df1=diff('sin(x)','x'),df2=diff('sin(x*y)','x'),... df3=diff('sin(x*y)','x',3) 结果: df1 = cos(x) df2 =cos(x*y)*y df3 =-cos(x*y)*y^3或输入: >> syms x y>> df1=diff(sin(x),x),df2=diff(sin(x*y),x),... df3=diff(sin(x*y),x,3)也可得到相同的结果,后面类似问题两种输入方法均可,不再赘述. 例6-8 求函数xy x y x f sin ),(2+=对变量x 的一阶、二阶偏导.在例6-4定义的函数基础上,我们在命令窗口中输入如下信息: >> syms x y>> df1=diff(hanshu1(x,y),x),df2=diff(hanshu1(x,y),x,2) 结果: df1 =2*x+cos(x*y)*y df2 =2-sin(x*y)*y^2多元函数的雅克比矩阵是一个非常重要的概念,多元函数的积分、矩阵微积分及坐标转换等都要用到它,在Matlab 中用jacobian 函数求雅克比矩阵,其调用格式如下:j=jacobian(F,V)其中F 是函数向量,V 是自变量向量.例6-9 计算函数向量T t e xyz xf ])sin([2=关于自变量t z y x ,,,的雅克比矩阵.在命令窗口中输入下列命令: >> syms x y z t;>> f=[x^2 sin(x*y*z) exp(t)]; >> v=[x y z t]; >> j=jacobian(f,v) 输出结果为: j =[ 2*x, 0, 0, 0] [ cos(x*y*z)*y*z, cos(x*y*z)*x*z, cos(x*y*z)*x*y, 0] [ 0, 0, 0, exp(t)]注:关于向量、矩阵的表示及相关运算,我们将在下一节作详细介绍,这里主要介绍一下jacobian 函数的用法.6.2.3 积分运算Matlab 提供了两类计算积分的函数,一类是符号积分函数,一类是数值积分函数.下面我们先介绍符号积分函数int ,其调用格式和功能如表6.9所示:表6.9 int 函数使用说明格式 功能int(F) 求符号表达式F 求关于自变量的不定积分 int(F,’s ’) 求符号表达式F 求关于自变量s 的不定积分 int(F,a,b) 求符号表达式F 当自变量从a 到b 的定积分 int(F,’s ’,a,b)求符号表达式F 当自变量s 从a 到b 的定积分下面我们通过实例来说明函数的用法: 例6-10 计算⎰=xdx y f sin 1和dy xy dx f x ⎰⎰-=21012输入:>> syms x y>> f1=int(y*sin(x),x),f2= int(int(x*y,y,0,sqrt(1-x^2)),x,0,1) 结果: f1 =-y*cos(x) f2 =1/8下面我们来介绍数值积分函数quad,dblquad,triplequad 的用法表6.10 数值积分函数使用说明格式功能quad(F,a,b)从a 到b 计算符号函数F 的数值积分 dblquad(F,x1,x2,y1,y2)计算符号函数F 在区域[]2121,,,y y x x 上的二重数值积分 triplequad(F,x1,x2,y1,y2,z1,z2)计算符号函数F 在区域[]212121,,,,,z z y y x x 上的三重数值积分注:关于上述三个函数更详细的用法请参考软件提供的帮助. 例6-11 计算xdy y dx f sin 1112⎰⎰-=和⎰⎰⎰-+=π01011)cos sin (2dz x z x y dy dx f输入:>>f1=dblquad('sqrt(y)*sin(x)',-1,1,0,2),...f2=triplequad('y*sin(x)+z*cos(x)',0,pi,0,1,-1,1) 结果: f1 =-4.4306e-018 f2 =2.00006.2.4 微分方程的求解Matlab 提供了两类求解微分方程的函数,一类是求微分方程的符号解,一类是求微分方程的数值.本部分主要介绍利用dsolve 求微分方程的符号解,其调用格式如表6.11.表6.11 dsolve 函数使用说明格式功能dsolve(’equation ’)求方程equation 通解,自变量默认为t dsolve(’equation ’,’condition ’)求方程equation 满足初始条件condition的特解,自变量默认为tdsolve(’equation ’,’x ’)求方程equation 通解,自变量为xdsolve(’equation ’,’condition ’,’x ’) 求方程equation 满足初始条件condition的特解,自变量为x说明:(1)equation 代表常微分方程式0),",,(=ny y y x f ,且'y 用Dy 表示,"y 用D2y 表示,以此类推. Condition 为初始条件.(2)函数dsolve 可用来求常微分方程、方程组的解.例6-12 求方程xx y y 3'+=的通解.输入:>> dsolve('Dy=(y+x^3)/x') 结果: ans =-x^3+exp(1/x*t)*C1这显然是个错误的结果,程序将t 看作是自变量,而x 是常量了. 正确输入如下:>>dsolve('Dy=(y+x^3)/x','x') 结果: ans =1/2*x^3+x*C1例6-13 求方程xxe y y y 233'2"=--满足1',000====x x y y 的特解.输入:>>solve('D2y-2*Dy-3*y=3*x*exp(2*x)','y(0)=0,Dy(0)=1','x') 结果: ans =-1/3*exp(2*x)*(3*x+2)-1/3*exp(-x)+exp(3*x) 求常微分方程数值解方面,Matlab 提供了比较丰富的函数,其中常用的为ode45和ode32,两个函数都运用了基本的龙格-库塔(Runge-Kutta)数值积分法的变形,其基本调用格式如下:[t,Y]=ode45(diffeq,[t0 tn],y0,options,arg1,arg2,...)其中,第一个参数diffeq 是一个m 文件的名字,该文件用来计算微分议程的右端表达式;t0,tn 定义了求解总区间,如果t0未知,则假设其为0;y0为初始条件;options 为函数ode45参数;而参数arg1,arg2,...是传给用户自己定义的diffeq 程序的.ode32用法与ode45相同. 求常微分方程的数值解问题现阶段我们遇到不是很多,所以在这里不作详细讲解,如果用到可查阅Matlab 帮助文件.6.3 线性代数与Matlab前面我们的例子中的变量都是标量,而Matlab 的强大之处在于它是以数组作为变量来进行运算的,这将使我们处理大量的数据变得十分方便,本节我们将重点介绍如何定义和使用Matlab 中的矩阵变量来进行简单的计算.6.3.1 向量的创建及对元素的操作行向量在Matlab 表示为:]21[],,2,1[an a a an a a a 或=,列向量在Matlab 中表示为];;2;1[bn b b b =,其中的bi ai 或可以是数值、字符串、预先定义的变量或表达式. 向量的创建可以是直接按格式输入元素,也可以用Matlab 函数完成,这里面有两个常用的创建向量的命令分别是冒号(:)和linspace ,其调用格式如下(1)1::0x d x x =其中0x 表示向量的起始值,d 表示步长,1x 表示向可能结束值,若向量的元素为n 个,则它们满足10x nd x ≤+ . (2) x =linspace(n x x ,1,0)它表示在区间]1,0[x x 上等距离的取n 个数,作为向量的值, 系统默认n 为100.例如输入如下信息:>>x1=0.2:2:12,x2=linspace(0.2,12,6) 结果: x1 =0.2000 2.2000 4.2000 6.2000 8.2000 10.2000 x2 =0.2000 2.5600 4.9200 7.2800 9.6400 12.0000 对于向量及其元素的操作见表6.12所示表6.12 向量及其元素操作格式 功能n=length(x)返回向量元素个数 x ’ 求向量x 的转置 x(i) 取向量x 的第i 个元素 x(i)=a 取向量x 的第i 个元素赋值为a x(end) 取向量x 的最后一个元素 y=x([i,j,k]) 取x 的第i ,k j ,元素构成新的向量[xnew,index]=sort(x)xnew 是升序排列后的向量x ,index 是xnew 中元素在x 中的位置构成的向量index=find(condition) 将向量x 中满足condition 条件的元素下标做成向量index[xmax,kmax]=max(x) xmax 表示向量x 的最大值,kmax 表示最大值位置[xmin,kmin]=min(x) 功能与max 类似f(x) 对向量中每个元素求函数值 sum(x) 求向量x 的所有元素之和 cumsum(x) 返回以向量x 的元素的部分和数列为元素的向量norm(x) 求向量的范数 mean(x) 求向量的平均值 std(x) 求向量的标准差在对向量及其元素的操作过程中,上述命令总是组合使用.2,0[ 上等间距取8个值,做成行向量,求例6-14 在区间](1)求各点处正弦值,取出其中最大值,并指明位置(2)取出所有大于0的正弦值,将其加上1后,做成一个新的列向量.为一更好的完成上述工作,我们将其做成一个m文件,程序如下:x=linspace(0,2*pi,8) %取向量xy=sin(x) %对x中的每一个元素计算sin值,新向量赋值给向量y [ymax,kmax]=max(y) %求y中的最大值index=find(y>0) %将y中大于0的元素下标做成一个向量y1=y(index)+1 %利用下标向量index将y中小于0的元素取出加1y1=y1’ %将行向量转置为列向量,重新赋值给y1保存程序后运行,结果为:x =0 0.8976 1.7952 2.6928 3.5904 4.4880 5.3856 6.2832y =0 0.7818 0.9749 0.4339 -0.4339 -0.9749 -0.7818 -0.0000ymax =0.9749kmax =3index =2 3 4y1 =1.7818 1.9749 1.4339y1 =1.78181.97491.43396.3.2 矩阵的创建及对元素的操作一个3行4列的矩阵A在Matlab表示为A=[a11,a12,a13,a14;a21,a22,a23,a24; a31,a32,a33,a34;a41,a42,a43,a44] 或A=[a11,a12,a13,a14;…a21,a22,a23,a24;…a31,a32,a33,a34;…a41,a42,a43,a44]a可以是数值、字符串、预先定义的变量或表达式,上述格式中的逗号可以用空格代替.其中ij简而言之,矩阵在Matlab中表示为用[ ]括起来的一组元素,同一行元素之间用逗号(,)或空隔分隔,行与行之间用分号(;)分隔.矩阵的创建可以是直接按格式输入元素,也可以用Matlab函数完成,表6.13给出了创建特殊矩阵的函数表6.13 创建特殊矩阵函数格式 功能ones(m,n) 创建n m ⨯阶所有元素都是1的矩阵 zeros(m,n) 创建n m ⨯阶所有元素都是0的矩阵 diag(a)创建n 阶对角阵,对角线上元素为向量a 的元素eye(n) 创建n 阶单位矩阵 magic(n) 创建n 阶魔方阵repmat(x,m,n)创建n m ⨯阶所有元素都是x 的矩阵[U,V]=meshgrid(s,t) 由两个行向量t s 和,构建两个维数相同的矩阵U 和V注:repmat 参数中的x 可以是标量、向量或矩阵.为了能更好的说明meshgrid 的功能,我们给出下面一个简单的例子:如果]3,2,1[,]4,3,2,1[y y y y x x x x x ==,则命令:[X,Y]=meshgrid(x,y)将返回的两个43⨯的矩阵:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=432143214321x x x x x x x x x x x x X ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=333322221111y y y y y y y y y y y y Y 这个函数在做三维图形时会有十分有用.向量可以看作是列(行)矩阵,而矩阵的每一列(行)也可以看作是一个向量,所以我们也可以通过向量的组合来创建矩阵,比如下面的命令就可以创建一个新的矩阵:输入:>> A=[2:3:15;linspace(10,21,5);ones(1,5)] 结果:A =2.0000 5.0000 8.0000 11.0000 14.0000 10.0000 12.7500 15.5000 18.2500 21.0000 1.0000 1.0000 1.0000 1.0000 1.0000 对于矩阵及其元素的操作见表6.14所示表6.14 矩阵及其元素操作格式 功能A(i,j) 取出矩阵A 的第i 行与第j 列交叉点元素ij aA(i,j)=a 赋值操作a a ij =A(i,: )取出矩阵A 的第i 行所有元素,构成一个行向量 A( :,j)取出矩阵A 的第j 列所有元素,构成一个列向量A([i1,i2],[j1,j2,j3])取出矩阵A 的1i 行和2i 行,与1j 列和2j 列和3j 列交叉点的元素,构成A 的一个子矩阵sort(A) 按升序排列矩阵列元素max(A) 求矩阵A 中每一列的最大值 min(A)求矩阵A 中每一列的最小值sum(A)将矩阵A 的各列元素相加,返回一个长度等于A 列数的行向量[m,n]=size(A) 返回矩阵A 的行数m 和列数nf(A) 对A 的每个元素求函数值注:A(i, =[]或A(:,j)=[],则表示删除第i 行或第j 列.例6-15 给定矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=121110987654321A ,完成如下工作 (1)将矩阵A 的第4列全部赋值为0元素.(2)求矩阵A 的最大值.(3)取A 的第1,3行和2,3列交叉点元素,取自然对数后,构成新的矩阵B . 我们将其做成一个m 文件,程序如下:A=[1,2,3,4;5,6,7,6;9,10,11,12]; %创建矩阵AA(:,4)=0 %A 的第4列全部赋值为0 maxvalue=max(max(A)) %求矩阵A 的最大值B1=A([1,3],[2,3]) %B1为A 的第1,3行,第2,4列元素构成的矩阵 B=log(B1) %B 中的每个元素取自然对数 保存后,运行结果如下: A =1 2 3 0 5 6 7 0 9 10 11 0 maxvalue = 11 B1 =2 3 10 11 B =0.6931 1.0986 2.3026 2.39796.3.3 矩阵的运算矩阵的运算主要分成两类,矩阵的点运算和线性代数中的矩阵运算. 同时需要指明的是,因为向量可以看成是特殊的矩阵,所以本部分所讲的关于矩阵的各种运算,同样适用于向量. 下面我们分别将两类运算做一介绍.在Matlab 中,矩阵的点(.)运算是指对同阶矩阵中逐个元素进行的算术运算,分别为点乘(.*)、点除(./)和点幂(.^).下面我们以两个32⨯矩阵来分别说明其功能.令⎥⎦⎤⎢⎣⎡=232221131211x x x x x x X ,同时⎥⎦⎤⎢⎣⎡=232221131211y y y y y y Y 则⎥⎦⎤⎢⎣⎡==232322222121131312121111*******.1y x y x y x y x y x y x Y X Z⎥⎦⎤⎢⎣⎡==232322222121131312121111///////.2y x y x y x y x y x yx Y X Z ⎥⎦⎤⎢⎣⎡==232322222121131312121111^^^^^^.^3y x y x y x y x y x y x Y X Z这里需要说明的是对于点乘,如果0x X =且0x 为标量,则点可以省略,即Y x Z *10=,类似的,如果0y Y =且0y 为标量,则0*1y X Z =;对于点除,如果0y Y =且0y 为标量,则点可以省略,即0/2y X Z =,但是如果0x X =且0x 为标量,则点不可以省略,Y x Z /.20=;对于点幂运算,不论是0x X =还是0y Y =取标量,点都不可以省略,即Y x Z .^30=和0.^3y X Z = .例6-16 求在区间20≤≤x 区间内,x 等距离取6个值时,表达式cx c bx e y ax++=-)cos(的值. 其中,3,2.1,3.0π===c b a .M 文件的程序代码如下: a=0.3;b=1.2;c=pi/3; x=linspace(0,2,6);y=exp(-a*x).*cos(b*x+c)./(x+c) 结果: y =0.4775 0.0267 -0.1800 -0.2463 -0.2302 -0.1718 例6-17 利用向量元素操作函数中的sum 和cumsum ,求表达式∑==51n n n z的值,及其部分和数列对应向量.输入:>> n=1:5;…an=n.^n,…%计算级数一般项s=sum(an),…%求表达式值 sn=cumsum(an)%求部分和 结果: an =1 4 27 256 3125 s =3413 sn =1 5 32 288 3413在线性代数中矩阵的运算包括:加、减、乘、转置、求逆等,其基础理论在前面都做详细的介绍,这里不再赘述。

相关文档
最新文档