Matlab简介
MATLAB语言简介

Help Window命令:打开MATLAB旳帮助窗口。
Help Tips命令: 打开帮助窗口,并首先显示MATLAB
旳帮助系统旳分类和使用措施。
Help Desk(HTML)命令: 打开系统WWW浏览器,并显示
MATLAB旳帮助桌面。
Examples and Demos命令:能够经过演示MATLAB提供旳
Clf 清理图形窗口
Load 加载指定文件旳变量
Pack 搜集内存碎片
Diary 日志文件命令
Clc 清理工作窗口
Quit 退出
Echo 工作窗信息显示开关 !
调用DOS命令
2.1.6 MATLAB常用旳命令和技巧 2.某些常用操作技巧
利用键盘按键,可实现简易操作:
home 光标置于目前行开头 end 光标置于目前行末尾 esc 清除目前输入行 del 删除光标处旳字符
Edit菜单项:
Undo、Cut、Copy、Paste命令:分别用于撤消上一次操
作、剪切、复制和粘贴。
Clear命令:
删除内容。
Select All命令:
用于选定全部文本内容。
Clear Session命令:
清除命令编辑区旳全部内
容,但并不删除工作空间
中旳变量。
2.1.4 MATLAB旳桌面平台
Help菜单项:
3. 图形功能
MATLAB提供了两个层次旳图形命令:一种是对图形句 柄进行旳低档图形命令,另一种是建立在低档图形命令之上 旳高级图形命令。利用MATLAB旳高级图形命令能够轻而易 举地绘制二维、三维乃至四维图形,并可进行图形和坐标旳 标识、视角和光照设计、色彩精细控制等等。
2.1.1 MATLAB特点
Open命令:
MATLAB简介

logspace 对数等分的行矢量
Logspace(x1,x2,n)生成从10x1到10x2包含n 个数据的矢量 >> logspace(1,3,3) >> magic(3) ans = ans = 10 100 1000 8 1 6 >> cell(3) 3 5 7 >> eye(3) ans = 4 9 2 ans = [] [] [] 1 0 0 Magic(n)为元素1到n^2 [] [] [] 0 1 0 之间,行、列、对角线 [] [] [] 0 0 1 的和都相等的n维矩阵
例1:
0 5 cos 47 例2:计算表达式的值 并将结果赋给变量x 1 7 2i
4、表达式从左至右、指数最先,乘除加减、括号提前。
>>6+4*3^2 ans = >> x=(5+cos(47*pi/180))/(1+sqrt(7)-2i) 42
例9:演示内带程序 >>ballode %自由下落小球与地面非弹性碰撞的运动轨迹 >>demo %演示Matlab的基本功能
2、数据格式:
① 10的幂为e加上正负数字: 1.062e-20 6.022e23 ② 数字后直接加 i 或 j表示虚数 :-3.14i 5+3i
3、算符
算术运算算符: + - * / ^ ( ) sqrt( ) 关系运算算符:<、>、 <=、 ==、 >=、 ~= 逻辑运算算符:与 &、或│、非 ~
例3:输入10个学生的成绩并对成绩按升序排序。 在指令窗口输入命令: g=input('请输入学生成绩:') sort(g) 请输入学生成绩: [65 78 96 98 91 84 79 83 74 81]
Matlab简介

p = 3.1484 p = 3.1396
当n提高到50000时, 重复计算4次,计算结果: p = 3.1396 p = 3.1431
p = 3.1296 p = 3.1421
三、绘图功能
3.1 二维图形 plot(y)、 ezplot是绘制二维图形常用的命令 例 画出函数 y sin x 在-5 x 5的图形。
Matlab软件简介 哈尔滨理工大学 数学建模组
Matlab是数学建模常用软件之一,也是 在各个专业领域,特别是在工程实际领域 应用最广泛的计算软件,并已成为一个通 用的计算工具。
一、Matlab概述
1.1 Matlab的发展 Matlab语言是由美国的Clever Moler博 士于1980年开发的。
计算符号表达式F在x→a下的极限。 例2.计算 lim (3x 5) 1
x
x3 sin(
x
2
)
>> syms x; >> f=('(3*x-5)/(x^3*sin(1/x^2))'); >> limit(f,x,inf)
ans=3
3. 符号微分
diff(S)
求符号表达式S的微分 (即求一元导数)
1.3 Matlab语言的特点:
语言简洁紧凑,语法限制不严,程序设计 自由度大,可移植性好 运算符、库函数丰富 图形功能强大 界面友好、编程效率高 扩展性强
它将一个优秀软件的易用性与可靠性、通用 性与专业性 、一般目的的应用与高深的科学 技术应用有机地相结合。
Matlab是一种直译式的高级语言,比其它程 序设计语言容易。
MatLab软件简介

MatLab 软件简介(Version 6.5)A.1 概述MatLab (Matrix Laboratory )是矩阵实验室的意思,既是一种语言,又是一个编程环境。
MatLab 是数学计算的强有力工具,是一种用于工程计算的高性能语言,它以矩阵作为数据操作的基本单位,在数理统计、自动控制、数字信号处理、动态系统仿真方面有着重要的应用。
A.1.1 MatLab 的特点其特点体现在以下几个方面: ◆ 编程效率高 ◆ 用户使用方便 ◆ 扩充能力强 ◆ 语句简单◆ 高效方便的矩阵和数组运算 ◆ 方便的绘图功能 ◆ 开放的源程序A.1.2 MatLab 的构成MatLab 主要由5部分组成: ◆ MatLab 工作环境 ➢ 桌面 ➢ 命令窗口➢ 命令历史工作期 ➢ 帮助浏览器 ➢ 工作空间➢ M 文件和搜索路径窗口 ◆ MatLab 数学函数库➢ 基本函数:如,sum,sin ,cos 等➢ 复杂函数:如,求矩阵特征值、特征向量、求逆、bessel 函数,fourier 变换 ◆ MatLab 语言➢ 以矩阵和向量为基本数据单位➢ 有控制流程语句、函数、数据结构、输入/输出语句等 ➢ 面向对象 ◆ 句柄图形句柄图形是MatLab 的图形系统,包括:➢ 高层次绘图命令➢低层次绘图命令A.1.3 MatLab 的运行方式(1) 命令行运行方式,格式:变量=表达式 或 表达式 例如在命令窗口输入:a=[1 2 3;4 5 6;7 8 9] 结果为: 二维和三维数据的可视化命令 图像处理命令 动画制作修改图形局部的命令 编制完整图形界面的命令1 2 34 5 67 8 9(2)M文件运行方式,如M文件名为abcd.m 则在命令窗口输入abcd回车即得运行结果。
帮助系统如何进入帮助系统方法一:利用任一窗口“Help”菜单。
方法二:利用发射台窗口。
帮助命令:help 函数名help sqrtA.2 数值运算A.2.1 变量◆规则:✧变量和常量的标识符最长允许31个字符✧函数与文件名通常不超过8个字符(受文件管理器的限制)✧字符可以是英文字母、阿拉伯数字和下划线,标识符中第一个必须是英文字母✧变量区分大小写:Cost与cost变量是不同的◆特殊变量名ans pi eps(系统浮点精确度)inf NaN i或j realmax realminnargin (函数的输入参数个数),nargout(函数的输出参数个数)A.2.2 矩阵与数组的创建与运算1.数组是程序设计语言中用到的一种数据结构,不是数学概念。
matlab简介

MATLAB简介一.MATLAB的特点MATLAB(Matrix Laboratory)是美国Math Works软件公司于1982年推出的一套用于工程和科学计算的可视化工具软件。
以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。
在这里可以实现工程计算、算法研究、符号运算、建模和仿真、原型开发、数据分析及可视化、科学和工程绘图、应用程序设计等等功能。
它现在已经成为世界上应用最广泛的工程计算软件。
以下为其几个特色:•功能强的数值运算 - 在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函数可使用,函数的标示自然,使得问题和解答像数学式子一般简单明了,让使用者可全力发挥在解题方面,而非浪费在电脑操作上。
•先进的资料视觉化功能 - MATLAB的物件导向图形架构让使用者可执行视觉数据分,并制作高品质的图形,完成科学性或工程性图文并茂的文章。
•高阶但简单的程式环境 - 做为一种直译式的程式语言,MATLAB容许使用者在短时间内写完程式,所花的时间约为用 FORTRAN 或 C 的几分之一,而且不需要编译(compile)及联结 (link) 即能执行,同时包含了更多及更容易使用的内建功能。
•开放及可延伸的架构 - MATLAB容许使用者接触它大多数的数学原使码,检视运算法,更改现存函数,甚至加入自己的函数使 MATLAB成为使用者所须要的环境。
•丰富的程式工具箱 - MATLAB的程式工具箱融合了套装前软体的优点,与一个灵活的开放但容易操作之环境,这些工具箱提供了使用者在特别应用领域所需之许多函数。
现有工具箱有:符号运算(利用Maple V的计算核心执行)、影像处理、统计分析、讯号处理、神经网路、模拟分析、控制系统、即时控制、系统确认、强建控制、弧线分析、最佳化、模糊逻辑、mu分析及合成、化学计量分析。
MATLAB主要包括主包、Simulink和工具箱三大部分组成。
MATLAB简介

数学软件MATLAB简介MATLAB是美国MathWorks公司于1984年推出的数学软件,它集数值分析、矩阵运算、信号处理和图形显示于一身,构成了一个使用方便、界面友好的用户环境。
在MATLAB窗口下,对于所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形的方式显示出来。
1.MATLAB的发展历程(1)20世纪70年代中期:Cleve Moler博士等人开发了EISPACK(求解特征值)和LINPACK(求解线性方程)的FORTRAN程序库(代表了当时矩阵计算软件的最高水平)。
(2)20世纪70年代后期,Cleve Moler(美国New Mexico大学计算机系主任)给学生讲授线性代数时,为学生编写了使用EISPACK 和LINPACK的接口程序,并以MARLAB来命名(Matrix Laboratory 两个单词的前3个字母组合,即矩阵实验室)。
以后数年中,MARLAB在多所大学里作为教学辅助软件使用,并作为免费软件广为流传。
(3)1983年春天,Cleve Moler到Stanford大学讲学,MATLAB 引起了工程师John Little的极大兴趣,他敏锐地觉察到MATLAB 在工程领域的广阔前景。
同年他和Cleve Moler、Steve Bangert一起,用C语言开发了第二代专业版MATLAB,使之同时具备了数值计算和数据图视化功能。
(4)1984年,Cleve Moler和John Little成立了MathWorks 公司,正式把MATLAB推向市场,并继续进行MATLAB的研究与开发。
1992年MathWorks公司推出MATLAB4.0。
1997年推出MATLAB5.0(真正32位计算)。
2000年推出MATLAB6.0版本,2003年推出MATLAB6.5。
2004年7月,推出MATLAB7.0版本,2007年推出MATLAB7.3。
经过多年的国际竞争,MATLAB已经占据了数值计算软件市场的主导地位,发展成为适合多学科、多种工作平台的功能强劲的大型数学软件。
什么是MATLAB

MATLAB简介MATLAB软件是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。
MATLAB是英文MATrix LABoratory(短阵实验室)的缩写。
它的第1版(DoS版本1.0)发行于1984年,经过十几年不断改进,现今已推出它的WINDWS XP版本(2009b版)。
新的版本集中了日常数学处理中的各种功能,包括高效的数值计算、矩阵运算、信号处理和图形生成等功能。
在MATLAB环境下,用户可以集成地进行程序设计、数值计算、图形绘制、输入输出、文件管理等各项操作。
MATLAB提供了一个人机交互的数学系统环境,该系统的基本数据结构是矩阵,在生成矩陈对象时,不要求作明确的维数说明。
与利用C语言或FORTRAN语言作数值计算的程序设计相比,利用MATLAB可以节省大量的编程时间。
在工程技术界,MATLAB被用来解决一些实际课题和数学模型问题。
典型的应用包括数值计算、算法预设计与验证,以及一些特殊的短阵计算应用,如自动控制理论、统计、数字信号处理(时间序列分拆)等。
进入了20世纪90年代,MATLAB已经成为国际控制界公认的标准计算软件。
MATLAB因其提供计算、图形、文字处理的统一环境而深受欢迎。
MTALAB系统由五个主要部分组成,下面分别加以介绍。
(1)MATALB语言是高层次的矩阵/数组语言。
具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。
利用它既可以进行小规模编程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。
(2)MATLAB工作环境这是对MATLAB提供给用户使用的管理功能的总称。
包括管理工作空间中的变量据输入输出的方式和方法,以及开发、调试、管理M 文件的各种工具。
(3)MATLAB图形系统的基础,包括完成2D和3D数据图示、图像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对象进行特性控制的低层MATLAB命令,以及开发GUI应用程序的各种工具。
2024版Matlab简介PPT课件

Matlab简介PPT课件•Matlab概述•Matlab基础知识•矩阵运算与线性代数应用•图形绘制与可视化技巧目录•数值计算与优化方法探讨•程序设计实践案例分析Matlab概述01Matlab定义与发展历程定义Matlab是一种用于算法开发、数据可视化、数据分析以及数值计算的高级语言和交互式环境。
发展历程由MathWorks公司开发,历经多个版本迭代,逐渐成为科学计算和工程领域的标准工具。
主要功能及应用领域主要功能数值计算、符号计算、图形处理、编程与仿真等。
应用领域信号处理、控制系统、通信、图像处理、金融建模等。
编程环境与界面介绍编程环境提供丰富的函数库和工具箱,支持多种编程范式,如面向对象编程。
界面介绍集成开发环境包括编辑器、命令窗口、工作区等,方便用户进行代码编写、调试和数据可视化。
版本更新与兼容性版本更新Matlab不断推出新版本,增加新功能和优化性能,提高用户体验。
兼容性新版本通常兼容旧版本的文件和代码,但部分功能可能有所调整或改进。
同时,Matlab也提供了丰富的文档和社区支持,帮助用户顺利过渡到新版本。
Matlab基础知识02Matlab支持多种数据类型,包括数值型、字符型、逻辑型、结构体、单元数组等。
变量声明在Matlab中,变量无需事先声明,可以直接赋值使用。
同时,Matlab也支持显式声明变量类型和大小。
数据类型数据类型与变量声明VSMatlab提供了丰富的运算符,包括算术运算符、关系运算符、逻辑运算符等。
在书写表达式时,需要注意运算符的优先级和结合性,以及使用括号来改变运算顺序。
运算符表达式书写规则运算符和表达式书写规则03其他流程控制语句Matlab 还支持break 、continue 、return 等流程控制语句,用于在特定条件下控制程序的执行流程。
01条件语句Matlab 中常用的条件语句有if 语句和switch 语句,用于根据条件执行不同的代码块。
02循环语句Matlab 提供了for 循环和while 循环两种循环结构,用于重复执行某段代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB简介MATLAB是一个集数值计算、符号分析、图象显示、文字处理于一体的大型集成化软件.它最初由美国的Cleve Moler博士所研制.其目的是为线性代数等课程中的矩阵运算提供一种方便可行的实验手段.经过十几年的市场竞争和发展,MATLAB已发展成为在自动控制、生物医学工程、信号分析处理、语言处理、图像信号处理、雷达工程、统计分析、计算机技术、金融界和数学界等各行各业中都有极其广泛应用的数学软件.归纳起来,MATLAB具有以下几个特点:易学、适用范围广、功能强、开放性强、网络资源丰富.由于MATLAB的强大功能,它能使使用者从繁重的计算工作中解脱出来,把精力集中于研究、设计以及基本理论的理解上,所以,MATLAB已成为在校大学生、硕士生、博士生所热衷的基本数学软件.在此,我们把MATLAB作为学习数学的工具介绍给读者,希望能有利于读者今后的学习.一MATLAB的运行启动MATLAB点击MATLAB图标,进入到MATLAB命令窗(MATLAB Command Window).在命令窗内,可以输入命令、编程、进行计算.学会使用help命令在命令窗内输入help命令,再敲回车键.在屏幕上出现了在线帮助总览.(注意:MATLAB命令被输入后,必需敲回车键才能执行.为行文方便,以后不再每次提醒“敲回车键”.)学会使用help命令,是学习MATLAB的有效方法.例如:要想知道MATLAB中的基本数学函数有哪些,可以在总览的第五行查到:MATLAB中的“基本数学函数”用elfun表示,于是,可进一步键入:“help elfun”,屏幕上将出现“基本数学函数”表.(注意:help elfun之间有空格,以后不再每次提醒.)如果想了解sin函数怎样使用,可进一步键入help sin.在工具栏中点击help按扭,或点击?号按扭,与上面获取帮助信息的方法是等效的.学会使用demo命令在命令窗内输入demo命令,再敲回车,键屏幕上将出现演示窗口.(MATLAB Demo Window)一共有三个窗口,左边的窗口显示欲演示内容的大标题,选定其中一项,右下方的小窗口显示欲演示的具体内容,选中其中一栏,再点击run按扭,屏幕上将演示选定的演示程序.右上方的窗口显示关于大标题的一些说明.在命令窗内输入type (文件名),将显示演示程序的M文件,仔细研究演示程序的M文件,是学习MATLAB的又一有效方法.进入演示窗还有另一方法:在工具栏中点击Help栏,下拉式菜单中点击examples and demos项,即可进入演示窗口.退出在工具栏中点击File按钮,在下拉式菜单中单击Exit MATLAB项即可.二变量、语句、矩阵与函数1.变量在MATLAB 中,变量由字母、数和下划线组成.第一个字符必须是字母.一个变量最多由31个字符组成,并区分大小写.下面是MATLAB 中表示特殊量的字符:pi (圆周率)、eps (最小浮点数)、Inf (正无穷大)、NaN (表示0/0或inf-inf 等不定值)、i,j (虚数单位)2.语句MATLAB 语句的一般形式为:变量=表达式.当某一语句的输入完成后,按回车键,计算机就执行该命令.如果该语句末没输入其它符号或输入了逗号,将显示结果;如果句末输入了分号,将不显示结果.如果语句中省略了变量和等号,那么计算机将结果赋值给变量ans .3.矩阵把m ×n 个数排成m 行n 列的数表,此数表被称为m 行n 列的矩阵,记为⎪⎪⎪⎭⎫ ⎝⎛=⨯mn m n n m a a a a A 1111MATLAB 中矩阵的输入方法如下:A=[a 11,…,a 1n ;…;a m1,…,a mn ].逗号是数之间的分隔符(也可用空格代替);分号是换行符.3.函数MATLAB 提供了大量的函数.可以通过help 查询.例如sqrt (开方)、log (常用对数)、log 10(以10为底的对数)、sin (正弦)等.这些函数都遵循下列规则:对于⎪⎪⎪⎭⎫ ⎝⎛=mn m n a a a a A 1111经过函数f 后得:⎪⎪⎪⎭⎫ ⎝⎛=)()()()()(1111mn m n a f a f a f a f A f例:我们要计算sin 6π,可键入:y=sin(pi/6)得 y =0.5000如果我们键入:x=[0,pi/6,pi/3,pi/2,2*pi/3,5*pi/6,pi];y=sin(x),得y = 0 0.5000 0.8660 1.0000 0.8660 0.5000 0.0000这里,对于x 有更简洁的输入方法:x=0:pi/6:pi ,此命令表示x 从0开始,以pi /6为步长变到pi 为止.如果我们键入:x=[0,pi/6;pi/3,pi/2];y=sin(x) 得y = 0 0.50000.8660 1.0000其它的函数的用法与此类似.三绘图绘制二维图形绘制二维图形的基本命令是plot(x,y).其中x、y是1×n阶矩阵.也可以用格式plot(x1,y1,x2,y2,…)把多条曲线画在同一坐标系下.在这种格式中,每个二元对x-y的意义都与plot(x,y)的相同,每个二元对x-y的结构也必须符合plot(x,y)的要求.但二元对之间没有约束关系.以上三种格式中的x、y都可以是表达式,但表达式的运算结果必须符合上述格式要求.MATLAB的图形功能还提供了一组开关命令.关于颜色和线形用下面的方法进行控制.plot(x,'r*') 表示用红色*号画线, plot(x,y,'b+')表示用蓝色+号画线,plot(x1,y1,'y-',x2,y2,'g:')表示第一组用黄色实线画线,第二组用绿色点线画线.MATLAB的线型字符有很多,可以随心所欲地把图画得很漂亮.下面几个线型字符大家可以选用:S:小方块;H:六角星;D:钻石形;V:向下三角形;^:向上三角形.MATLAB还提供了图形的加注命令:title题头标注. xlabel x轴标注.ylabel y轴标注. gtext鼠标定位标注.grid 网格.axis([xmin xmax ymin ymax]) []中给出x轴和y轴的最小、最大值如果要把y1=6sin t,y2=6cos t,y3=sin t2-t cos t绘制在一张图上,则可输入如下的命令:t=0:pi/12:2*pi;y1=6*sin(t);y2=6*cos(t);y3=sin(t.^2)-t.*cos(t);plot(t,y1,'r-',t,y2,'bo',t,y3,'k:') %用红线画y1,用蓝圈画y2,用黑虚线画y3.如果还想在图上加一个题头,可继续键入命令:title('曲线比较')注:MATLAB中,%后面的语句起注释作用.特别要注意y3中的运算符号“.^”和“.*”,详情可通过help查阅,或查阅有关MATLAB的参考书.命令polar(theta,rho)或polar(theta,rho,‘s’)绘制极坐标系的二维图形.详情可通过help查阅.绘制三维图形⑴空间曲线的绘制绘制空间曲线的基本命令为:plot3(x,y,z);plot3(x,y,z,'s')或plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',…)其中x,y,z是同维的向量或矩阵.当它们是矩阵时,以它们的列对应元素为空间曲线上点的坐标.s是线形、颜色开关,这一点与二维曲线时的情形相同.⑵曲面的绘制绘制空间曲面的基本命令为mesh(x,y,z).如果x、y是向量,则要求x的长度=矩阵z的列维;y的长度=矩阵z的行维.以z ij为竖坐标,x的第i个分量为横坐标,y的第j个分量为纵坐标绘网格图.如果是同维矩阵,则数据点的坐标分别取自这三个矩阵.meshc(x,y,z) 带等高线的网格图, waterfall(x,y,z)瀑布水线图,surf(x,y,z,'c')可着色的曲面图,surfc(x,y,z)带等高线的可着色的曲面图.以上这些命令都可用来绘制曲面图,用法与mesh完全一样.例如:要想画马鞍面,可输入如下命令:x=-3:1/16:3;y=x;[x,y]=meshgrid(x,y); %(生成绘图时所需的x-y坐标)z=-x.^2+y.^2;mesh(x,y,z) %(或换为surfc(x,y,z) %带等高线的着色图)3.多幅图形的创建有时同一曲面或曲线需要从不同的角度去观察,或用不同的表现方式去表现,这时,为了便于比较,往往在一个窗口内画多幅图形.MATLAB用subplot命令实现这一目的.具体格式为:subplot(m,n,p)使用此命令后,把窗口分为m×n个图形区域,p表示当前区域号.例如把sin x,cos x,atan x,sin x cos y画在一个窗口内,可键入:x=0:pi/6:2*pi;y=x;z1=sin(x);z2=cos(x);z3=atan(x);subplot(2,2,1); plot(x,z1,'r',x,z2,'g')subplot(2,2,2);plot(x,z3,'m')subplot(2,2,3);[x,y]=meshgrid(x,y);z4=sin(x).*cos(y);mesh(x,y,z4);subplot(2,2,4);surfc(x,y,z4)四关系运算和逻辑运算1.关系运算符〈小于〈= 小于等于〉大于〉= 大于等于 = = 等于 ~= 不等于运算法则:如果两个比较量a、b是标量,那么,当a、b之间的关系成立时输出值为1;否则输出值为0.如果两个比较量a、b是相同维数的数组,那么就按标量的运算法则,对a、b的对应元素进行运算,最后的输出结果为一个与a(或b)同维的0—1数组.如果a是标量,b是数组,那么按标量的运算法则将a与b的每个元素逐一比较,最后的输出结果为一个与b同维的0—1数组.在算术运算、关系运算中,算术运算优先.2.逻辑运算符& 与 | 或 ~ 非运算法则:参与逻辑运算的量称为逻辑量,非零逻辑量为“真”,用1表示;零逻辑量为“假”,用0表示.如果参与逻辑运算的两个量a、b都是标量,那么:a&b当a与b全为非零时,运算结果为“1”;否则为“0”a|b a与b中只要有一个非零,运算结果为“1”~a 当a是零时,运算结果为“1”;否则为“0”如果参与逻辑运算的两个量a、b是相同维数的数组,那么就按标量的运算法则,对a、b 的对应元素进行运算,最后的输出结果为一个与a(或b)同维的0—1数组.如果参与逻辑运算的a是标量、b是数组,那么就按标量的运算法则,将a与b的每个元素进行运算,最后的输出结果为一个与b同维的0—1数组.逻辑“非”是一个一元运算符,也服从数组运算规则.在算术、关系、逻辑运算中,算术运算的最优先,其次是关系运算,再其次是逻辑运算.五 MATLAB编程1.控制语句MATLAB也有控制流语句,用于控制程序的流程.主要有for循环、while循环、if和break 三种控制语句.虽然语句很少,但功能很强.ⅰfor循环语句for循环语句的一般表达形式为:for i=表达式可执行语句1……可执行语句nend例:求S=1+2+3+…+50,可编程如下:s=0;for k=1:50s=s+k;endⅱwhile循环while循环语句用来控制一个或一组语句在某逻辑条件下重复预先确定或不确定的次数.while循环语句的一般表达形式为:while表达式循环体语句end例:对于上面同样的问题,可编程如下:S=0; k=0;while k<51S=S+k;k=k+1; % 当条件k〈51时,反复执行语句S=S+k,k=k+1end以上这个例子事先已知循环次数是51,下面再看一个预先不能确定循环次数的例子.例:用迭代法x k+1=e k x k=0,1,2,…求解方程x-e-x=0的根.初始值x0=0.5,相对误差限ε=10-8 ,编程如下:ep=10^(-8);dx=1;x0=0.5;k=0;while dx>epk=k+1;x=exp(-x0);dx=abs(x-x0)/(1+abs(x));x0=x;endⅲif和break语句MATLAB中if和break语句的作用与使用方式同其它编程语言一样,用来将控制流程进行分流与中断退出.例:可以把上面的解方程的例子中的循环语句改写成:x0=0;while(1)k=k+1;x=exp(-x0);dx=abs(x-x0)/(1+abs(x));if dx<=eps break;endx0=x;end程序中while(1)说明循环条件总是真,直到满足dx<=eps条件跳出循环体. ⅳif – else –end分支结构分支结构有三种形式:if 表达式执行语句end如果表达式的值非0,则执行下面的语句.否则执行end后面的语句.if表达式执行语句1else执行语句2endif表达式1执行语句1elseif表达式2执行语句2elseif 表达式3执行语句3……else (此句可以省略)执行语句nend例:对函数⎪⎩⎪⎨⎧≥<<-<=10, x 11-3x 10,x 1 121, x )(x x x f可编如下的程序:if x<1y=x;elseif x>=1&x<10y=2*x-1;elsey=3*x-11;end2. 创建M文件创建M文件是MATLAB中的非常重要的内容.事实上,正是由于在MATLAB 工具箱中存放着大量的M文件,使得MATLAB在应用起来显得简单、方便,且功能强大.如果用户根据自己的需要,开发出适用于自己的M文件,不仅能使MATLAB更加贴近用户自己,而且能使MATLAB的功能得到扩展.M文件有两种形式:命令文件和函数文件当用户要运行的命令较多时,如果直接在命令窗口中逐条输入和运行,有诸多不便.此时可通过编写命令文件来解决这个问题.另外,从前面的许多例子可以看到:MATLAB的许多命令,需要用户通过编写函数文件来执行.ⅰ命令文件的创立进入MATLAB命令窗口后,选择“file”下拉式菜单中的“new”进入编辑/调试器(Editer/Debugger),在编辑/调试器中,编写符合语法规则的命令.编写完命令文件后,选择“file”下拉式菜单中的“save”项,然后依提示输入一个文件名.至此,完成了命令文件的创建.ⅱ函数文件的创立函数文件的创立方法与命令文件的创立方法完全一样,只是函数文件的第一句可执行语句是以function引导的定义语句,并且输入文件名时要与定义语句中的函数名相同.建立了函数文件或命令文件后,只要在命令窗口键入命令文件名或函数名,就可执行M 文件中所包含的所有命令.下面分别创建并运行一个命令文件和一个函数文件,以了解M文件的创建和运行的全过程.计算所有小于1000的Fibonnaci数.命令文件的创建和运行:⑴在MATLAB的命令窗口点击“新建”工具栏或在“file”下拉菜单中选“New”中的“M-file”项,进入编辑/调试器.⑵在编辑/调试器中,输入以下命令:% 计算小于1000的Fibonnaci数f=[1,1];i=1;while f(i)+f(i+1)<1000f(i+2)=f(i)+f(i+1);i=i+1;endf,i⑶在“file”下拉菜单中选“Save”项,依提示输入文件名“fibno”至此,完成了命令文件fibno.m的创建.⑷执行fibno.在MATLAB窗口中输入fibno并敲回车键,计算机依次执行fibno中的各条命令后显示如下的结果:ans =Columns 1 through 121 123 5 8 13 21 34 55 89 144Columns 13 through 16233 377 610 987函数文件的创建和运行:⑴在MATLAB的命令窗口点击“新建”工具栏或在“file”下拉菜单中选“New”中的“M-file”项,进入编辑/调试器.⑵在编辑/调试器中,输入以下命令:function f=ffibno(n)f=[1,1];i=1;while f(i)+f(i+1)<nf(i+2)=f(i)+f(i+1);i=i+1;endf⑶在“ffile”下拉菜单中选“Save”项,依提示输入文件名“ffibno”至此,完成了函数文件ffibno.m的创建.⑷执行ffibno.在MATLAB窗口中输入ffibno(1000)并敲回车键即可.六MATLAB的符号运算前面介绍的内容基本上是MATLAB的数值计算功能,参与运算过程的变量都是被赋了值的数值变量.在MATLAB环境下,符号运算是指参与运算的变量都是符号变量,即使是数字也认为是符号变量. 数值变量和符号变量是不同的.1 符号微积分下面着重介绍一些与微积分有关的指令,这些指令都需要符号表达式作为输入宗量.求和symsum(S) 对通项S 求和,其中k 为变量且从0变到k-1.symsum(S,v) 对通项S 求和,指定其中v 为变量且v 从0变到v-1. symsum(S,a,b) 对通项S 求和,其中k 为变量且从a 变到b .symsum(S,v,a,b) 对通项S 求和,指定其中v 为变量且v 从a 变到b . 例:求∑-=10k i i ,键入k=sym('k') % k 是一个符号变量;symsum(k)得 ans = 1/2*k^2-1/2*k例:求∑=1002k k,键入:symsum(k^2,0,10)得 ans = 385 例:求∑+∞=0!k kk x 键入symsum('x'^k/sym('k!'),k,0,inf),得 ans = exp(x)这最后的一个例子是无穷项求和.求极限limit(P) 表达式P 中自变量趋于零时的极限limit(P,a) 表达式P 中自变量趋于a 时的极限limit(P,x,a,'left') 表达式P 中自变量x 趋于a 时的左极限 limit(P,x,a,'right') 表达式P 中自变量x 趋于a 时的右极限 例:求xx x sin lim 0→,键入 P=sym('sin(x)/x');limit(P)得 ans = 1 例:求xx 1lim 0+→ 键入 P=sym('1/x');limit(P,'x',0,'right')得 ans = inf 例:求hx h x h sin )sin(lim 0-+→,键入: P=sym('(sin(x+h)-sin(x))/h');h=sym('h');limit(P,h,0)得ans = cos(x) 例:求)lim , )1(lim (-x x x x e xa -∞→-∞→+, 键入 v=sym('[(1+a/x)^x,exp(-x)]');limit(v,'x',inf,'left')得 ans = [ exp(a), 0]求导数diff(S,v) 求表达式S 对变量v 的一阶导数.diff(S,v,n) 求表达式S 对变量v 的n 阶导数.例如:设A=⎪⎪⎪⎭⎫ ⎝⎛++21cos 11x e x x b a ,求dx dA 键入命令: syms a b x; A= [1/(1+a),(b+x)/cos(x);1,exp(x^2)];diff(A,'x')得 ans = [0, 1/cos(x)+(b+x)/cos(x)^2*sin(x)][0, 2*x*exp(x^2)]例:求y=sinx+e x 的三阶导数,键入命令:diff('sin(x)+x*exp(x)',3)得 ans = -cos(x)+3*exp(x)+x*exp(x) 例:设⎪⎪⎪⎭⎫ ⎝⎛+=xyi n e xy y x y x A 1sin ,求A 的先对x 再对y 的混合偏导数.可键入命令: S=sym('[x*sin(y),x^n+y;1/x/y,exp(i*x*y)]');dsdxdy=diff(diff(S,'x'),'y')得: dsdxdy = [ cos(y), 0] [ 1/x^2/y^2, i*exp(i*x*y)-y*x*exp(i*x*y)]例:求y=(lnx)x的导数.可键入命令:p='(log(x))^x';p1=diff(p,'x')得:p1 = log(x)^x*(log(log(x))+1/log(x))例:求y=xf(x2)的导数.可键入命令:p='x*f(x^2)';p1=diff(p,'x')得:p1 = f(x^2)+2*x^2*D(f)(x^2)例:求xy=e x+y的导数.可键入命令:p='x*y(x)-exp(x+y(x))';p1=diff(p,'x')得:p1 = y(x)+x*diff(y(x),x)-(1+diff(y(x),x))*exp(x+y(x))再键入p2='y+x*dy-(1+dy)*exp(x+y)=0';dy=solve(p2,'dy')%把dy作为变量解方程得dy= -(y-exp(x+y))/(x-exp(x+y))求Taylor展开式taylor(f,v) f对v的五阶Maclaurin展开.taylor(f,v,n) f对v的n-1阶Maclaurin展开.例:求sinxe-x 的7阶Maclaurin展开.可键入f=sym('sin(x)*exp(-x)');F=taylor(f,8)得F = x-x^2+1/3*x^3-1/30*x^5+1/90*x^6-1/630*x^7例:求sinxe-x 在x=1 处的7阶Taylor展开.可键入f=sym('sin(x)*exp(-x)');F=taylor(f,8,1) 得F = sin(1)*exp(-1)+(-sin(1)*exp(-1)+cos(1)*exp(-1))*(x-1)-cos(1)*exp(-1)*(x-1)^2+(1/3*sin(1)*exp(-1)+1/3*cos(1)*exp(-1))*(x-1)^3-1/6*sin(1)*exp(-1)*(x-1)^4+(1/30*sin(1)*exp(-1)-1/30*cos(1)*exp(-1))*(x-1)^5+1/90*cos(1)*exp(-1)*(x-1)^6+(-1/630*cos(1)*exp(-1)-1/630*sin(1)*exp(-1))*(x-1)^7 多元函数的Taylor展开MATLAB不能直接进行多元函数的Taylor展开.必须先调用MAPLE函数库中的mtaylor命令.方法为:在MATLAB的工作窗口中键入maple('readlib(mtaylor)')mtaylor的格式为mtaylor(f,v,n)f为欲展开的函数式v为变量名.写成向量的形式:[var1=p1,var2=p2,…,varn=pn],展开式将在(p1,p2,…,pn)处进行.如只有变量名,将在0点处展开.n为展开式的阶数(n-1阶).要完成Taylor展开,只需键入maple('mtaylor(f,v,n)')即可.例:在(x0,y0,z0)处将F=sin xyz进行2阶Taylor展开.键入syms x0 y0 z0maple('readlib(mtaylor)');maple('mtaylor(sin(x*y*z),[x=x0,y=y0,z=z0],2)')得:ans = sin(x0*y0*z0)+cos(x0*y0*z0)*y0*z0*(x-x0)+cos(x0*y0*z0)*x0*z0*(y-y0) +cos(x0*y0*z0)*x0*y0*(z-z0)求积分int(P) 对表达式P 进行不定积分.int(P,v) 以v 为积分变量对P 进行不定积分.int(P,v,a,b) 以v 为积分变量,以a 为下限,b 为上限对P 进行定积分. 例:求⎰+-dx x x22)1(2,可键入int('-2*x/(1+x^2)^2')得 ans = 1/(1+x^2) 例:求⎰+dz z x)1(2,可键入键入int('x/(1+z^2)','z')得 ans = atan(z)*x例:求⎰+10)1ln(dx x x ,可键入int('x*log(1+x)',0,1) 得ans = 1/4例:求⎰tt xdx ln sin 2可键入:int('2*x','sin(t)','log(t)') 得:ans = log(t)^2-sin(t)^2对(符号)矩阵积分例:求()⎰⎰dt e dt e at t ,输入int('[exp(t),exp(a*t)]'),得:ans = [ exp(t), 1/a*exp(a*t)]求符号方程的解ⅰ线性方程组的求解线性方程组的形式为A*X=B ;其中A 至少行满秩.X=linsolve(A,B) 输出方程的特解X .例:解方程组⎪⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛11cos sin sin cos X t t t t .键入 A=sym('[cos(t),sin(t);sin(t),cos(t)]');B=sym('[1;1]');c=linsolve(A,B)c =[ 1/(sin(t)+cos(t))][ 1/(sin(t)+cos(t))]ⅱ 代数方程的求解solve(P,v)对方程P 中的指定变量v 求解.v 可省略.solve(p1,P2,…,Pn,v1,v2,…,vn)对方程P1,P2,…Pn 中的指定变量v1, v2…vn 求解.例:解r x p =+sin ,可输入solve('p+sin(x)=r') 得:ans =-asin(p-r)例:解⎩⎨⎧=+-=++034322x x y xy x ,可输入: P1='x^2+x*y+y=3';P2='x^2-4*x+3=0';[x,y]=solve(P1,P2) 得:x = [ 1][ 3]y = [ 1][ -3/2]解⎩⎨⎧=-=++1022v u v u a ,可输入: P1='a+u^2+v^2=0';P2='u-v=1';[u,v]=solve(P1,P2,'u','v') 得:u = [ 1/2+1/2*(-1-2*a)^(1/2)][ 1/2-1/2*(-1-2*a)^(1/2)]v = [ -1/2+1/2*(-1-2*a)^(1/2)][ -1/2-1/2*(-1-2*a)^(1/2)]对于有些无法求出解析解的非线性方程组,MATLAB 只给出一个数值解.这一点可以从表示解的数字不被方括号括住而确定.例:解⎪⎩⎪⎨⎧=-=-+20)sin(2y x ye y x x 键入: [x,y]=solve('sin(x+y)-exp(x)*y=0','x^2-y=2') 得:x = -6.0173272500593065641097297117905y = 34.208227234306296508646214438330由于这两个数字没有被[ ]括住,所以它们是数值解.另外,可利用solve 来解线性方程组的通解.例:解⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛246714922531372X 键入P1='2*x1+7*x2+3*x3+x4=6'; P2='3*x1+5*x2+2*x3+2*x4=4';P3='9*x1+4*x2+x3+7*x4=2';u=solve(P1,P2,P3,'x1','x2','x3','x4')Warning: 3 equations in 4 variables.u = x1: [1x1 sym]x2: [1x1 sym]x3: [1x1 sym]x4: [1x1 sym]可以看到:屏幕提示“有3个方程4个变量”,意为解不唯一(有时会提示解不唯一).且输出的是解的结构形式.为进一步得到解,可输入:u.x1,u.x2,u.x3,u.x4, 得:ans = x1ans = -5*x1-4*x4ans = 11*x1+9*x4+2ans = x4这样就得到了原方程组的通解.⑷ 解符号微分方程解符号微分方程的命令格式为: dsolve('eq1','eq2',…).其中eq 表示相互独立的常微分方程、初始条件或指定的自变量.默认的自变量为t .如果输入的初始条件少于方程的个数,则在输出结果中出现常数c1,c2等字符.关于微分方程的表达式有如下的约定:字母y 表式函数,Dy 表示y 对t 的一阶导数;Dny 表示y 对t 的n 阶导数. 例如:求⎪⎩⎪⎨⎧-==x dtdy ydt dx 的解可键入:[x,y]=dsolve('Dx=y','Dy=-x') 得x =cos(t)*C1+sin(t)*C2y =-sin(t)*C1+cos(t)*C2dsolve 中的输入宗量最多只能有12个,但这并不妨碍解具有多个方程的方程组,因为可以把多个方程或初始条件定义为一个符号变量进行输入.例如求 g f dt df43+= ,g f dt dg34+-= , f(0)=0 , g(0)=1的解.可输入指令: P='Df=3*f+4*g,Dg=-4*f+3*g';v='f(0)=0,g(0)=1';[f,g]=dsolve(P,v)f = exp(3*t)*sin(4*t)g = exp(3*t)*cos(4*t)注意:微分方程表达式中字母D 必须大写. 例如求解微分方程⎪⎩⎪⎨⎧=''='=-=0(0)y 0,(0)y 1,y(0)33y dx yd可输入y=dsolve('D3y=-y','y(0)=1,Dy(0)=0,D2y(0)=0','x') 得:y = (1/3+2/3*exp(1/2*x)*cos(1/2*3^(1/2)*x)*exp(x))/exp(x)最后看一个解非线性微分方程的例子:dsolve('(Dy)^2+y^2=1','y(0)=0','x')ans = [ sin(x)][ -sin(x)]对于无法求出解析解的非线性微分方程,屏幕将提示出错信息.微分方程的数值解及其它问题的数值解ⅰ常微分方程的数值解MATLAB提供了求微分方程数值解的指令:[t,x]=ode23('fname',[t0,tf],x0,tol,trace)[t,x]=ode45('fname',[t0,tf],x0,tol,trace)这两个格式中的输入参数意义完全一样.下面介绍这两个格式的有关内容及各参数的意义.这两个格式都采用Runge--Kutta法求解微分方程的数值解.它们是针对一阶微分方程组设计的.因此,如果待解的是高阶微分方程,那么首先要化成形式为x'=f(t,x)的一阶微分方程组.称为“状态方程”.‘fname’是f(t,x)的函数名.该函数以x'为输出,以t,x为输入变量,注意次序不能颠倒.t0和tf分别是积分的起始值和终止值.x0是初始值,以向量的形式输入.tol是用来控制精度的参数,可缺省.缺省时ode23默认tol=1.e-3;ode45默认tol=1.e-6.trace用来控制是否显示中间结果,可缺省.缺省时,默认trace=0,不显示.输出结果t和x分别是时间向量和相应的状态向量.虽然ode45比ode23的精度高,但它的运算速度更快.例:求著名的Van der pol 方程⎩⎨⎧=--=x yy x y x )1(2,并绘出其解的图形. 第一步:在编辑器中编写名为fname 的M 文件.function X=fname(t,x)X=zeros(2,1);X(1)=(1-x(2)^2)*x(1)-x(2);X(2)=x(1);第二步:将此文件存放于自己的文件夹中听候调用.第三步:在MATLAB 的命令窗口调用这个函数,即键入如下命令:[t,x]=ode45('fname',[0,20],[0,0.5]);plot(t,x)ⅱ 数值积分quad('fname',a,b,tol,trace) Simpson 法求数值积分.quad8('fname',a,b,tol,trace) Newton-Cotes 法求数值积分.fname 是被积函数文件名b,a 分别是积分上下限用tol 来控制积分精度.可缺省.缺省时默认tol=0.001.用trace 来控制是否用图形显示积分过程.可缺省.缺省时默认trace=0,不显示图形.例如:求 ⎰-302x e dx第一步:在编辑器中建立被积函数的M文件.取名为fname即在编辑器中输入:function y=fname(x)y=exp(-x^2);第二步:将此文件存放于自己的文件夹中.第三步:在MATLAB环境下调用fname.即输入s=quad8('fname',0,3)就可以得到结果:s =8862。