数学建模的MATLAB课件

上传人:hs****ma 文档编号:569376545 上传时间:2024-07-29 格式:PPT 页数:285 大小:1.95MB
返回 下载 相关 举报
数学建模的MATLAB课件_第1页
第1页 / 共285页
数学建模的MATLAB课件_第2页
第2页 / 共285页
数学建模的MATLAB课件_第3页
第3页 / 共285页
数学建模的MATLAB课件_第4页
第4页 / 共285页
数学建模的MATLAB课件_第5页
第5页 / 共285页
点击查看更多>>
资源描述

《数学建模的MATLAB课件》由会员分享,可在线阅读,更多相关《数学建模的MATLAB课件(285页珍藏版)》请在金锄头文库上搜索。

1、开开始始&*$学院学软件应结束结束数用帆偷习阂氢畦钾少韭户佛稳吐滩燎宜屡轩撼溯汇揪洪嘘醛苹敦孤揪檬篓窗数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241Matlab基础及其应用目录第六章 Matlab空间作图第二章 Matlab语言基础 第三章 Matlab数值运算 第四章 Matlab符号运算 第五章 Matlab平面作图第一章 Matlab软件介绍琳蛹证眠锗鞘诅材轻邪洁田佣激崔掀职哺又摘狈秋夫氦颗紊偶宠谣梨吞呕数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242附录二 工具箱函数汇总第八章 Matlab优化工具箱 第九章 Matlab统计工具箱 第

2、十章 Matlab综合程序设计 附录一 工具箱英汉对照第七章 Matlab仿真集成环境Matlab基础及其应用目录熏槛香蒋溯挝檬耳砒抢易或邓躯谭反瘸矛卖遵吻刃需姻涤友蔫几焉卫疵率数学建模的MATLAB课件数学建模的MATLAB课件7/29/20243第一章Matlab 简介1.3 MatlabMatlab集成环境集成环境1.1 MatlabMatlab概述概述1.2 MatlabMatlab的运行环境与安装的运行环境与安装1.4 MatlabMatlab帮助系统帮助系统价收瞩锰娶恕又胀所靖希曾蓑挟磋剖痕鸽商耳譬辅缘稠壶乞连坠替萤陈掘数学建模的MATLAB课件数学建模的MATLAB课件7/29/

3、202441.1 Matlab 概述Matlab的名称是由MATrix和LABoratory两个词的前三个字母组合而成的。它是MatlabMatlab公司于1982年推出的一套高性能的数值计算和可视化数学软件,被誉为“巨人肩上的工具”。由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以用Matlab编写程序就犹如在演算纸上排列出公式与求解问题.因此,Matlab又被称为演算纸式的科学算法语言。经过十几年的完善和扩充,Matlab现已发展成为线性代数课程的标准工具。由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制

4、、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。u1.1.1 Matlab1.1.1 Matlab的简况的简况颖妙天蘑弯椽丑散止输悦疫步匡冻矩私症舅贾渔祟二数科贤蓄狙碱稳肋言数学建模的MATLAB课件数学建模的MATLAB课件7/29/20245 1984 1984年,年,MatlabMatlab第第1 1版版(DOS(DOS版版) ) 1992 1992年,年,Matlab 4.0Matlab 4.0版版 1994 1994年,年,Matlab 4.2Matlab 4.2版版 1997 1997年,年,Matlab 5.0Matlab 5.0版版 1999 19

5、99年,年,Matlab 5.3Matlab 5.3版版 2000 2000年,年,Matlab 6.0Matlab 6.0版版 2001 2001年,年,Matlab 6.1Matlab 6.1版版 2002 2002年,年,Matlab 6.5Matlab 6.5版版 2004 2004年,年,Matlab 7.0Matlab 7.0版版1.1.2 Matlab1.1.2 Matlab的发展历史的发展历史练凸江讯吻蒜杨疤晓硬枫篆声初迁业屠舍骂卢忱常良迈腿缉掳绥冠汕缠殊数学建模的MATLAB课件数学建模的MATLAB课件7/29/20246(1) Matlab数值计算和符号计算功能 Matl

6、ab以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。Matlab和著名的符号计算语言Maple相结合,使得Matlab具有符号计算功能。(2) Matlab的绘图功能 Matlab提供了两个层次的绘图操作:一种是对图形句柄进行的低层绘图操作,另一种是建立在低层绘图操作之上的高层绘图操作。(3) Matlab的编程语言Matlab具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高。1.1.3 Matlab1.1.3 Matlab的主要功能的主要功能聪藕衡绝秋未喘牡籍胎强抱馒格招菜鸽湍笼屠避涂嘴机彻折雨混峦锌滦皑数学建模的MATLAB课件

7、数学建模的MATLAB课件7/29/202471.1.3 Matlab1.1.3 Matlab的主要功能的主要功能(4) Matlab(4) Matlab的工具箱的工具箱MatlabMatlab中包括了被称作工具箱(中包括了被称作工具箱(TOOLBOXTOOLBOX)的各类应用问题的求)的各类应用问题的求解工具。它可用来求解各类学科的问题,包括信号处理、图象处解工具。它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。随着理、控制系统辨识、神经网络等。随着MatlabMatlab版本的不断升级,版本的不断升级,其所含的工具箱的功能也越来越丰富。其所含的工具箱的功能也越

8、来越丰富。(5) Matlab(5) Matlab中包括了图形界面编辑中包括了图形界面编辑GUIGUI,这可让使用者也可以象,这可让使用者也可以象VBVB、 VC VC 、VJVJ、 DELPHI DELPHI等那样进行一般的可视化的程序编辑。等那样进行一般的可视化的程序编辑。在命令窗口(在命令窗口(matlab command windowmatlab command window)键入)键入simulinksimulink,就出现,就出现(SIMULINK) (SIMULINK) 窗口。以往十分困难的系统仿真问题,用窗口。以往十分困难的系统仿真问题,用SIMULINKSIMULINK只需拖

9、动鼠标即可轻而易举地解决问题,这也是近来受到重视原只需拖动鼠标即可轻而易举地解决问题,这也是近来受到重视原因所在。因所在。砍九洁碴排君慢挡幼帐啦愤豫慎宿宪赎魂寨韧沂他窒降弊趣蕉沟扳禄碍臭数学建模的MATLAB课件数学建模的MATLAB课件7/29/202481.1.4 Matlab1.1.4 Matlab操作示例操作示例例例1-1 1-1 在同一坐标系中绘出正弦曲线在同一坐标系中绘出正弦曲线y=sinxy=sinx和余弦曲线和余弦曲线y=cosxy=cosx在在0,2*Pi0,2*Pi上的图形上的图形. . x=0:1/180:2*pi; % x=0:1/180:2*pi; % 输入自变量输入

10、自变量x x的行矩阵的行矩阵 f1=sin(x);% f1=sin(x);%输出因变量输出因变量f1f1的行矩阵的行矩阵 f2=cos(x);% f2=cos(x);%输出因变量输出因变量f2f2的行矩阵的行矩阵 plot(x,f1),x,f2); % plot(x,f1),x,f2); %调用绘图命令一次画出两条曲线调用绘图命令一次画出两条曲线. .例例1-2 1-2 求方程求方程 3x 3x4 4+7x+7x3 3 +9x +9x2 2-23=0-23=0的全部根的全部根: : p=3,7,9,0,-23; % p=3,7,9,0,-23; %建立多项式系数向量建立多项式系数向量 x=ro

11、ots(p) % x=roots(p) %调用求根命令求出方程的根调用求根命令求出方程的根. .清尖搪规治汽枚倘躺蝇辫簧脓细丝伶眷径遁泥津豺驶烷爪曝果扬留遁讫草数学建模的MATLAB课件数学建模的MATLAB课件7/29/20249例例1-3 1-3 求求f=xlog(1+x)f=xlog(1+x)在在0.10.1上的定积分上的定积分S S解解 S=quad(x.*log(1+x),0,1) S=quad(x.*log(1+x),0,1)例例1-4 1-4 求解线性方程组求解线性方程组:Ax=b:Ax=b。 其中其中 A=2,-3,1; A=2,-3,1; 8,3,2; 8,3,2; 45,1

12、,-9; 45,1,-9; b=4;2;17; b=4;2;17; 解解 x=inv(A)*b x=inv(A)*b注意注意: :线性方程组的解也可写成线性方程组的解也可写成x=abx=ab1.1.4 Matlab1.1.4 Matlab操作示例操作示例揭离攒尚蜘寻耍莽汕灵栗向丈嗽缩抖迎幂求茶魏匿撞鸭结稀龚邓驮椅摘笑数学建模的MATLAB课件数学建模的MATLAB课件7/29/202410 1.2 Matlab1.2 Matlab的运行环境与安装的运行环境与安装 硬件环境:硬件环境:(1) CPU (1) CPU 奔腾奔腾以上以上(2) (2) 内存内存 256M 256M以上以上(3) (3

13、) 硬盘硬盘 40G 40G以上以上(4) CD-ROM (4) CD-ROM 驱动器和鼠标。驱动器和鼠标。软件环境:软件环境:(1) Windows 98/NT/2000 (1) Windows 98/NT/2000 或或Windows XPWindows XP(2) (2) 其他软件根据需要选用其他软件根据需要选用1.2.1 Matlab的运行环境的运行环境遮辉篷苗距爱咖渝绕羹疮阻挨预爸修绿夏曰臀袱试猖策尸佑宇株韧叛账完数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024111.2.2 Matlab的安装的安装安装安装Matlab 6.5系统,需运行系统自带的安装程序系统

14、,需运行系统自带的安装程序setup.exe,一般只一般只要用鼠标双击安装图标,就会启动安装程序要用鼠标双击安装图标,就会启动安装程序,你只需按照安装提示你只需按照安装提示正确输入(或粘贴)安装序列号后点击确认键,并按提示修改正确输入(或粘贴)安装序列号后点击确认键,并按提示修改安装路径(或默认安装到安装路径(或默认安装到C盘)就能完成安装。盘)就能完成安装。安装完毕后,在开始安装完毕后,在开始-程序程序-Matlab.exe菜单中菜单中,双击双击Matlab图标图标,即即可运行程序。可运行程序。衣琐幌芯叔惜乃廷址觉撕诬摹嗡投喷俭算及堪贾影棒话陀陪筹池钎炕兔巧数学建模的MATLAB课件数学建模

15、的MATLAB课件7/29/2024121 1MatlabMatlab系统的启动系统的启动与一般的与一般的WindowsWindows程序一样,启动程序一样,启动MatlabMatlab系统有系统有3 3种常见方法:种常见方法:(1)(1)使用使用WindowsWindows“开始开始”菜单菜单, ,找到找到Matlab.exeMatlab.exe图标图标, ,然后双击。然后双击。(2)(2)运行运行MatlabMatlab系统启动程序系统启动程序matlab.exematlab.exe。(3)(3)利用桌面快捷方式。利用桌面快捷方式。1.3.1 1.3.1 启动与退出启动与退出MatlabM

16、atlab集成环境集成环境伐诬韦天页谦抠溶挖坛祟释烯垂惟龙兹作递库焰音糊俘灵片膳兔炕亦允遍数学建模的MATLAB课件数学建模的MATLAB课件7/29/202413首次启动首次启动MatlabMatlab时,展现在屏幕上的界面为时,展现在屏幕上的界面为MatlabMatlab的默认界面的默认界面. . 默认界面中主要有六个窗口默认界面中主要有六个窗口, ,其分布如下图所示。其分布如下图所示。1.3.1 1.3.1 启动与退出启动与退出MatlabMatlab集成环境集成环境默认设置下主要窗口布局来肌藕甘王薄儿努攀别飘氮承怕匝盟展气抨蛙浅钥捏僵砚仙膏汉车闸恬哦数学建模的MATLAB课件数学建模的

17、MATLAB课件7/29/202414 从默认界面中可切换出左边两个主要窗口如下图所示。从默认界面中可切换出左边两个主要窗口如下图所示。1.3.1 1.3.1 启动与退出启动与退出MatlabMatlab集成环境集成环境夜呢吊娱蜂墟雌戳勉粥夜浩人佯耽阵蕴尔妓为郑榜峙外耿恿糜焚撰纵长杀数学建模的MATLAB课件数学建模的MATLAB课件7/29/202415 Matlab 6.5Matlab 6.5的集成环境包括的集成环境包括MatlabMatlab主窗口、命令窗口主窗口、命令窗口(Command (Command Window)Window)、工作空间窗口、工作空间窗口(Workspace)(

18、Workspace)、命令历史窗口、命令历史窗口(Command (Command History)History)、当前目录窗口、当前目录窗口(Current Directory)(Current Directory)和启动平台窗口和启动平台窗口(Launch Pad)(Launch Pad)。1.3.1 启动与退出启动与退出Matlab集成环境集成环境工作空间命令历史命令窗口雷出沮擎糖姑轨谴端诺胎垢准芽忆枣梳曾仙痰触天瘤被慑液娇拿筋驭喂誉数学建模的MATLAB课件数学建模的MATLAB课件7/29/202416命令窗口命令窗口(Command Window) 工作空间工作空间 (Works

19、pace) 命令历史命令历史(Command History) 当前目录当前目录(Current Directory)主窗口眯逃赞厘途脆绞楔褐爽逸懒酚塞倪吗跺槛赶奎棘泞革滨帮铣畦雕趁久笔抚数学建模的MATLAB课件数学建模的MATLAB课件7/29/202417 2MatlabMatlab系统的退出系统的退出要退出要退出MatlabMatlab系统,也有系统,也有3 3种常见方法:种常见方法:(1) (1) 在在MatlabMatlab主窗口主窗口FileFile菜单中选择菜单中选择Exit MatlabExit Matlab命令。命令。(2) (2) 在在MatlabMatlab命令窗口输入

20、命令窗口输入ExitExit或或QuitQuit命令。命令。(3) (3) 单击单击MatlabMatlab主窗口的主窗口的“关闭关闭”按钮。按钮。1.3.1 1.3.1 启动与退出启动与退出MatlabMatlab集成环境集成环境诬碟奢抹涪均株胳原瑶啪钾腾丘箱吓泰篡逊娟和攒办抠播侮去故加耿策幌数学建模的MATLAB课件数学建模的MATLAB课件7/29/202418MatlabMatlab主窗口是主窗口是MatlabMatlab的主要工作界面。主窗口除了嵌入一些子的主要工作界面。主窗口除了嵌入一些子窗口外,还主要包括菜单栏和工具栏。窗口外,还主要包括菜单栏和工具栏。1 1菜单栏菜单栏在在Ma

21、tlab 6.5Matlab 6.5主窗口的菜单栏,共包含主窗口的菜单栏,共包含FileFile、EditEdit、ViewView、WebWeb、WindowWindow和和Help 6Help 6个菜单项。个菜单项。(1) File(1) File菜单项:菜单项:FileFile菜单项实现有关文件的操作。菜单项实现有关文件的操作。(2) Edit(2) Edit菜单项:菜单项:EditEdit菜单项用于命令窗口的编辑操作。菜单项用于命令窗口的编辑操作。(3) View(3) View菜单项:菜单项:ViewView菜单项用于设置菜单项用于设置MatlabMatlab集成环境的显示方集成环境

22、的显示方式。式。(4) Web(4) Web菜单项:菜单项:WebWeb菜单项用于设置菜单项用于设置MatlabMatlab的的WebWeb操作。操作。(5) Window(5) Window菜单项:主窗口菜单栏上的菜单项:主窗口菜单栏上的WindowWindow菜单,只包含一个菜单,只包含一个子菜单子菜单Close allClose all,用于关闭所有打开的编辑器窗口,包括,用于关闭所有打开的编辑器窗口,包括M-M-filefile、FigureFigure、ModelModel和和GUIGUI窗口。窗口。(6) Help(6) Help菜单项:菜单项:HelpHelp菜单项用于提供帮助信

23、息。菜单项用于提供帮助信息。1.3.2 主窗口及子窗口主窗口及子窗口裹贵寿洲膝艇类启羹湘铡限亦唤卓唾啡昆蒲仗倡罢及鞭致笑佑诺纷褒驾适数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024192 2工具栏工具栏Matlab 6.5Matlab 6.5主窗口的工具栏共提供了主窗口的工具栏共提供了1010个命令按钮。这些命令按个命令按钮。这些命令按钮均有对应的菜单命令,但比菜单命令使用起来更快捷、方便。钮均有对应的菜单命令,但比菜单命令使用起来更快捷、方便。命令窗口是命令窗口是MatlabMatlab的主要交互窗口,用于输入命令并显示除图形的主要交互窗口,用于输入命令并显示除图形以外

24、的所有执行结果。以外的所有执行结果。 Matlab Matlab命令窗口中的命令窗口中的“ ”为命令提示符,表示为命令提示符,表示MatlabMatlab正在处正在处于准备状态。在命令提示符后键入命令并按下回车键后,于准备状态。在命令提示符后键入命令并按下回车键后,MatlabMatlab就会解释执行所输入的命令,并在命令后面给出计算结果。就会解释执行所输入的命令,并在命令后面给出计算结果。1.3.2 主窗口及子窗口主窗口及子窗口棘育貉笺笨娠暗解赊杰培梯冶引名端琳撼沪克豹罢鱼庚估睫迹攒糠穿世俯数学建模的MATLAB课件数学建模的MATLAB课件7/29/202420在通常的编程中,一个行只输入

25、一条独立的命令,命令行以回车在通常的编程中,一个行只输入一条独立的命令,命令行以回车结束。但一行也可以输入若干条命令,但各命令之间必须以逗号结束。但一行也可以输入若干条命令,但各命令之间必须以逗号分隔,互相独立的命令也可用分号分隔。例如分隔,互相独立的命令也可用分号分隔。例如 p=15, m=35 , n=20 p=15, m=35 , n=20 p=15; m=35; n=20 p=15; m=35; n=20在编程中在编程中, ,逗号表示换列逗号表示换列, ,相当于一个空格相当于一个空格; ;分号表示换行分号表示换行, ,分号与分号与回车的作用都是换行回车的作用都是换行. .如果一个命令行

26、很长,一个物理行之内写不下,可以在第一个物如果一个命令行很长,一个物理行之内写不下,可以在第一个物理行之后加上理行之后加上3 3个小黑点个小黑点“”并按下回车键,然后接着下一个物并按下回车键,然后接着下一个物理行继续写命令的其他部分。理行继续写命令的其他部分。3 3个小黑点称为续行符,即把后面个小黑点称为续行符,即把后面的物理行看作该行的逻辑继续。的物理行看作该行的逻辑继续。在在MatlabMatlab里,有很多的控制键和方向键可用于命令行的编辑。里,有很多的控制键和方向键可用于命令行的编辑。1.3.3 Matlab编程输入法编程输入法冻渴汁雷呼仁拾桶煮童刃等授膝占镶峪裤奸矮澡咳捞侄铭惦铅逻丙

27、狭铰升数学建模的MATLAB课件数学建模的MATLAB课件7/29/202421工作空间是工作空间是MatlabMatlab用于存储各种变量和结果的内存空间。在该窗用于存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和删除。说明,可对变量进行观察、编辑、保存和删除。如果想要把工作空间中的变量及其数据存成文件如果想要把工作空间中的变量及其数据存成文件, ,只需键入命令只需键入命令: : Save Save filename.mat variblenamefilen

28、ame.mat variblename不写变量名将会把工作空间中全部数据保存到你所给的文件内不写变量名将会把工作空间中全部数据保存到你所给的文件内. .1.3.4 工作空间窗口工作空间窗口歹棋悉巡役桂村撞芍掐洱达落事综握雌家苑了殆整雄啪肿涕修熏箱害课烦数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024221当前目录窗口当前目录窗口 当前目录是指当前目录是指MatlabMatlab运行文件时的工作目录,只有在当运行文件时的工作目录,只有在当前目录或搜索路径下的文件、函数可以被运行或调用。前目录或搜索路径下的文件、函数可以被运行或调用。 在当前目录窗口中可以显示或改变当前目录,

29、还可以显在当前目录窗口中可以显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。示当前目录下的文件并提供搜索功能。 将用户目录设置成当前目录也可使用将用户目录设置成当前目录也可使用cdcd命令。例如,将命令。例如,将用户目录用户目录c:mydirc:mydir设置为当前目录,可在命令窗口输入命令:设置为当前目录,可在命令窗口输入命令: cd c:mydir cd c:mydir1.3.5 当前目录窗口和搜索路径当前目录窗口和搜索路径亦啼劳黄椽哟碑帮独壳帧瓮遣筒峙槽捂串宇韵痪殊乌侈淌鹰抽柜愿刀酮伶数学建模的MATLAB课件数学建模的MATLAB课件7/29/202423 2 2Matl

30、abMatlab的搜索路径的搜索路径当用户在当用户在MatlabMatlab命令窗口输入一条命令后,命令窗口输入一条命令后,MatlabMatlab按照一定次序按照一定次序寻找相关的文件。基本的搜索过程是:寻找相关的文件。基本的搜索过程是:(1) (1) 检查该命令是不是一个变量。检查该命令是不是一个变量。(2) (2) 检查该命令是不是一个内部函数。检查该命令是不是一个内部函数。(3) (3) 检查该命令是否当前目录下的检查该命令是否当前目录下的M M文件。文件。(4) (4) 检查该命令是否检查该命令是否MatlabMatlab搜索路径中其他目录下的搜索路径中其他目录下的M M文件。文件。

31、1.3.5 当前目录窗口和搜索路径当前目录窗口和搜索路径惫戮膀樟留摧溅帖川靡茫劈霉馆诉尾喻恃堕绅脑却寿尿挪颠甚耿屯需杉书数学建模的MATLAB课件数学建模的MATLAB课件7/29/202424用户可以将自己的工作目录列入用户可以将自己的工作目录列入MatlabMatlab搜索路径,从而将用户目搜索路径,从而将用户目录纳入录纳入MatlabMatlab系统统一管理。设置搜索路径的方法有:系统统一管理。设置搜索路径的方法有: (1) (1) 用用pathpath命令设置搜索路径。例如,将用户目录命令设置搜索路径。例如,将用户目录c:mydirc:mydir加加到搜索路径下,可在命令窗口输入命令:

32、到搜索路径下,可在命令窗口输入命令:path(path,path(path,c:mydirc:mydir) )(2) (2) 用对话框设置搜索路径用对话框设置搜索路径 在在MatlabMatlab的的FileFile菜单中选菜单中选Set PathSet Path命令或在命令窗口执行命令或在命令窗口执行pathtoolpathtool命令,将出现搜索路径设置对话框。通过命令,将出现搜索路径设置对话框。通过Add FolderAdd Folder或或Add with SubfolderAdd with Subfolder命令按钮将指定路径添加到搜索路径列表中。命令按钮将指定路径添加到搜索路径列表

33、中。在修改完搜索路径后,则需要保存搜索路径。在修改完搜索路径后,则需要保存搜索路径。1.3.5 当前目录窗口和搜索路径当前目录窗口和搜索路径爹紊砍侠淋苞揽锦蚊葱浓泣瘦厢烛傅语蹭学铝侩羹蛹乔恩昂钒攻侩午阔孔数学建模的MATLAB课件数学建模的MATLAB课件7/29/202425 在默认设置下,历史记录窗口中会自动保留自安装起所有用在默认设置下,历史记录窗口中会自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。如果要清除询。而且,通过双击命令可进行历史命令的再运行。如

34、果要清除这些历史记录,可以选择这些历史记录,可以选择EditEdit菜单中的菜单中的Clear Command HistoryClear Command History命令。命令。1.3.6 1.3.6 命令历史记录窗口命令历史记录窗口理藏黑侧早寸艺衬蹦扭淫变洽渐笺蘸垒千浮队铱旧蔽讽四踏橇涛狭锥孩静数学建模的MATLAB课件数学建模的MATLAB课件7/29/202426 Matlab 6.5Matlab 6.5的启动平台窗口可以帮助用户方便地打开和调用的启动平台窗口可以帮助用户方便地打开和调用MatlabMatlab的各种程序、函数和帮助文件。的各种程序、函数和帮助文件。 Matlab 6.

35、5 Matlab 6.5主窗口左下角还有一个主窗口左下角还有一个StartStart按钮,单击该按钮会弹按钮,单击该按钮会弹出一个菜单,选择其中的命令可以执行出一个菜单,选择其中的命令可以执行MatlabMatlab产品的各种工具,产品的各种工具,并且可以查阅并且可以查阅MatlabMatlab包含的各种资源。包含的各种资源。1.3.7 启动平台窗口和启动平台窗口和Start按钮按钮叙降祝钉羹芬曝诗幸绝蚌甩元惑镑猴植瘸迭堰高胸冻猿梭梨噬扶都霍突苯数学建模的MATLAB课件数学建模的MATLAB课件7/29/202427 1.4 Matlab1.4 Matlab帮助系统帮助系统进入帮助窗口可以通

36、过以下进入帮助窗口可以通过以下3 3种方法:种方法:(1) (1) 单击单击MatlabMatlab主窗口工具栏中的主窗口工具栏中的HelpHelp按钮。按钮。(2) (2) 在命令窗口中输入在命令窗口中输入helpwinhelpwin、helpdeskhelpdesk或或docdoc。(3) (3) 选择选择HelpHelp菜单中的菜单中的“Matlab HelpMatlab Help”选项。选项。1.4.1 帮助窗口帮助窗口1.4.2 帮助命令帮助命令 Matlab Matlab帮助命令包括帮助命令包括helphelp、lookforlookfor以及模糊查询以及模糊查询1 1helphe

37、lp命令命令在在Matlab 6.5Matlab 6.5命令窗口中直接输入命令窗口中直接输入helphelp命令将会显示当前帮助命令将会显示当前帮助系统中所包含的所有项目,即搜索路径中所有的目录名称。同系统中所包含的所有项目,即搜索路径中所有的目录名称。同样,可以通过样,可以通过helphelp加函数名来显示该函数的帮助说明。加函数名来显示该函数的帮助说明。塘婆滞嘴酸汤畅愉珐腑囊兑揍别所赠尚翼梢钩又饼甜楔恐剔臭胁罚扛镰剁数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024282 2lookforlookfor命令命令helphelp命令只搜索出那些关键字完全匹配的结果,命令只

38、搜索出那些关键字完全匹配的结果,lookforlookfor命令对命令对搜索范围内的搜索范围内的M M文件进行关键字搜索,条件比较宽松。文件进行关键字搜索,条件比较宽松。lookforlookfor命令只对命令只对M M文件的第一行进行关键字搜索。文件的第一行进行关键字搜索。若在若在lookforlookfor命令加上命令加上-all-all选项,则可对选项,则可对M M文件进行全文搜索。文件进行全文搜索。3 3模糊查询模糊查询Matlab 6.0Matlab 6.0以上的版本提供了一种类似模糊查询的命令查询方法,以上的版本提供了一种类似模糊查询的命令查询方法,用户只需要输入命令的前几个字母,

39、然后按用户只需要输入命令的前几个字母,然后按TabTab键,系统就会列键,系统就会列出所有以这几个字母开头的命令。出所有以这几个字母开头的命令。1.4.2 帮助命令帮助命令伍素俯侈摇郭貌携喳芦购溢酸少谍伍兰跟兜医氓熄黍烃付轿衰南赠右挛捏数学建模的MATLAB课件数学建模的MATLAB课件7/29/202429 在帮助窗口中选择演示系统在帮助窗口中选择演示系统(Demos)(Demos)选项卡,然后在其中选择相选项卡,然后在其中选择相应的演示模块,或者在命令窗口输入应的演示模块,或者在命令窗口输入DemosDemos,或者选择主窗口,或者选择主窗口HelpHelp菜单中的菜单中的DemosDem

40、os子菜单,打开演示系统。子菜单,打开演示系统。1.4.3 演示系统演示系统 在在MathWorksMathWorks公司的主页公司的主页(http:/)(http:/)上可以上可以找到很多有用的信息,国内的一些网站也有丰富的信息资源。找到很多有用的信息,国内的一些网站也有丰富的信息资源。1.4.4 远程帮助系统远程帮助系统固挪醉扳朝沙藐筹踪况珊沉箱泊祭选碰巡窖懊馆恳谰矮咬蓬迟裹坎拦须块数学建模的MATLAB课件数学建模的MATLAB课件7/29/202430第二章Matlab语言基础2.1Matlab的工作环境的工作环境 2.2 Matlab的变量及其命名规则的变量及其命名规则2.3Matl

41、ab矩阵命令及其变换矩阵命令及其变换2.4 Matlab常用数学函数常用数学函数2.5 Matlab矩阵的运算与分解矩阵的运算与分解2.6 Matlab的逻辑运算、条件语句与循环控制语句的逻辑运算、条件语句与循环控制语句卞老羽掺妹考锅榆脂妇牧屎叔袁应镑掇廊厌绊整厄攀须喻侩变锈箔驯狰浊数学建模的MATLAB课件数学建模的MATLAB课件7/29/202431在MATLAB命令窗口下进行基本数学运算,只需将运算式直接打入提示号( )之後,并按入Enter键即可。例如在命令窗口中键入: (10*19+2/4-34)/2*3 , 回车后可得: ans = 234.7500 MATLAB会将运算结果直接

42、存入一变数ans,代表MATLAB运算後的答案,并显示其数值屏幕上。如果在上述的例子结尾加上分号”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入该变数值即可.2.1.1 Matlab的命令窗口计算输入的命令窗口计算输入2.1 Matlab的工作环境的工作环境仆治房做盆仇塞塘貌动舞沃属硫乏嘲似名禁倘亮柒愁祷曰则蜗噪唐呀蝇瓮数学建模的MATLAB课件数学建模的MATLAB课件7/29/202432MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在指令视窗上的功能选单上的OptionsOptions下 选 Numerical Numerical FormatFormat,

43、或者直接在指令视窗键入以下的各个数字显示格式的指令。 format short (这是默认的)MATLAB利用了二个游标键可以将所下过的指令叫回来重覆使用。按下则前一次指令重新出现,之后再 按EnterEnter键,即再执行前一次的指令。而键的功用则是往后执行指令。其它在键盘上的几个键如, DeleteDelete, InsertInsert,其功能则显而易见,试用即知,无须多加说明。当要暂时执行作业系统(例如Dos)的指令而还要执行MATLAB,可以利用!加上原作业系统的指令,例如 !dir, !format a:。2.1.2 Matlab的数字格式的数字格式低陀钮捷帐疆另虐由瓷肩搓睬丛钞揖

44、秉镐耀尚沥周萤稚拼腔径撑菌卢臻祈数学建模的MATLAB课件数学建模的MATLAB课件7/29/202433Ctrl-CCtrl-C(即同时按CtrlCtrl及C C二个键)可以用来中止执行中的MATLAB的工作。 有三种方法可以结束MATLAB 1.exit 2.quit 3.直接关闭MATLAB的命令视窗(Command window)2.1.3 Matlab的退出的退出脾惩软缄馅赘贤欲箩尊咆枕灶仅裳寝茂搀拔谚皂描鬼若残朔线狐埠脐屡倒数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024341.1.变量名的大小写是敏感。变量名的大小写是敏感。2.2. 变量的第一个字符必须为英

45、文字母,而且不能超变量的第一个字符必须为英文字母,而且不能超 过过3131个字符。个字符。3.3. 变量名可以包含下连字符、数字,但不能为空格变量名可以包含下连字符、数字,但不能为空格 符、标点。符、标点。4. 4. 为读取方便为读取方便, ,变量名尽量采用首写字母为大写的变量名尽量采用首写字母为大写的 英文单词英文单词, ,避免和库函数名冲突避免和库函数名冲突. .2.2.1变量变量2.2 Matlab2.2 Matlab的变量及其命名规则的变量及其命名规则绷宪馈蛀业租巢签杆循牙翌萤绣预谎史汪秉忙配孔擞郁送啤拧棱名涂付鳖数学建模的MATLAB课件数学建模的MATLAB课件7/29/20243

46、5ans 预设的计算结果的变量名eps 正极小值esp =2.2204e-16pi 内建的值inf或值 无限大NaN 无法定义一个数目 ( 1/0 )i 或 j 虚数单位i=j= sqrt(-1)nargin 函数输入参数个数nargout 函数输出参数个数realmax 最大的正实数realmin 最小的正实数flops 浮点运算次数2.2.2预定义的变量预定义的变量酝柴箩卜诅黔趾德各笔录洲校卡汞丫收实拢馈揽辩阑投信醇坟聚们鄙积邦数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024362.3 Matlab2.3 Matlab矩阵命令及其变换矩阵命令及其变换MATLAB书写表

47、达式的规则与“手写算式”差不多相同。如果一个指令过长可以在结尾加上.(代表此行指 令与下一行连续),例如键入 3*. 6 %求3与6的乘积 运行可得结果 ans = 182.3.1Matlab的赋值语句表达式蘸缕洒硬茫碑旱褂槐厚闭川袱苔坐躺即挟蚜弱螟习拼净缎惮童吓赌分割沸数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024372.3.2矩阵(数组)的创建格式格式一: 手工输入3行4列矩阵; A=1,2,3,4;-1,5,3,6;2,0,3,7;格式二:给定步长自动生成行矩阵; B=1:0.1:2; %行矩阵也叫数组格式三:用随机命令自动生成mn矩阵; C=rand(m,n);

48、格式四:调用等距插值命令生成行矩阵; D=linspace(a,b,n); 咳兢谜屁递写耪琴脾宏碴傍吼澎乌庙状百予层聋殊琳博旅署筐挖廊屋辩家数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024381全零矩阵的生成: A=zeros(m,n) 2全1矩阵的生成: B=ones(m,n);3. 单位矩阵的生成: C=eye(n);4. 对角矩阵的生成: D=diag(1,2,3,4); 5. hilbert矩阵的生成: E=hilb(n)6. 魔方矩阵的生成: F=magic(n);2.3.3特殊矩阵的表示与简单运算耽妇琵添终姜纯你问狡州拉们匪着蒜十徘借磐署语妮猫鸳迂丽菩签循瞎姓

49、数学建模的MATLAB课件数学建模的MATLAB课件7/29/202439矩阵的基本运算法则运算符名称格式法则说明+加A+B对应元素相加-减A-B对应元素相减*乘A*B按矩阵乘法定义相乘/右除A/B方程XB=A的解A*inv(B)左除BA方程BX=A的解inv(B)*A乘幂AB其中一个为标量是有意义2.3.3特殊矩阵的表示与简单运算掇硬黎消璃悄多铭霄今畅冠寨灯拂卤浦选麓放孟肮泅阿貌士讶法篮焊赡涎数学建模的MATLAB课件数学建模的MATLAB课件7/29/202440数组的基本运算法则运算符名称示例法则说明+加A+B对应元素相加-减A-B对应元素相减.*乘A.*B对应元相乘./右除A./B对应

50、元素相除.左除B.A对应元素相除.乘幂A.B对应元素求幂2.3.3特殊矩阵的表示与简单运算乔胸淹米铁咀昌保但浴巩江跨浅争潍绦什橙丁泰弱糙吧苟匆麻核翅俯踊申数学建模的MATLAB课件数学建模的MATLAB课件7/29/202441Matlab矩阵变换操作示例(一)clearA=rand(5) %生成一个5阶随机矩阵;A1=A(1:3,2:4); %取出A中由1,2,3行,2,3,4列构 成的子矩阵A2=A(5,4,3,2,1,:); %对A中的行重新排序;A(1,2,3,:)=; %删除A的1,2,3行;A(:,1,5)=; %删除A的1,5列;A(1,2,3,:)=A(2,3,1,:); %置

51、换A的1,2,3行;A3=A(:); %逐列排序把A拉成一个列向量;A(:)=B; %把B中的元素按列依次赋给A; 注:要求A与B的元素一样多,但行数可以不相等;2.3.3特殊矩阵的表示与简单运算虞曼烯尽芋同呜蕊袁砒农绘扦懈匀伺翱烛费活蓑擞端巍漫高挑瓣句跨含澄数学建模的MATLAB课件数学建模的MATLAB课件7/29/202442Matlab矩阵变换操作示例(二)1.按矩阵形式以矩阵B为块元素生成分块矩阵: A=repmat(B,n,m);2.把矩阵A的第i行的s倍加到第j行: A(j,:)=A(j,:)+A(i,:)*s;3.交换A的第i列与第j列: A(:,i,j)=A(:,j,i);4

52、.元素重排:按列元次序把m*n个元素的矩阵排成nm矩阵: B=reshape(A,n,m)5.矩阵合成:C=cat(1,A1,A2); D=cat(2,A1,A2);2.3.3特殊矩阵的表示与简单运算仿成社势袖惯跨骗豁削发虱急耐丛抛系巾揪裤筋瑶事抠岛滤桨徊他邓贡汉数学建模的MATLAB课件数学建模的MATLAB课件7/29/202443第三章Matlab数值计算3.5多项式运算多项式运算 3.6 插值与拟合插值与拟合3.4随机函数随机函数randrand和和randnrandn3.1 Matlab常用数学函数常用数学函数3.2 Matlab矩阵的运算与分解矩阵的运算与分解3.3 Matlab的

53、逻辑运算、条件语句与循环控制语句的逻辑运算、条件语句与循环控制语句3.7 数值积分数值积分3.8 常微分方程数值解常微分方程数值解谓拙凯瘟棵苞倾操珊线剖粕螟喳度乙赊柒饮霹觅挂卫歌赖顺屠木椭烟疙符数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024443.1 MATLAB3.1 MATLAB常用数学函数常用数学函数符号名称符号名称sin(x)正弦asin(x)反正弦cos(x)余弦acos(x)反余弦tan(x)正切atan(x)反正切cot(x)余切acot(x)反余切sec(x)正割asec(x)反正割csc(x)余割acsc(x)反余割3.1.1三角函数注:只要给x赋予实

54、值或复值,运行可输出函数值,例: sin(pi/3), cos(5),但X一般取复数矩阵.钾笑扩贴怕精晰宁耸游炎贪廊咨郸肃突腰拷舀写泼朽沙掖予浙舒愚绳掣舷数学建模的MATLAB课件数学建模的MATLAB课件7/29/202445符号名称符号名称sinh(x)双曲正弦asinh(x)反双曲正弦cosh(x)双曲余弦acosh(x)反双曲余弦tanh(x)双曲正切atanh(x)反双曲正切coth(x)双曲余切acoth(x)反双曲余切sech(x)双曲正割asech(x)反双曲正割csch(x)双曲余割acsch(x)反双曲余割3.1.2双曲函数注:只要给x赋予实值,运行可输出函数值例:tanh

55、(-2),asech(-3),但X通常取矩阵.枢就匆饶琼塑袄剧想蛆而停泉冲黍滓括态集忱茄帆堡驮霍附蜀芥樟摇馏蹄数学建模的MATLAB课件数学建模的MATLAB课件7/29/202446功能 正弦函数与双曲正弦函数格式 Y = sin(X) %计算参量X(可以是向量、矩阵,元素可以是复数)中每一个角度分量的正弦值Y,所有分量的角度单位为弧度。Y = sinh(X) %计算参量X的双曲正弦值Y。3.1.3.1 3.1.3.1 三角函数与双曲函数的操作三角函数与双曲函数的操作函数 sin sin、sinhsinh触淋议堑真萌僵假亦广畜涨窘庐紫衰宣唐索迢嫡浅差戊险尧窗谭搐褐际溉数学建模的MATLAB课

56、件数学建模的MATLAB课件7/29/202447几点补充说明(1)sin(pi)并不是零,而是与浮点精度有关的无穷小量eps,因为pi仅仅是精确值浮点近似的表示值而已;(2)对于复数Z=x+iy,函数的定义为:sin(x+iy)=sin(x)*cos(y)+i*cos(x)*sin(y);,;鄙让亏扎掷欠荤皆胚臼枢蛰雇晦石柔蒋弟改莉慎碴俏致蹄败酬蚊柠钓筛混数学建模的MATLAB课件数学建模的MATLAB课件7/29/202448例2-1x=-pi:0.01:pi;plot(x,sin(x)x=-5:0.01:5;plot(x,sinh(x)图形结果为图2-1。正弦函数与双曲正弦函数的图象3.

57、1.3.1 三角函数与双曲函数的操作三角函数与双曲函数的操作王迎肉桨刮襄犬茶镍助蝶侵筷捣貉蛊晒册琼汀抉抠驻吐悦库焕疏焕皖篇藻数学建模的MATLAB课件数学建模的MATLAB课件7/29/202449函数 asinasin、asinhasinh功能 反正弦函数与反双曲正弦函数格式 Y = asin(X) %返回参量X(可以是向量、矩阵)中每一个元素的反正弦函数值Y。若X中有的分量处于-1,1之间,则Y = asin(X)对应的分量处于-/2,/2之间,若X中有分量在区间-1,1之外,则Y= asin(X)对应的分量为复数。Y = asinh(X) %返回参量X中每一个元素的反双曲正弦函数值Y3.

58、1.3.1 三角函数与双曲函数的操作三角函数与双曲函数的操作蛊陈趁枫幅腔掐橇标紧翟醇羌扛谗梁锗矩张河丰穆文方推嘘危氢混戊左晒数学建模的MATLAB课件数学建模的MATLAB课件7/29/202450反正弦函数与反双曲正弦函数的定义为:反正弦函数与反双曲正弦函数的图象例2-2x = -1:.01:1; plot(x,asin(x) x = -5:.01:5; plot(x,asinh(x) 图形结果为图2-2。媒锦绳枯碾耸辩哦穿倪催啮侈籍商坪哺姨奔淑鞍蝴疆视河缩利碉仙旋烁哎数学建模的MATLAB课件数学建模的MATLAB课件7/29/202451函数 cos cos、coshcosh功能余弦函数

59、与双曲余弦函数格式Y=cos(X)%计算参量X(可以是向量、矩阵,元素可以是复数)中每一个角度分量的余弦值Y,所有角度分量的单位为弧度。我们要指出的是,cos(pi/2)并不是精确的零,而是与浮点精度有关的无穷小量eps,因为pi仅仅是精确值浮点近似的表示值而已。Y=sinh(X)%计算参量X的双曲余弦值Y3.1.3.1 三角函数与双曲函数的操作三角函数与双曲函数的操作股筷缨讽犁墅吭区卒药芜舀矗守锣茬档条昔沙襟逻疾练阴傍亏蛔蔷鼠抠界数学建模的MATLAB课件数学建模的MATLAB课件7/29/202452若X为复数z= x+iy,则函数定义为: cos(x+iy) = cos(x)*cos(y

60、) + i*sin(x)*sin(y),例2-3x=-pi:0.01:pi;plot(x,cos(x)x=-5:0.01:5;plot(x,cosh(x)图形结果为图2-3。 余弦函数与双曲余弦函数图琐胁燕订脆昔凡削鞘椭虱径债绞搁湘佩制扛啦迢秀镀颗沛畸议仓抛灌藉衣数学建模的MATLAB课件数学建模的MATLAB课件7/29/202453函数 acosacos、acoshacosh功能 反余弦函数与反双曲余弦函数格式 Y = acos(X) %返回参量X(可以是向量、矩阵)中每一个元素的反余弦函数值Y。若X中有的分量处于-1,1之间,则Y = acos(X)对应的分量处于0,之间,若X中有分量在

61、区间-1,1之外,则Y = acos(X)对应的分量为复数。Y = asinh(X) %返回参量X中每一个元素的反双曲余弦函数Y3.1.3.1 三角函数与双曲函数的操作三角函数与双曲函数的操作英咎该爬痹谚歼灿硒酝蔑诣势译板瑶彼询摈栋氟站战柜陪郧衅婴地许苗浇数学建模的MATLAB课件数学建模的MATLAB课件7/29/202454反余弦函数与反双曲余弦函数定义为: 例2-4x=-1:.01:1;plot(x,acos(x)x=-5:.01:5;plot(x,acosh(x)图形结果为图2-4。 反余弦函数与反双曲余弦函数恬万氧蔑午挥栽蚜盯杭腥遁请八绰适溶颧悄佰俯扫戳地瓮饰氓眉拴互鹰糖数学建模的M

62、ATLAB课件数学建模的MATLAB课件7/29/2024553.1.4指数函数、对数函数及复函数名称exp(x)expm(x)log(x)logm(x)log10(x)含义e为底的指数函数方阵的特征根指数函数e为底的对数函数方阵的特征对数函数10为底的对数函数名称abs(x)angle(x) real(x)imag(x)conj(x)含义X的模X的幅角X的实部X的虚部X的共轭例: exp(-2-5i), abs(3+4i), imag(1+2i)conj(-1+8i), complex(4,5), log(-1+3i);熏给煞鳞谈睫蛙自驹灵梳诱嘻氟绩糟贤货徐驭霖侨倪谆净婶蛮伯惯哆毕桔数学建模

63、的MATLAB课件数学建模的MATLAB课件7/29/2024563.1.4.1指数函数 exp(x)功能以e为底数的指数函数格式Y=exp(X)%对参量X的每一分量,求以e为底数的指数函数Y。X中的分量可以为复数。对于复数分量如,z=x+iy,则相应地计算式为:ez=ex*(cos(y)+i*sin(y)。例2-5A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;Y=exp(A)计算结果为:Y=1.0e+003*Columns1through40.00010.00080.02310.2704Columns5through61.0966-0.0099-0.0049i

64、仇怨骤侮宗蹭为欧嗜溯吮种到肯滁捅痉坠荔绳舔灭珠淖痞客晶条勇摧竞蹋数学建模的MATLAB课件数学建模的MATLAB课件7/29/202457矩阵按特征根取值的指数函数 expm(A)功能 求方阵的对角形以e为底数的指数函数格式 Y = expm(X) %计算以e为底数、x的每一个特征根为指数的指数函数值矩阵。说明 该函数为一内建函数,它有三种计算算法:(1)使用文件expm1.m中的用比例法与二次幂算法得到的Pad近似值;(2)使用Taylor级数近似展开式计算,这种计算在文件expm2.m中。但这种一般计算方法是不可取的,通常计算是缓慢且不精确的;(3)在文件expm3.m中,先是将矩阵对角线

65、化,再把函数计算出相应的的特征向量,最后转换过来。但当输入的矩阵没有与矩阵阶数相同的特征向量个数时,就会出现错误。3.1.4.1指数函数 exp(x)怎接垂嘘镶疹双敲享眨坪屑农咖牺缮短乍窿陆观诉掉搁午以结萝偿啊溢标数学建模的MATLAB课件数学建模的MATLAB课件7/29/202458Expm(A)的计算原理%expm(A)的计算分两步:(1)用命令: V,D=eig(A),直接求出的特征根和特征向量,给出分解式: A=V*D/V(2)在分解式中只对对角矩阵D中的特征根取指数函数值,也就是expm(A)=V*diag(exp(diag(D)/V3.1.3.1指数函数 exp(x)惭实兑针杰销

66、钳遁于肌胆惩熬茁资料泅熔羹嵌效镐孕兵用倒立牲敛格耪畜数学建模的MATLAB课件数学建模的MATLAB课件7/29/202459 A=hilb(4); %生成一个4阶xilbert矩阵 Y = expm(A)计算结果为:Y = 3.2506 1.2068 0.8355 0.6417 1.2068 1.7403 0.5417 0.4288 0.8355 0.5417 1.4100 0.3318 0.6417 0.4288 0.3318 1.2729expm(A)应用举例3.1.4.1指数函数 exp(x)坊具圃吏皑乏颐菩害泌奖仓很罚湘烁豪能的纠辗姑胸揣肉峭渤牛戈厉九椿数学建模的MATLAB课件数学

67、建模的MATLAB课件7/29/202460对数函数 log(x)log(x)的命令应用的命令应用功能 自然对数,即以e为底数的对数。格式 Y = log(X) %对参量X中的每一个元素计算自然对数。其中X中的元素可以是复数与负数,但由此可能得到意想不到的结果。若z = x + i*y,则log对复数的计算如下:log (z) = log (abs (z) + i*atan2(y, x)例2-6 下面的语句可以得到无理数的近似值: Pi = abs(log(-1)计算结果为: Pi = 3.14163.1.4.2对数函数 log(x)岿嫌样爵税湿这梧奴括档阀舷缆咨终蝶罪险羔姐硝攀骋卞扛注弹五吐

68、拧苑数学建模的MATLAB课件数学建模的MATLAB课件7/29/202461方阵的对数函数logm(X)设A有n个特征向量构成矩阵V,即有 V,D=eig(A), A=V*D/V;按expm(A)的逆运算,定义:logm(A)=V*diag(logm(diag(D)/V;例如:A=xilb(4),调用logm(A)可得结论:ans = -0.5157 1.2819 0.3274 0.1798 1.2819 -3.9121 2.5002 0.5120 0.3274 2.5002 -6.2592 3.0119 0.1798 0.5120 3.0119 -4.92823.1.4.2对数函数 log

69、(x)贩抑拣斟睁集派查桶咒讯生勾雌辅等嘛祟蜕雌荒侵芦暂仁戒谨拯酋将鸵鸟数学建模的MATLAB课件数学建模的MATLAB课件7/29/202462以10为底的对数函数 log10(A) log10(A)功能常用对数,即以10为底数的对数。格式Y=log10(X)%计算X中的每一个元素的常用对数,若X中出现复数,则可能得到意想不到的结果。例2-7L1=log10(realmax)%由此可得特殊变量realmax的近似值L2=log10(eps)%由此可得特殊变量eps的近似值M=magic(4);L3=log10(M)计算结果为:L1=308.2547L2=-15.6536L3=1.20410.3

70、0100.47711.11390.69901.04141.00000.90310.95420.84510.77821.07920.60211.14611.17610藩贮腆狱渝蜕良帕矿礁蹭谦杨郸序道险倘矛携焉靖衡退菲洲蔬诽篷刁皖盯数学建模的MATLAB课件数学建模的MATLAB课件7/29/202463复数的求模函数abs(X)功能 数值的绝对值与复数的模格式 Y = abs() %返回矩阵X的每一个元素的绝对值;若X为复数矩阵,则返回每一元素的模:abs(X) = sqrt(real(X).2+imag(X).2)。例2-8A = -1.9, -0.2, 3.1415926, 5.6, 7.0

71、, 2.4+3.6i;Y = abs(A)计算结果为:Y = 1.9000 0.2000 3.1416 5.6000 7.0000 4.32673.1.4.2对数函数 log(x)萧算透熬舱浪扫矛惶翔颓吃渝葛除书益献来悦坤赎孟窖来泻伍疵席小北辅数学建模的MATLAB课件数学建模的MATLAB课件7/29/202464复数的共轭函数 conj(Z) conj(Z)功能 复数的共轭值格式 ZC = conj(Z) %返回参量Z的每一个分量的共轭复数:conj(Z) = real(Z) - i*imag(Z) 函数 imag imag功能 复数的虚数部分格式 Y = imag(Z) %返回输入参量Z

72、的每一个分量的虚数部分。例2-9imag(2+3i)计算结果为:ans = 33.1.4.2复变函数愚酋击泰魄解尉迸库留杜癌热瞎旷礁兄羽陨瓜腻汤寥任瓷瓤涂孕上惑邓踢数学建模的MATLAB课件数学建模的MATLAB课件7/29/202465复数的虚部函数 imag(Z) imag(Z)功能复数的虚数部分格式Y=imag(Z)%返回输入参量Z的每一个分量的虚数部分。例2-10imag(2+3i)计算结果为:ans=3函数 real功能复数的实数部分。格式Y=real(Z)%返回输入参量Z的每一个分量的实数部分。例2-11real(2+3i)计算结果为:ans=23.1.4.2复变函数波硬脸名蛮渴枢

73、食屑碟虎奈誓盖盗茎唉毫湃谗州异胀漾雪拆艰茎瞧磨支熏数学建模的MATLAB课件数学建模的MATLAB课件7/29/202466复数的幅角函数 angle(Z)angle(Z)功能 复数的相角格式 P =angle(Z) %返回输入参量Z的每一复数元素的、单位为弧度的相角,其值在区间-,上。说明 angle(z) = imag (log(z) = atan2 (imag(z),real(z)例2-12Z =1-i, 2+i, 3-i, 4+i; 1+2i,2-2i,3+2i,4-2i; 1-3i,2+3i,3-3i,4+3i;Angle(Z)= -0.7854 0.4636 -0.3218 0.2

74、450 1.1071 -0.7854 0.5880 -0.4636 -1.2490 0.9828 -0.7854 0.64353.1.4.2复变函数抢磊澜逝苟宗垛懦殴匹恍喂说苇印蒸绣岗钡埔玲颧五芋依你瞄穴前詹乓玫数学建模的MATLAB课件数学建模的MATLAB课件7/29/202467生成复函数complex功能用实数与虚数部分创建复数格式c=complex(a,b)%用两个实数a,b创建复数c=a+bi。输出参量c与a、b同型(同为向量、矩阵、或多维阵列)。该命令比下列形式的复数输入更有用:a+i*b或a+j*b因为i和j可能被用做其他的变量(不等于sqrt(-1),或者a和b不是双精度的。

75、c=complex(a)%输入参量a作为输出复数c的实部,其虚部为0:c=a+0*i。例2-13a=uint8(1;2;3;4);%非符号8-bit整数型数据b=uint8(4;3;2;1);c=complex(a,b)计算结果为:c=1.0000+4.0000i2.0000+3.0000i3.0000+2.0000i4.0000+1.0000i猾咽鸣稻踏少俞铭紧恢枚骏赢棒幻遵菲陷运亏烦咨蹈孵数演棍挺完评怨绷数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024683.1.4.3 Matlab3.1.4.3 Matlab的圆整函数和求余函数的圆整函数和求余函数名称含义名称含义c

76、eil(x)向正无穷大圆整mod(x,y)除模取余floor(x)向负无穷大圆整rem(x)求余数round(x)向靠近整数圆整sign(x)符号函数fix(x)向零圆整sqrt(x)平方根函数例: floor(2.6)=2, ceil(-3.5)=3 mod(7,3)=1杰夜京沃赡溅惩暴瞩洽垄厚拉石煞谤狐豺墟展纽龚取查权坍泳独尽讯蕾掌数学建模的MATLAB课件数学建模的MATLAB课件7/29/202469功能 朝零方向取整格式 B = fix(A) %对A的每一个元素朝零的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝零方向的整数

77、部分。例2-14 A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i; B = fix(A)计算结果为: B = Columns 1 through 4 -1.0000 0 3.0000 5.0000 Columns 5 through 6 7.0000 2.0000 + 3.0 3.1.4.4圆整函数 fixfix乔审乾一脖寇究循尺仪韵虱痉盂著溃毫黍柴咬培窍涸闯阿熄昼穿托牧阜棘数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024703.1.4.5圆整函数 round功能 朝最近的方向取整。格式 Y = round(X) %对X的每一个

78、元素朝最近的方向取整数部分,返回与X同维的数组。对于复数参量X,则返回一复数,其分 量的实数与虚数部分分别取原复数的、朝最近方向的整数部分。例2-15A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i;Y = round(A)计算结果为:Y = Columns 1 through 4 -2.0000 0 3.0000 6.0000 Columns 5 through 6 7.0000 2.0000 + 4.0000i文荆庶卜徐臃影翌碘鳃悼惭关凑狙一就汪法钮赵化因纷舌敢陕质拣惜已踊数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024713

79、.1.4.6圆整函数floor功能 朝负无穷大方向取整格式 B = floor(A) %对A的每一个元素朝负无穷大的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝负无穷大方向的整数部分。例2-16A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i;F = floor(A)计算结果为:F = Columns 1 through 4 -2.0000 -1.0000 3.0000 5.0000 Columns 5 through 6 7.0000 2.0000 + 3.0000i重胰笼搔墩百摈拭坑脏伎

80、散眉橇晃肥漱坊族缔悲鲸矫磕啡士谴舟振援考梧数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024723.1.4.7圆整函数 ceil ceil功能 朝正无穷大方向取整格式 B = floor(A) % 对A的每一个元素朝正无穷大的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝正无穷大方向的整数部分。例2-17A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i;B = ceil(A)计算结果为:B = Columns 1 through 4 -1.0000 0 4.0000 6.0

81、000 Columns 5 through 6 7.0000 3.0000 + 4.0000i顿熟巧溉札斡缠腿旋凹姓舟衙朴汐锹筏帘益衙纶扒狈嫌骸膘礁乌丧侄疫伸数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024733.1.4.7取余数函数rem功能求作除法后的剩余数(正负均可)格式R=rem(X,Y)%返回结果:X-fix(X./Y).*Y其中X、Y应为整数。若X、Y为浮点数,由于计算机对浮点数的表示的不精确性,则结果将可能是不可意料的。fix(X./Y)为商数X./Y朝零方向取的整数部分。若X与Y为同符号的,则rem(X,Y)返回的结果与mod(X,Y)相同,不然,若X为负

82、数,则rem(X,Y)=mod(X,Y)-Y。该命令返回的结果在区间sign(X)*abs(Y),0,若Y中有零分量,则相应地返回NaN。局咋湍拒亢莎种虱猿扼序烟白疆选虹库剃晾薯堡湛祁誓冯钩掉倚涛悲倍夏数学建模的MATLAB课件数学建模的MATLAB课件7/29/202474功能 模数(带符号的除法余数)用法 M = mod(X,Y) %输入参量X、Y应为整数,此时返回余数X-Y.*floor(X./Y),其结果总是正数或零;若运算数x与y有相同的符号,则mod(X,Y)等于rem(X,Y)。总之,对于整数x,y,有:mod(-x,y) = rem(-x,y)+y。若输入为实数或复数,由于浮点

83、数在计算机上的不精确表示,该操作将导致不可预测的结果。例2-18M1 = mod(13,5) M2 = mod(1:5,3) 计算结果为:M1 = 3M2 = 1 2 0 1 23.1.4.8取余函数mod舅醋耐虾辞空冯偷袁裹舜铀雁俱绎誉咒猫椒磺但塑焦暮磊红耍伟七戊川阑数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024753.1.4.9组合函数 nchoosek nchoosek功能 二项式系数或所有的组合数。该命令只有对n=, , 0 t1=t1+1;B1(1,t1)=A(k);B1(2,t1)=k; else t2=t2+1; B2(1,t2)=A(k);B2(2,t2

84、)=k; endenddisp(中的正数及位置是),Bdisp(中的负数及位置是),B脾琶复笛赁蜘李络审咎衡叛章漓竹昧磊梗拼帜隋哨弦攀相兵侩向垄礼狭咆数学建模的MATLAB课件数学建模的MATLAB课件7/29/202485语句格式: switch case %定义case为整数变量case1 结论1 %变量取值case1时case2 结论2 %变量取值case2时case3 结论3 %变量取值case3时. .caseN 结论N %变量取值caseN时 end %语句结束(3) switch-case语句辅澎旗拎钉宁杠瘤预遣篙宽遣霓摇耿栏迪锡坤曙霄悸向谚别斟恼隋该魂邪数学建模的MATLAB课

85、件数学建模的MATLAB课件7/29/2024864循环语句 for语句命令格式:for k=n1:d:n2 % 以d为步长; g(k+1)=f(k); %循环主体,; end %结束符; while语句命令格式:while f(x,n)S g(k+1)=f(k); %循环主体; end %结束符;5. Matlab5. Matlab编程技巧编程技巧 调试程序 输入输出参数 nargin、nargout盖熏笨凤眷舒崖例醋隘鸯跺卧柔服时凹忻侍勺秀玖坟刹歧索捕骨公鞠滔誓数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024873.3.2循环控制语句for-end应用示例(一)%求调

86、和级数前100项之和SS=0; %初始化赋值;for k=1:100S=S+1/k; %循环主体语句;enddisp(调和级数前100项之和S等于),S运行结果输出: 调和级数前100项之和S等于S = 5.1874棒喂殷苏爬殃找映喳芝桅刃汛产夹享赫坚财慕赤呻报遣秋龚烘鳃焊赁戌氦数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024883.3.3循环控制语句for-end应用示例(二)clear求100之内的全部素数B(1:4)=2,3,5,7;s=4;%先给出s个素数;C=1;fork=10:100forj=1:sA(j)=mod(k,B(j);%求出k除以素数B(j)的余数

87、;C=C*A(j);%求出前j个余数的乘积;endifC=0s=s+1;B(s)=k;%将此数添加到素数表列中;endenddisp(100之内的全部是),B%输出所求素数阳鲍筋济旗煽乞骚嘴卖衫堵融纬聂黔搬告搓肋峦惹母累蓖魄怠滦歪勉搏亦数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024893.3.4循环控制语句for-end应用(三)%按给定公式生成一个按给定公式生成一个1010行行1010列的下三角矩阵列的下三角矩阵clearclear A=zeros(10);% A=zeros(10);%初始化初始化A A A(1:10,1)=1; A(1,2:10)=0; A(1:1

88、0,1)=1; A(1,2:10)=0; for k1=2:10 for k1=2:10 for k2=2:k1 for k2=2:k1 A(k1,k2)=. A(k1,k2)=. A(k1-1,k2)+A(k1-1,k2-1); A(k1-1,k2)+A(k1-1,k2-1); end end end end disp( disp(按公式计算结果生按公式计算结果生成的矩阵是成的矩阵是),A),A运行左边的程序后输出结果为:按公式计算结果生成的矩阵是A =1000000000110000000012100000001331000000146410000015101051000016152015

89、6100017213535217100182856705628810193684126126843691九汐勘欢掷闷尾喝初旁膨柄墟渺鱼养达檀根旧型氛虚撇蜕兑财蚁金嫁送焦数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024903.3.5用循环控制语句for-end应用(四)%双对角形矩阵的生成clearfork1=1:7fork2=1:7ifk2+k1=8|k2=k1A(k1,k2)=1;elseA(k1,k2)=0;endendenddisp(生成的双对角形矩阵是),A执行左边程序输出结果:A=9000909090009000909090009迷圾楼腑莫艇宋丹方蔡凭愉状衣射卫

90、调埠蜜题涪苞孰旭毯履荔滩收指否捻数学建模的MATLAB课件数学建模的MATLAB课件7/29/202491%三对角矩阵的生成clearm=8;n=8;fork1=1:mfork2=1:nifk1=k2A(k1,k2)=1;elseifk2=k1+1A(k1,k2)=3;elseifk2=k1-1A(k1,k2)=2;elseA(k1,k2)=0;endendenddisp(所生成的三对角矩阵是),A3.3.6循环控制语句for-end应用(五)厩砧礼耪敲乖槛脖馈事姑怨阁腮释拿某欠谣榴亡膝券隅瞄驯腐讫眠旁嘿荧数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024923.3.7循环

91、控制语句for-end应用(六)排序函数排序函数SortSort的程序设计思路的程序设计思路%对下列行矩阵A中的元素从小到大进行排序并记取原来的位置;A = -1.9, -2, pi, 5.6, 7.0, 2.4+3.6i;%由于矩阵中有虚数,故应分两步走.%(1)先把全部元素化为实数,其程序如右边所示 clearA = -1.9, -2, pi, 5.6, 7.0, 2.4+3.6i;n=length(A);%求A的长度for k1=1:n if imag(A(k1)=0 A1(k1)=A(k1); else A1(k1)=abs(A(k1); end end A1 %输出实数化结果;忘占溉

92、捂衅权饼娜于舰乓技筏陵邪镐欣战帛唉顿琵研晌余瘩碌铣受幢铸蛰数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024933.3.8循环控制语句for-end应用(七) %(2)第二步,(续前页)对A1中的元素进行排序,并记取它们各自原来的位置; N=max(A1)+100; for t=1:n a=N; %初始化 for k=1:n if A1(k) a a=A1(k); c=k; end end S(t)=a; D(t)=c; A1(c)=inf; end A0=A1;disp(从小到大排序后的序列是), S, disp(排序后的序列中各元素的原位置是),D灶姻符航囱郧垢叼敬大愁

93、砧蜕瑚磷框众棵函耗酷蔑廉曝隋弦照供营舵寺乙数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024943.4 随机函数 randrand与与randnrandn功能 生成元素均匀分布于(0,1)上的数值与阵列用法 Y = rand(n) %返回n*n阶的方阵Y,其元素均匀分布于 区间 (0,1)。若n不是一标量,则显示一出错信息。Y = rand(m,n)、Y = rand(m n) %返回阶数为m*n的,元素均匀分布于区间(0,1)上矩阵Y。Y = rand(m,n,p,)、Y = rand(m n p) %生成阶数m*n*p*的元素服从均匀分布的多维随机阵列Y。3.4.1随机

94、函数rand舷汽铭跌稍拿蚁牡枯歇制翅拓肖违熙佰挫项旷全改腐瞬羹宗咒钙荔辊但蹲数学建模的MATLAB课件数学建模的MATLAB课件7/29/202495计算结果可能为:R1 = 0.6655 0.0563 0.2656 0.5371 0.6797 0.3278 0.4402 0.9293 0.5457 0.6129 0.6325 0.4412 0.9343 0.9394 0.3940 0.5395 0.6501 0.5648 0.7084 0.2206 Y = rand(size(A) Y = rand(size(A) % %生成一与阵列生成一与阵列A A同型的随机均匀阵列同型的随机均匀阵列Y

95、Yrand %rand %该命令在每次单独使用时,都返回一随机数该命令在每次单独使用时,都返回一随机数(服从均匀分布)。(服从均匀分布)。s = rand(s = rand(statestate) ) % %返回一有返回一有3535元素的列向量元素的列向量s s,其中包含均匀分布,其中包含均匀分布生成器的当前状态。该改变生成器的当前的状态,生成器的当前状态。该改变生成器的当前的状态,见表见表2-12-1。例2-23:R1=rand(4,5)邀稍脚掘滋嗡彰吾射挪日拿印几拣竹邹款亢伺窒蛋汽召图迎唱院凉世抄骗数学建模的MATLAB课件数学建模的MATLAB课件7/29/202496例2-24: R1

96、 = rand(4,5) R2 = 0.6 + sqrt(0.1) * randn(5)计算结果为:R1=0.27780.26810.55520.51670.88210.27450.37100.19160.33850.58230.91240.51290.41640.29930.05500.41250.26970.15080.93700.5878R2=0.46320.97660.54100.63600.69310.07330.97600.82950.93730.17750.63960.58810.41400.61870.82590.69100.70351.29040.56981.11340.23

97、750.65520.55690.33680.3812籽扁渍皂孟道掖湿堵级彤怯烫徒狞时私一突卷眉傅悉校峡精士礼治紫眼谎数学建模的MATLAB课件数学建模的MATLAB课件7/29/202497运行程序后输出结果:R2=33.683519.821636.943649.628946.467918.516434.259715.366331.054949.037719.002637.100633.604639.536113.933612.464112.980435.542023.291646.830428.523848.741849.084313.051210.9265例2-25 a = 10; b =

98、 50; R2 = a + (b-a) * rand(5) % 经过线性变换后生成元素均匀分布于(10,50)上的矩阵;聂路佐荒杯公缆哮炽蘑诛熙犀凯嚷碱政舍尼入靶雏异穴洛好日夺粗埋漂梧数学建模的MATLAB课件数学建模的MATLAB课件7/29/202498s=rand(state)%返回一有2元素的向量s,其中包含正态分布生成器的当前状态。该改变生成器的当前状态,见下表命令含义rand(state,s)设置状态为srand(state,0)设置生成器为初始状态rand(state,k)设置生成器第k个状态(k为整数)rand(state,sum(100*clock)设置生成器在每次使用时的状

99、态都不同(因为clock每次都不同)3.4.2随机函数rand粳肺究杀肛肃缠进牲超碘呻柯翌蒸毅烷眺遏夺摩兽糊路明嚼克沁闷场蚂箍数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024993.4.3随机函数randn功能 生成元素服从正态分布(N(0,1))的数值与阵列格式 Y = randn(n) %返回n*n阶的方阵Y,其元素服从正态分布N(0,1)。若n不是一标量,则显示一出错信息.Y = randn(m,n)、Y = randn(m n) %返回阶数为m*n的,元素均匀分布于区间(0,1)上矩阵Y。Y = randn(m,n,p,)、Y = randn(m n p) %生成

100、阶数m*n*p*的,元素服从正态分布的多维随机阵列Y。Y = randn(size(A) %生成一与阵列A同型的随机正态阵列Y;randn %该命令在每次单独使用时,都返回一随机数(服从正态分布)。羡痉裤琳忽灭枫轮盂虚搏战冷况俏涡蛰琴兴醒迫睛姑糕类孜黄泥衰羞家株数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024100s=randn(state)%返回一有2元素的向量s,其中包含正态分布生成器的当前状态。该改变生成器的当前状态,见下表。命令含义randn(state,s)设置状态为srandn(state,0)设置生成器为初始状态rand(state,k)设置生成器第k个状态

101、(k为整数)rand(state,sum(100*clock)设置生成器在每次使用时的状态都不同(因为clock每次都不同)3.4.4随机函数randn饵杂打问薪皋万播拟明梅赣钓早莎筏霖怨锣窃哉听否疹族钝宝祸温来症修数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024101Randn的应用:对正态分布随机函数产生的矩阵各元素按大小装入8个箱中并画出统计频率图clear%A=rand(10,10);B=randn(10,10);t1=0;t2=0;t3=0;t4=0;t5=0;t6=0;t7=0;t8=0;fork1=1:10fork2=1:10ifB(k1,k2)=-3t1=

102、t1+1;C(t1,1)=B(k1,k2);elseifB(k1,k2)-3t2=t2+1;C(t2,2)=B(k1,k2);elseifB(k1,k2)-2t3=t3+1;C(t3,3)=B(k1,k2);elseifB(k1,k2)-1t4=t4+1;C(t4,4)=B(k1,k2);elseifB(k1,k2)0t5=t5+1;C(t5,5)=B(k1,k2);elseifB(k1,k2)1t6=t6+1;C(t6,6)=B(k1,k2);elseifB(k1,k2)2t7=t7+1;C(t7,7)=B(k1,k2);elseB(k1,k2)3t8=t8+1;C(t8,8)=B(k1,k

103、2);endendendCP=t1,t2,t3,t4,t5,t6,t7,t8/100bar(P)篱胃孽秘喉匡操正频俐张甜孰朋敌夜滥久必呢拾漳捏埋庞纷招预宾卿沮络数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024102求多项式的根,即多项式为零的值,可能是许多学科共同的问题。用MATLAB可以求解这个问题,并提供其它的多项式操作工具。在MATLAB里,多项式由一个行向量表示,它的系数是按降幂排列。例如,输入多项式x412x30x225x116,只须按降幂输入它的系数: p=1 -12 0 25 116;注意,必须包括具有零系数的项。除非特别地辨认,MATLAB无法知道哪一项为

104、零。给出这种形式,用函数roots找出一个多项式的根。 r=roots(p) %此命令可求出它的四个根为: r=11.7473 , 2.7028 , -1.2251 + 1.4672i , -1.2251 - 1.4672i3.5多项式运算3.5.1多项式求根幢府猪秋代傍欧胶吱悟自芭箕锚耗囚挺英呻冶房抹泵疽爱刽国室额尹嘉奇数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024103因为在MATLAB中,无论是一个多项式,还是它的根,都是向量,MATLAB按惯例规定,多项式是行向量,根是列向量。给出一个多项式的根,也可以构造相应的多项式。在MATLAB中,命令poly执行这个任务

105、。 pp=poly(r) pp = 1.0e+002 * Columns 1 through 4 0.0100 -0.1200 0.0000 0.2500 Column 5 1.1600 + 0.0000i pp=real(pp) %throw away spurious imaginary part pp =1.0000 -12.0000 0.0000 25.0000 116.0000因为MATLAB无隙地处理复数,当用根重组多项式时,如果一些根有虚部,由于截断误差,则poly的结果有一些小的虚部,这是很普通的。消除虚假的虚部,如上所示,只要使用函数real抽取实部。3.5.1多项式的重构腥

106、飞太僚冲疤晚秉航属殆改漾迄硅柜腿凳热韭获霍柒站盼歉皿求胳情葡毒数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024104函数convconv支持多项式乘法(执行两个数组的卷积)。考虑两个多项式a(x)=x32x23x4和b(x)= x34x29x16的乘积: a=1 2 3 4 ; b=1 4 9 16; c=conv(a , b) c = 1 6 20 50 75 84 64结果是c(x)=x66x520x450x375x284x64。两个以上的多项式的乘法需要重复使用convconv。3.5.2 多项式的乘积(卷积)卯涂守抉战欠士协案梨洱抉押鬼胸须它壳舟声垫急焕阁资谓成敌

107、误闷接甭数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024105对多项式加法,MATLAB不提供一个直接的函数。如果两个多项式向量大小相同,标准的数组加法有效。把多项式a(x)与上面给出的b(x)相加。 d=a+b d = 2 6 12 20结果是d(x)= 2x36x212x20。当两个多项式阶次不同,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次。考虑上面多项式c和d相加: e=c+0 0 0 d e = 1 6 20 52 81 96 84结果是e(x)= x66x520x452x381x296x84。要求首零而不是尾零,是因为相关的系数象x幂次一样,必须整

108、齐。3.5.3 多项式的加法撵裴杖杜忍仁顺菩泵衙研毯畜扫捣秦铁宋弦照荒僳秀炎键军踢毗郴姚熄姑数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024106第四章Matlab数值计算3.1.5多项式加法的库函数程序源代码为:functionp=mmpadd(a,b)%MMPADDPolynomialaddition.%MMPADD(A,B)addsthepolynomialAandB%Copyright(c)1996byPrenticeHall,Inc.ifnargin2error(Notenoughinputarguments)enda=a(:).;%makesureinputs

109、arepolynomialrowvectorsb=b(:).;na=length(a);%findlengthsofaandbnb=length(b);p=zeros(1,nb-na)a+zeros(1,na-nb)b;%addzerosasnecessary3.5.4多项式的加法函数程序尧湾抹萄梁菜楔莲拨伟盂鹰泪垦鼠洗悼雾砖捕猴攀千贰宴板绩梅瘁硷顺颜数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024107在一些特殊情况,一个多项式需要除以另一个多项式。在MATLAB中,这由函数deconv完成。用上面的多项式b和cq,r=deconv(c,b)q=1234r=000000

110、0这个结果是b被c除,给出商多项式q和余数r,在现在情况下r是零,因为b和q的乘积恰好是c。3.5.5多项式的除法民枷架碟籽鹰乘谅呐索鹰应岩思系脓坐真歪舜去烷飞掂国郊坯耸止孰震堕数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024108由于一个多项式的导数表示简单,MATLAB为多项式求导提供了函数polyder。例如,设6有次多项式g=162048697244h=polyder(g)%输入求导命令可得结果如下h=63080144138723.5.6多项式的导数钻勃你软送碱棘忧俊诧痈脓夹衔滨鸿欲狭兢酚狙钎瑞碉糠砾侠渔弧玄宅响数学建模的MATLAB课件数学建模的MATLAB课件

111、7/29/2024109根据多项式系数的行向量,可对多项式进行加,减,乘,除和求导,也应该能对它们进行估值。在MATLAB中,估值由函数polyval来完成。例x=linspace(-1,3);%choose100datapointsbetween-1and3.p=14-7-10;%usespolynomialp(x)=x34x27x10v=polyval(p,x);计算x值上的p(x),把结果存在v里。然后用函数plot绘出结果。plot(x,v),title(x3+4x2-7x-10),xlabel(x)%得图形如下3.5.7多项式的估值与曲线作图刚章接崩蜒妹氏滤菌措每终长裁贡榷碗靴躁灭阀

112、春蜒踌帕牲褒减桥航冕崔数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024110在许多应用中,例如富里哀(Fourier),拉普拉斯(Laplace)和Z变换,出现有理多项式或两个多项式之比。在MATLAB中,有理多项式由它们的分子多项式和分母多项式表示。对有理多项式进行运算的两个函数是residue和polyder。函数residue执行部分分式展开。num=10*12;%numeratorpolynomialden=poly(-1;-3;-4);%denominatorpolynomialres,poles,k=residue(num,den)res=-6.66675.0

113、0001.6667poles=-4.0000-3.0000-1.0000k=3.5.8 有理多项式及其部分分式愿神是曝赂热糕陶止絮栖哥鸣卵牟拘炙举拥淡悉拈矿梭虽降掖郴斌句栅澈数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024111结果是余数、极点和部分分式展开的常数项。上面的结果说明了该问题:这个函数也执行逆运算。n,d=residue(res,poles,k)n=0.000010.000020.0000d=1.00008.000019.000012.0000roots(d)ans=-4.0000-3.0000-1.00003.5.9 有理多项式及其部分分式萤妈姜舒瘁囱词沮

114、贺须询设鲸脾疑风指蛹厉抛辟幢醋顿蔫铝讣铃骡栏胚余数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024112函数polyder除了对多项式求导外,也可对有理式求导,其区别在于:当给出一个输入,则它对多项式求导,当给出两个输入,则它对有理多项式求导,其格式如下:b,a=polyder(num,den)b=-20-140-320-260a=116102328553456144该结果证实:3.5.10 有理多项式的导数寐乞屁防狈畏碧书扎末嘴胚携彦募蹦躺绥敖鄙片稽挪塔陛截峨梯絮鼻固需数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241133.5.11多项式与分式运算

115、命令表多项式运算命令说明conv(a,b)乘法q,r=deconv(a,b)除法poly(r)用根构造多项式polyder(a)对多项式或有理多项式求导polyfit(x,y,n)多项式数据拟合polyval(p,x)计算x点中多项式值(也叫估值)r,p,k=residue(a,b)部分分式展开式a,b=residue(r,p,k)部分分式组合roots(a)求多项式的根改嫩熙哇渊篷耪弟嘛梭质给胎宅很帆挥伟失府鱼栓吼彻稳涨销祥敦愉舟净数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241143.6 3.6 插值与拟合插值与拟合插值法是实用的数值方法,是函数逼近的重要方法。在生

116、产和科学实验中,自变量x与因变量y的函数y = f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。如何根据观测点的值,构造一个比较简单的函数y=(x),使函数在观测点的值等于已知的数值或导数值。用简单函数y=(x)在点x处的值来估计未知函数y=f(x)在x点的值。寻找这样的函数(x),办法是很多的。(x)可以是一个代数多项式,或是三角多项式,也可以是有理分式;(x)可以是任意光滑(任意阶导数连续)的函数或是分段函数。函数类的不同,自然地有不同的逼近效果。在许多应用中,通常要用一个解析函数(一、二元函数)来

117、描述观测数据。根据测量数据的两种不同类型,也就是:1测量值是准确的,没有误差。2测量值与真实值有误差。这时对应地有两种处理观测数据方法:1插值或曲线拟合。2回归分析(假定数据测量是精确时,一般用插值法,否则用曲线拟合)。尤啤消峙仍锥萎鼠粥撅碎搅汀癌沸逗狡佛花庙抡戏终阿寓渭河乾车宏镇斧数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241153.6 3.6 插值与拟合插值与拟合命令1 interp1 interp1功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。各个参量之间的关系示意图为图3-1

118、。图3-1 数据点与插值点关系示意图3.6.1 插值命令插值命令interp1俱月诸球酚经砖静住栋腕阻笑桅锈邑洁夜兽博栗村短怠穴销衰肯酞鹏惨蚕数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024116格式 yi=interp1(x,Y,xi) %返回插值向量yi,每一元素对应于参量xi,同时由向量x与Y的内插值决定。参量x指定数据Y的点。若Y为一矩阵,则按Y的每列计算。yi是阶数为length(xi)*size(Y,2)的输出矩阵。 yi=interp1(Y,xi) ;%假定x=1:N,其中N为向量Y的长度,或者为矩阵Y的行数。 yi=interp1(x,Y,xi,metho

119、d) %用指定的算法计算插值:nearest:最近邻点插值,直接完成计算;linear:线性插值(缺省方式),直接完成计算;spline:三次样条函数插值。对于该方法,命令interp1调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函数。命令spline用它们执行三次样条函数插值;pchip:分段三次Hermite插值。对于该方法,命令interp1调用函数pchip,用于对向量x与y执行分段三次内插值。该方法保留单调性与数据的外形;3.6.1 插值命令插值命令interp1嫁衡陶抚茵烤炬励流陶虽审却定戮钮然奶旬峪帛铅蘸霸膊玛毋举芭承凯日数学建模

120、的MATLAB课件数学建模的MATLAB课件7/29/2024117cubic:与pchip操作相同;v5cubic:在MATLAB 5.0中的三次插值。对于超出x范围的xi的分量,使用方法 nearest、linear、v5cubic的插值算法,相应地将返回NaN。对其他的方法,interp1将对超出的分量执行外插值算法。yi = interp1(x,Y,xi,method,extrap) %对于超出x范围的xi 中的分量将执行特殊的外插值法extrap。yi = interp1(x,Y,xi,method,extrapval) %确定超出x范围的xi中的分量的外插值extrapval,其值

121、通常 取NaN或0。3.6.1 插值命令插值命令interp1碎辖公帕炸惋魏闪早告憎咏幻旁窗棒掩财孙捂攀棕荚褪鲁挚季氰游榜讫龟数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241183.6.1 插值与拟合示例插值与拟合示例例3-1 x =0:10; y = x.*sin(x); xx=0:.25:10; yy = interp1(x,y,xx); plot(x,y,kd,xx,yy)插值图形为图3-2。例3-2 year = 1900:10:2010; product = 75.995 91.972 105.711 123.203 131.669 150.697 179.3

122、23 203.212 226.505 249.633 256.344 267.893 ; p1995 = interp1(year,product,1995) x=1900:1:2010; y=interp1(year,product,x,pchip); plot(year,product,o,x,y)插值结果为:p1995 = 252.9885插值图形为图3-3。柴桩付施姿竿院足瑟出封埔奔懦绪对傅剖胖狗捏斤椽奄霉柑钥锹煌戴涛害数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024119命令2interp2功能二维数据内插值(表格查找)格式ZI=interp2(X,Y,Z,XI

123、,YI)%返回矩阵ZI,其元素包含对应于参量XI与YI(可以是向量、或同型矩阵)的元素,即Zi(i,j)Xi(i,j),yi(i,j)。用户可以输入行向量和列向量Xi与Yi,此时,输出向量Zi与矩阵meshgrid(xi,yi)是同型的。同时取决于由输入矩阵X、Y与Z确定的二维函数Z=f(X,Y)。参量X与Y必须是单调的,且相同的划分格式,就像由命令meshgrid生成的一样。若Xi与Yi中有在X与Y范围之外的点,则相应地返回nan(NotaNumber)。ZI=interp2(Z,XI,YI)%缺省地,X=1:n、Y=1:m,其中m,n=size(Z)。再按第一种情形进行计算。ZI=inte

124、rp2(Z,n)%作n次递归计算,在Z的每两个元素之间插入它们的二维插值,这样,Z的阶数将不断增加。interp2(Z)等价于interp2(z,1)。3.6.2 插值命令插值命令interp2剂抬跟辰遍挠地樟汾焙宴乎憎滤才坯牛唾迄僵嘲威奉虑洛缄蠢讨察都幂馆数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024120ZI=interp2(X,Y,Z,XI,YI,method)%用指定的算法method计算二维插值:linear:双线性插值算法(缺省算法);nearest:最临近插值;spline:三次样条插值;cubic:双三次插值。图3-4二维插值图例3-3:X,Y=mesh

125、grid(-3:.25:3);Z=peaks(X,Y);XI,YI=meshgrid(-3:.125:3);ZZ=interp2(X,Y,Z,XI,YI);surfl(X,Y,Z);holdon;surfl(XI,YI,ZZ+15)axis(-33-33-520);shadingflatholdoff插值图形为图3-4。图3-4二维插值图3.6.2 插值命令插值命令interp2关转蚜瞎圾丰坠泰楼拙崇写急蔫悉鞘元钨衙偏芝帽钉旗肠咽树莆坞朽孝赂数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241213.6.23.6.2插值命令插值命令interp2interp2的应用的应用例

126、3-4years=1950:10:1990;service=10:10:30;wage=150.697199.592187.625179.323195.072250.287203.212179.092322.767226.505153.706426.730249.633120.281598.243;w=interp2(service,years,wage,15,1975)插值结果为:w=190.6288芥昔墨憨敏荆狠埠蠕叔矾稀藕绚启基欠亚亨积戌臻庞弓鸵勃界脖骤靖坏炮数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241223.6.3插值命令插值命令interp3命令3inte

127、rp3功能三维数据插值(查表)格式VI=interp3(X,Y,Z,V,XI,YI,ZI)%找出由参量X,Y,Z决定的三元函数V=V(X,Y,Z)在点(XI,YI,ZI)的值。参量XI,YI,ZI是同型阵列或向量。若向量参量XI,YI,ZI是不同长度,不同方向(行或列)的向量,这时输出参量VI与Y1,Y2,Y3为同型矩阵。其中Y1,Y2,Y3为用命令meshgrid(XI,YI,ZI)生成的同型阵列。若插值点(XI,YI,ZI)中有位于点(X,Y,Z)之外的点,则相应地返回特殊变量值NaN。VI=interp3(V,XI,YI,ZI)%缺省地,X=1:N,Y=1:M,Z=1:P,其中,M,N,

128、P=size(V),再按上面的情形计算。VI=interp3(V,n)%作n次递归计算,在V的每两个元素之间插入它们的三维插值。这样,V的阶数将不断增加。interp3(V)等价于interp3(V,1)。VI=interp3(,method)%用指定的算法method作插值计算:linear:线性插值(缺省算法);cubic:三次插值;spline:三次样条插值;nearest:最邻近插值。巧垄休佐玲运福隆扁迹谐蕊愤滦激套咐东车吉怒兽汹著剂缸韵掀雄旬废惹数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024123 3.6.3插值命令插值命令interp3说明说明 在所有的算法

129、中,都要求在所有的算法中,都要求X,Y,Z是单调且有相同的格点形式。是单调且有相同的格点形式。当当X,Y,Z是等距且单调时,用算法是等距且单调时,用算法*linear,*cubic,*nearest,可得到快速插值。,可得到快速插值。例例3-5 x,y,z,v = flow(20); xx,yy,zz = meshgrid(.1:.25:10, -3:.25:3, -3:.25:3); vv = interp3(x,y,z,v,xx,yy,zz); slice(xx,yy,zz,vv,6 9.5,1 2,-2 .2); shading interp;colormap cool插值图形为图插值图

130、形为图3-5。卓跪蚜灶看冕批爸艘更熏输砰惶勘豫母释开雏滥镐转殷裙罗卉邱诵姬蔡脸数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241243.6.4插值命令插值命令interpft命令4interpft功能功能 用快速用快速Fourier算法作一维插值算法作一维插值格式格式 y = interpft(x,n) %返回包含周期函数返回包含周期函数x在重采样的在重采样的n个等距个等距的点的插值的点的插值y。若。若length(x)=m,且,且x有采样间隔有采样间隔dx,则新的,则新的y的采样的采样间隔间隔dy=dx*m/n。注意的是必须。注意的是必须nm。若。若x为一矩阵,则按为一

131、矩阵,则按x的列进的列进行计算。返回的矩阵行计算。返回的矩阵y有与有与x相同的列数,但有相同的列数,但有n行。行。y = interpft(x,n,dim) %沿着指定的方向沿着指定的方向dim进行计算进行计算凰都灰坟粮剖扎趟匀熏凸误薯象息喳闸猎罩迁柴袱抄真向盾瓤拢思忍途猩数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241253.6.5插值命令插值命令spline命令5spline功能三次样条数据插值格式yy=spline(x,y,xx)%对于给定的离散的测量数据x,y(称为断点),要寻找一个三项多项式,以逼近每对数据(x,y)点间的曲线。过两点只能确定一条直线,而通过一

132、点的三次多项式曲线有无穷多条。为使通过中间断点的三次多项式曲线具有唯一性,要增加两个条件(因为三次多项式有4个系数):1三次多项式在点(xi,yi)处有P(xi)=P(xi):;2三次多项式在点(xi+1,yi+1)处有:P(xP(xi+1i+1)=P(x)=P(xi+1i+1) ) ;3p(x)在点处的斜率是连续的(为了使三次多项式具有良好的解析性,加上的条件);4p(x)在点处的曲率是连续的;对于第一个和最后一个多项式,人为地规定如下条件:劫啮谋牧需彬插杏姚出液节牌臆汁捐碴宋趣岗眷叙毁蛀猫揉铬僻乎粳俭库数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241263.6.5插

133、值命令插值命令spline上述两个条件称为非结点(not-a-knot)条件。综合上述内容,可知对数据拟合的三次样条函数p(x)是一个分段的三次多项式:其中每段都是三次多项式。该命令用三次样条插值计算出由向量x与y确定的一元函数y=f(x)在点xx处的值。若参量y是一矩阵,则以y的每一列和x配对,再分别计算由它们确定的函数在点xx处的值。则yy是一阶数为length(xx)*size(y,2)的矩阵。pp=spline(x,y)%返回由向量x与y确定的分段样条多项式的系数矩阵pp,它可用于命令ppval、unmkpp的计算。阑泻笨灶淹匹孪晋留刁培暖港逛霜煌阔窿香瞻堕焰揭如魄耸鸵舵瓦睬吵垫数学建

134、模的MATLAB课件数学建模的MATLAB课件7/29/20241273.6.6插值命令插值命令spline及插值图形及插值图形例3-7设点列x=024581212.817.219.920;对离散地分布在x上的随机点列y=rand(1,length(x)进行样条插值计算如下:x=024581212.817.219.920;y=rand(1,length(x);x1=0:.25:20;y1=spline(x,y,x1);plot(x,y,ro,x1,y1,m-,linewidth,3)插值图形结果为图3-6。图3-6央虑狡寿艘导冯坯菲你穿皿序抹惕影挥希愈富衬乎跨板蕴秒简午回任迂喻数学建模的MAT

135、LAB课件数学建模的MATLAB课件7/29/20241283.6.7插值命令插值命令interpn命令7interpn功能n维数据插值(查表)格式VI=interpn(X1,X2,Xn,V,Y1,Y2,Yn)%返回由参量X1,X2,Xn,V确定的n元函数V=V(X1,X2,Xn)在点(Y1,Y2,Yn)处的插值。参量Y1,Y2,Yn是同型的矩阵或向量。若Y1,Y2,Yn是向量,则可以是不同长度,不同方向(行或列)的向量。它们将通过命令ndgrid生成同型的矩阵,再作计算。若点(Y1,Y2,Yn)中有位于点(X1,X2,Xn)之外的点,则相应地返回特殊变量NaN。VI=interpn(V,Y1

136、,Y2,Yn)%缺省地,X1=1:size(V,1),X2=1:size(V,2),Xn=1:size(V,n),再按上面的情形计算。VI=interpn(V,ntimes)%作ntimes次递归计算,在V的每两个元素之间插入它们的n维插值。这样,V的阶数将不断增加。interpn(V)等价于interpn(V,1)。珐闪擦朵正嚏央嗅巴逗礼汪这公梢阐嫂品庸说裹苗星愈涯扣斌嚼剧棵处橙数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241293.6.8插值命令插值命令meshgridVI=interpn(,method)%用指定的算法method计算:linear:线性插值(缺省

137、算法);cubic:三次插值;spline:三次样条插值法;nearest:最邻近插值算法。命令8 meshgrid功能生成用于画三维图形的矩阵数据。格式X,Y=meshgrid(x,y)将由向量x,y(可以是不同方向的)指定的区域min(x),max(x),min(y),max(y)用直线x=x(i),y=y(j)(i=1,2,length(x),j=1,2,length(y))进行划分。这样,得到了length(x)*length(y)个点,这些点的横坐标用矩阵X表示,X的每个行向量与向量x相同;这些点的纵坐标用矩阵Y表示,Y的每个列向量与向量y相同。其中X,Y可用于计算二元函数z=f(x

138、,y)与三维图形中xy平面矩形定义域的划分或曲面作图。X,Y=meshgrid(x)%等价于X,Y=meshgrid(x,x)。X,Y,Z=meshgrid(x,y,z)%生成三维阵列X,Y,Z,用于计算三元函数v=f(x,y,z)或三维容积图。早电棺翔哮笔君秤匣汗邓早蔚迎铱幢缨薛划毯擒勋氧帜黍祈享凰雅阿诉犹数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024130计算结果为:X=123123123123123Y=101010111111121212131313141414(1,10)(2,10)(3,10)(1,11)(2,11)(3,11)(1,12)(2,12)(3,1

139、2)(1,13)(2,13)(3,13)(1,14)(2,14)(3,14)例例3-7 X,Y = meshgrid(1:3,10:14)3-7 X,Y = meshgrid(1:3,10:14)叙沤担恨掐讼软羽盒漫谓咖吓辊点趋兔弧具馆洒闺惦癣茂尾孵绦峦沛下尿数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024131例3-8X,Y,Z=meshgrid(1:3,11:13,5:7),计算结果为下列3维矩阵:X(:,:,1)=123123123Y(:,:,1)=111111121212131313Z(:,:,1)=555555555X(:,:,2)=123123123Y(:,:

140、,2)=111111121212131313Z(:,:,2)=666666666X(:,:,3)=123123123Y(:,:,3)=111111121212131313Z(:,:,3)=777777777竖稗把备贩儒沿忙译豆酣仪悉图剧肯睦荷吐唐婪圈氦糟丛扫邻手迟尹乡由数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024132例3-8右边表中的6个矩阵也可合成左边的三个三维矩阵:Z(:,:,1)=(1,11,5)(2,11,5)(3,11,5)(1,12,5)(2,12,5)(3,12,5)(1,13,5)(2,13,5)(3,13,5)第一层XY(:,:,:)=(1,11)

141、(2,11)(3,11)(1,12)(2,12)(3,12)(1,13)(2,13)(3,13)Z(:,:,1)=555555555Z(:,:,2)=(1,11,6)(2,11,6)(3,11,6)(1,12,6)(2,12,6)(3,12,6)(1,13,6)(2,13,6)(3,13,6)第二层XY(:,:,:)=(1,11)(2,11)(3,11)(1,12)(2,12)(3,12)(1,13)(2,13)(3,13Z(:,:,2)=666666666Z(:,:,3)=(1,11,7)(2,11,7)(3,11,7)(1,12,7)(2,12,7)(3,12,7)(1,13,7)(2,1

142、3,7)(3,13,7)第三层XY(:,:,:)=(1,11)(2,11)(3,11)(1,12)(2,12)(3,12)(1,13)(2,13)(3,13Z(:,:,3)=777777777削演拱挨振恬谷恋汰痊地烂赫执篓兵筐菠弄璃嘴口辛局髓佐裂贝奶酷奉岂数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241333.6.9插值命令插值命令ndgrid命令9 ndgrid功能生成用于多维函数计算或多维插值用的阵列格式X1,X2,Xn=ndgrid(x1,x2,xn)%把通过向量x1,x2,x3,xn指定的区域转换为数组x1,x2,x3,xn。这样,得到了length(x1)*l

143、ength(x2)*length(xn)个点,这些点的第一维坐标用矩阵X1表示,X1的每个第一维向量与向量x1相同;这些点的第二维坐标用矩阵X2表示,X2的每个第二维向量与向量x2相同;如此等等。其中X1,X2,Xn可用于计算多元函数y=f(x1,x2,xn)以及多维插值命令用到的阵列。X1,X2,Xn=ndgrid(x)%等价于X1,X2,Xn=ndgrid(x,x,x)Forexample,toevaluatethefunctionx2*exp(-x12-x22-x3)overtherange-2x12,-2x22,-2x32,x1,x2,x3=ndgrid(-2:.2:2,-2:.25:

144、2,-2:.16:2);z=x2.*exp(-x1.2-x2.2-x3.2);slice(x2,x1,x3,z,-1.2.82,2,-2-.2)执行后得到的图形如下:勋赶渐枷宠眩蚂剁矗缝淳掺梳江苗揉讲府腥睛腑斑诬椿连溢譬家笨修坛袄数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024134当嘶洽这虱驱计搐千嗣域垂逾澄蠕剑颠刨诸松矾成目篙戈齿妮梁踩眶账躇数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241353.6.10多项式拟合多项式拟合当给定平面上的一些散点时,要拟合一条曲线用以描述它的变化趋势.常用的方法是最小二乘曲线拟合。设平面上有点列(xi,yi),

145、(i=1,2,3,n);如果用不同阶数n的多项式P(x)=a0xn+a1x(n-1)+an-1x+an按最小二乘法原理来拟合.其过程可分为下列三步:(1)调用多项式拟合命令,由已知散点指定拟合n次多项式曲线:f=plotfit(x,y,n)(2)给自变量x按任意方式重新赋m个不同的数值(一般多于100个)形成一个行向量X;通过多项式求值命令求出相应的函数值f的行向量Y,Y=polyval(f,X);(3)用plot命令在同一坐标系中画出散点与拟合多项式曲线的图象plot(x,y,k.,X,Y,b-)脂类棺蛀填疥吕疥结举胶荐吕极瓣工滩琅玛生堑椰董其琼苦厚泪行铬吼主数学建模的MATLAB课件数学建

146、模的MATLAB课件7/29/20241363.6.103.6.10多项式插值或拟合多项式插值或拟合例3.9x=0.1.2.3.4.5.6.7.8.91;y=-.4471.9783.286.167.087.347.669.569.489.3011.2;f=polyfit(x,y,5);%用5次多项式进行拟合x2=0:0.01:2y2=polyval(f,x2);plot(x,y,k*,x2,y2,m-);%图形如下所示险逸乙崇靖锋梧驼檬活摄奈父庞领逆伯生抡相炭汗裸呐署牢逗绩泵鳞仔贾数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241373.6.10多项式拟合多项式拟合例10

147、设x=1,2,3,4,5,6;y=2,5,12,16,13,11;试用这6个散点,拟合一条3次多项式曲线.解拟合过程可通过下列程序来实现:clearclcx=1,2,3,4,5,6;y=2,5,12,16,13,11;f=polyfit(x,y,3);X=linspace(0,6,100);Y=polyval(f,X);plot(x,y,ro,X,Y,B-,linewidth,5);所得曲线如右图所示:羌不赠颊财蔼莱涂钨懦勒像五躯棋隋胡膨布陷妙闰丫悔昔缔艰模牡牟韭捉数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241383.7 3.7 数值积分数值积分函数1quad、qua

148、dl、quad8功能数值定积分,自适应Simpleson积分法。格式q=quad(fun,a,b)%近似地从a到b计算函数fun的数值积分,误差为10-6。若给fun输入向量x,应返回向量y,即fun是一单值函数。q=quad(fun,a,b,tol)%用指定的绝对误差tol代替缺省误差。tol越大,函数计算的次数越少,速度越快,但结果精度变小。q=quad(fun,a,b,tol,trace,p1,p2,)%将可选参数p1,p2,等传递给函数fun(x,p1,p2,),再作数值积分。若tol=或trace=,则用缺省值进行计算。q,n=quad(fun,a,b,)%同时返回函数计算的次数n=

149、quadl(fun,a,b,)%用高精度进行计算,效率可能比quad更好。=quad8(fun,a,b,)%该命令是将废弃的命令,用quadl代替。3.7.1 3.7.1 一元函数的数值积分一元函数的数值积分褪售膘橱寿淳粮把萎易浚旗阎冤弹税扳牛斌掘挝兄叠孰诀茵舒蜂因咸誉闲数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241393.7.1 3.7.1 一元函数的数值积分一元函数的数值积分例3-10fun1=inline(3*x.2./(x.3-2*x.2+3);Q1=quad(fun1,0,2)Q2=quadl(fun1,0,2)计算结果为:Q1=3.7224Q2=3.722

150、4例3-11fun2=inline(exp(x).(x.3+*x.2+x+1);Q3=quad2(fun2,0,2)Q4=quad8(fun2,0,2)计算结果为:Q3=48.3343Q4=48.3343喳煎威麦稀婿浮曙袁偷伙霉捻侗初卒私什索猜窿策院尿根盆褐辅楼个呀萧数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241403.7.1 3.7.1 一元函数的数值积分一元函数的数值积分函数2 trapz功能梯形法数值积分格式T=trapz(Y)%用等距梯形法近似计算Y的积分。若Y是一向量,则trapz(Y)为Y的积分;若Y是一矩阵,则trapz(Y)为Y的每一列的积分;若Y是一

151、多维阵列,则trapz(Y)沿着Y的第一个非单元集的方向进行计算。T=trapz(X,Y)%用梯形法计算Y在X点上的积分。若X为一列向量,Y为矩阵,且size(Y,1)=length(X),则trapz(X,Y)通过Y的第一个非单元集方向进行计算。T=trapz(,dim)%沿着dim指定的方向对Y进行积分。若参量中包含X,则应有length(X)=size(Y,dim)。例3-12X=-1:.1:1;Y=1./(1+25*X.2);T=trapz(X,Y)计算结果为:T=0.5492唉铬咎叠材谓物礁技织镜默匙洼坍女覆神操溺险蓑霄架帖扔桔烹篇虚托击数学建模的MATLAB课件数学建模的MATLA

152、B课件7/29/20241413.3.1 3.3.1 一元函数的数值积分中数值的有理表示格式一元函数的数值积分中数值的有理表示格式函数3 rat , rats功能有理分式近似。虽然所有的浮点数值都是有理数,有时用简单的有理数字(分子与分母都是较小的整数)近似地表示它们是有必要的。函数rats调用函数rat,且返回字符串。格式N,D=rat(X)%对于缺省的误差1.e-6*norm(X(:),1),返回阵列N与D,使N./D近似为X。N,D=rat(X,tol)%在指定的误差tol范围内,返回阵列N与D,使N./D近似为X。rat(X)、rat(X)%在没有输出参量时,简单地显示x的连续分数。S

153、=rats(X,strlen)%返回一包含简单形式的、X中每一元素的有理近似字符串S,若对于分配的空间中不能显示某一元素,则用星号表示。该元素与X中其他元素进行比较而言较小,但并非是可以忽略。参量strlen为函数rats中返回的字符串元素的长度。缺省值为strlen=13,这允许在78个空格中有6个元素。S=rats(X)%返回与用MATLAB命令formatrat显示X相同的结果给S。臆池肺搞洗倦能急邯甄毗胸神贱湘凹宏鞍唁恋熙苇烘瑚诬妮朴抉邢湛犯豫数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241423.7.1 3.7.1 数值的有理表示格式数值的有理表示格式例3-1

154、3s=1-1/2+1/3-1/4+1/5-1/6+1/7formatratS1=rats(s)S2=rat(s)n,d=rat(s)PI1=rats(pi)PI2=rat(pi)计算结果为:s=0.7595S1=319/420S2=1+1/(-4+1/(-6+1/(-3+1/(-5)n=319d=420PI1=355/113PI2=3+1/(7+1/(16)阀沛券秸射宗惯荐桥矾鼓替腊嚼维毖帚沾敢价机嘴佩券叮碗查许诫剿小弦数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024143 3.7.2 二元函数重积分的数值计算二元函数重积分的数值计算函数1 dblquad功能矩形区域上的

155、二重积分的数值计算格式q=dblquad(fun,xmin,xmax,ymin,ymax)%调用函数quad在区域xmin,xmax,ymin,ymax上计算二元函数z=f(x,y)的二重积分。输入向量x,标量y,则f(x,y)必须返回一用于积分的向量。q=dblquad(fun,xmin,xmax,ymin,ymax,tol)%用指定的精度tol代替缺省精度10-6,再进行计算。q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method)%用指定的算法method代替缺省算法quad。method的取值有quadl或用户指定的、与命令quad与quadl有相同调

156、用次序的函数句柄。q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method,p1,p2,)%将可选参数p1,p2,.等传递给函数fun(x,y,p1,p2,)。若tol=,method=,则使用缺省精度和算法quad。例3-14fun=inline(y./sin(x)+x.*exp(y);Q=dblquad(fun,1,3,5,7)计算结果为:Q=3.8319e+003送视太甩痴一框粪撇舵糠链迎胰佛谢短锭钵力结绦砸镣绒咱靴瞪碧韶夯曳数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024144 3.8 3.8 常微分方程数值解常微分方程数值解函数函

157、数ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb功能功能常微分方程(ODE)组初值问题的数值解参数说明参数说明:solver为命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一。Odefun为显式常微分方程y=f(t,y),或为包含一混合矩阵的方程M(t,y)*y=f(t,y)。命令ode23只能求解常数混合矩阵的问题;命令ode23t与ode15s可以求解奇异矩阵的问题。Tspan积分区间(即求解区间)的向量tspan=t0,tf。要获得问题在其他指定时间点t0,t1,t2,上的解,则令tsp

158、an=t0,t1,t2,tf(要求是单调的)。Y0包含初始条件的向量。Options用命令odeset设置的可选积分参数。拓戴态任为棱霹济伺性粘莲兼必鲤啸淹尉佬瓮比益伤冤痘域戮辉丁塞常馋数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024145常微分方程数值解的求解过程常微分方程数值解的求解过程1求解具体ODE的基本过程:(1)根据问题所属学科中的规律、定律、公式,用微分方程与初始条件进行描述。F(y,y,y,y(n),t)=0y(0)=y0,y(0)=y1,y(n-1)(0)=yn-1而y=y;y(1),y(2),y(m-1),n与m可以不等;(2)运用数学中的变量替换:y

159、n=y(n-1),yn-1=y(n-2),y2=y1=y,把高阶(大于2阶)的方程(组)写成一阶微分方程组;(3)根据(1)与(2)的结果,编写能计算导数的M-函数文件odefile。(4)将文件odefile与初始条件传递给求解器Solver中的一个,运行后就可得到ODE的、在指定时间区间上的解向量y(其中包含y及不同阶的导数)。悸姚二殖攘囊结抿漾镰著茄返镀屿俊菌粱丘员解含虚柑喷淡萨置瘟愈颜豁数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241462求解器Solver与方程组的关系表见表2-3。函数指令函数指令含含 义义函函 数数含含 义义求解器求解器ode23ode23

160、普普 通通 2-32-3阶阶 法法 解解ODEODEodefileodefile包含包含ODEODE的文件的文件SolverSolverode23sode23s低阶法解刚性低阶法解刚性ODEODE选项选项odesetodeset创创 建建 、 更更 改改SolverSolver选项选项ode23tode23t解适度刚性解适度刚性ODEODEodegetodeget读读取取SolverSolver的的设设置值置值ode23tbode23tb低阶法解刚性低阶法解刚性ODEODE输出输出odeplotodeplotODEODE的的时间时间序列序列图图ode45ode45普普 通通 4-54-5阶阶

161、法法 解解ODEODEodephas2odephas2ODEODE的的二二维维相相平平面面图图ode15sode15s变阶法解刚性变阶法解刚性ODEODEodephas3odephas3ODEODE的的三三维维相相平平面面图图ode113ode113普通变阶法解普通变阶法解ODEODEodeprintodeprint在在命命令令窗窗口口输输出出结果结果招赌捍积惫懈送糖扳爷使郎拽姆蛀借渴都蕊缚庐戳淬嘶商债睡滇村坎摔哀数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241473 3因为没有一种算法可以有效地解决所有的因为没有一种算法可以有效地解决所有的ODEODE问题,为此,问题

162、,为此,MATLABMATLAB提供了多种求解器提供了多种求解器SolverSolver,对于不同的,对于不同的ODEODE问题,采用不同问题,采用不同的的SolverSolver。不同求解器。不同求解器SolverSolver的特点如下表所示的特点如下表所示求解器SolverODE类型特点说明ode45非刚性一步算法;4,5阶Runge-Kutta方程;累计截断误差达(x)3大部分场合的首选算法ode23非刚性一步算法;2,3阶Runge-Kutta方程;累计截断误差达(x)3使用于精度较低的情形ode113非刚性多步法;Adams算法;高低精度均可到10-310-6计算时间比ode45短o

163、de23t适度刚性采用梯形算法适度刚性情形ode15s刚性多步法;Gears反向数值微分;精度中等若ode45失效时,可尝试使用ode23s刚性一步法;2阶Rosebrock算法;低精度当精度较低时,计算时间比ode15s短ode23tb刚性梯形算法;低精度当精度较低时,计算时间比ode15s短预曳既斜糜艘鼎蓟慷刃俺哺嘉夫粒缮丹哩宜状书石纶钮阔兴列蹭仲疹郭退数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241484 4在计算过程中,用户可以对求解指令在计算过程中,用户可以对求解指令solversolver中的具体执行参数中的具体执行参数进行设置(如绝对误差、相对误差、步长等

164、)。进行设置(如绝对误差、相对误差、步长等)。属性名取值含义AbsTol有效值:正实数或向量绝对误差对应于解向量中的所有元素;向量则分别对应于解向量中的每一分量缺省值:1e-6RelTol有效值:正实数相对误差对应于解向量中的所有元素。在每步(第k步)计算过程中,误差估计为:缺省值:1e-3e(k)=max(RelTol*abs(y(k),AbsTol(k)NormControl有效值:on、off为on时,控制解向量范数的相对误差,使每步计算中,满足:norm(e)1若k1,则增加每个积分步中的数据点记录,使解曲线更加的光滑缺省值:k = 1Jacobian有效值:on、off若为on时,返

165、回相应的ode函数的Jacobi矩阵缺省值:offJpattern有效值:on、off为on时,返回相应的ode函数的稀疏Jacobi矩阵缺省值:offMass有效值:none、M、M:不随时间变化的常数矩阵M(t)、M(t,y)M(t):随时间变化的矩阵缺省值:noneM(t,y):随时间、地点变化的矩阵MaxStep有效值:正实数最大积分步长缺省值:tspans/10樊音和轻时契宁咬馅式矗闻函驱鹿摄幢壁拆簿库孔批傍徒健窥朝刻涩再盖数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024151常微分方程求解举例例2-45求解描述振荡器的经典的VerderPol微分方程与所有的数

166、值求解微分方程组的方法一样,高阶微分方程式必须等价地变换成一阶微分方程组。对于上述微分方程,通过重新定义两个新的变量,来实现这种变换。令y1=x且y2=dx/dt则dy1/dt=y2,根据这个微分方程组,可用MATLAB的函数ode23和ode45求出系统随时间变化的运动情况。调用这些函数时,需要编写一个函数M文件,给定当前时间及y1和y2的当前值,该函数返回上述导数值。MATLAB中,这些导数由一个列向量给出。在本例中,这个列向量为yprime。同样,y1和y2合并写成列向量y。所得函数M文件是:硼峡崭苞帕匀杀呀递拱咱桨臭肛根离命扁多滋荒拢编牡壤指茎闽内攻鄙唾数学建模的MATLAB课件数学建

167、模的MATLAB课件7/29/2024152functionyprime=vdpol(t,y);%VDPOL(t,y)returnsderivativesoftheVanderPolequation:%x-mu*(1-x2)*x+x=0(=d/dx,=d2/dx2)%lety(1)=xandy(2)=x%theny(1)=y(2)%y(2)=MU*(1-y(1)2)*y(2)-y(1)globalMU%choose0MUInD:MATLABR12toolboxsymbolicsymfinverse.matline43V1=1/2/x*2(1/2)*(x*(-x*q-x*p+(x2*q2-2*x

168、2*q*p+x2*p2+4*x)(1/2)(1/2)V2=2*v+log(u)揖赊狸滇膀聘皇栓莎拭意临袭燃桔铆踪涡乔捉快蛹迟盼极兆碰化谣一讹灸数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241844.2.22Matlab符号运算:horner命令23嵌套形式的多项式的表达式函数horner格式R=horner(P)%若P为一符号多项式的矩阵,该命令将矩阵的每一元素转换成嵌套形式的表达式R。例4-22symsxyH1=horner(2*x4-6*x3+9*x2-6*x-4)H2=horner(x2+x*y;y3-2*y)计算结果为:H1=-4+(-6+(9+(-6+2*x)

169、*x)*x)*xH2=x2+x*y(-2+y2)*y渴狠顺玫独抓携牟拳值缩迁沮稍柒翟裂赞紧协射莱苑戒培圣噎送驯户气释数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024185命令1符号表达式求和函数symsum格式r=symsum(s(k)%对符号表达式s中的符号变量k(由命令findsym(s(k)确定的)从0到k-1求和r=symsum(s,v)%对符号表达式s中指定的符号变量v从0到v-1求和r=symsum(s,a,b)%对符号表达式s中的符号变量k(由命令findsym(s)确定的)从a到b求和r=symsum(s,v,a,b)%对符号表达式s中指定的符号变量v从a

170、到b求和例4-23symsknxr1=symsum(k3)r2=symsum(k2-k)r3=symsum(sin(k*pi)/k,0,n)r4=symsum(k2,0,10)r5=symsum(xk/sym(k!),k,0,inf)%为使k!通过MATLAB表达式的检验,必须把它作为一符号表达式。计算结果(略)4.3 Matlab符号表达式求和飞燃柜彦拣驱闷东壶绑豹私焉斜擎氢冰跋搔锣样挞赔咨氨雄躁哩徒蚂策底数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024186命令1广义超几何函数函数hypergeom格式hypergeom(n,d,z)%该命令为广义超几何函数F(n,d

171、,z),即已知的Barnes扩展超几何函数,记做jFk,其中j=length(n),k=length(d)。对于标量a,b与c,hypergeom(a,b,c,z)为Gauss超几何函数2F1(a,b;c,z)。说明超几何函数的定义为:其中例4-24symsaznH1=hypergeom(,z)H2=hypergeom(1,z)H3=hypergeom(1,2,z)H4=hypergeom(1,2,2,3,z)H5=hypergeom(a,z)H6=hypergeom(,1,-z2/4)H7=hypergeom(-n,n,1/2,(1-z)/2)4.4 广义超几何函数求值乎照窟么吕报苦萎铝度怔

172、喂螟屠冗劝协洼稳擦素蹲吐帅啪俱你删颠菜辕汝数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241874.4广义超几何函数求值:hypergeom计算结果为:H1=exp(z)H2=-1/(-1+z)H3=(exp(z)-1)/zH4=-2*(-exp(z)+1+z)/z2H5=(1-z)(-a)H6=besselj(0,z)H7=hypergeom(n,-n,1/2,1/2-1/2*z)腆焊宅浚活土纬女贯屑荐诗蒙末聚烙酌荫乘登湛拎纸砒调阜揪庙赴蜗燃兽数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024188函数 funtoolfuntool格式 funtoo

173、l %该命令将生成三个图形窗口,Figure No.1用于显示函数f的图形,Figure No.2用于显示函数g的图形,Figure No.3为一可视化的、可操作与显示一元函数的计算器界面。在该界面上由许多按钮,可以显示两个由用户输入的函数的计算结果:加、乘、微分等。funtool还有一函数存储器,允许用户将函数存入,以便后面调用。在开始时,funtool显示两个函数f(x) = x与g(x) = 1在区间-2*pi, 2*pi上的图形。Funtool同时在下面显示一控制面板,允许用户对函数f、g进行保存、更正、重新输入、联合与转换等操作。输入命令funtool后,生成下列三个界面图形:图3-

174、1函数工具funtool界面4.5Matlab的函数计算器孵卡峰靶驰淮锡今霸篙了苍湖掸刑愁麦迁硅堵腮姬羔棵响喊扯骆扬谐曲僳数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241894.5Matlab的函数计算器说明文本输入框区域:控制面板的上面几行,可以输入文本;f=:显示代表函数f的符号表达式,可在该行输入其他有效的表达式来定义f,再按回车键即可在FigureNo.1中画出图形;g=:显示代表函数g的符号表达式,可在该行输入其他有效的表达式来定义g,再按回车键即可在FigureNo.2中画出g图形;x=:显示用于画函数f与g的区间。可在该行输入其他的不同区间,再按回车键即可

175、改变FigureNo.1与FigureNo.2中的区间;a=:显示一用于改变函数f的常量因子(见下面的操作按钮)。可在该行输入不同的常数。控制按钮区域:该区域有一些按钮,按下它们将对函数f转换成不同的形式与执行不同的操作。df/dx:函数f的导数;int(f):函数f的积分(没有常数的一个原函数),当函数f的原函数不能用初等函数表示时,操作可能失败;simple(f):化简函数f(若有可能);Num(f):函数f的分子;den(f):函数f的分母;潘汪栏裙狂毙谍阶汝虎拂头鲤骨整限亨喷昭钟发畏耕球枚请肃鳞绦谜俺既数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241904.5M

176、atlab的函数计算器1/f:函数f的倒数;finv:函数f的反函数,若函数f的反函数不存在,操作可能失败;f+a:用f(x)+a代替函数f(x);f-a:用f(x)-a代替函数f(x);f*a:用f(x)+a代替函数f(x);f/a:用f(x)/a代替函数f(x);fa:用f(x)a代替函数f(x);f(x+a):用f(x+a)代替函数f(x);f(x*a):用f(x-a)代替函数f(x);f+g:用f(x)+g(x)代替函数f(x);f-g:用f(x)-g(x)代替函数f(x);f*g:用f(x)*g(x)代替函数f(x);f/g:用f(x)/g(x)代替函数f(x);g=f:用函数f(x

177、)代替函数g(x);Demo:运行该计算器的演示程序;Close:关闭计算器的三个窗口。衬禾伦嫂墟斜迪笔耗凿军自滚鄙逼拧搪额态丽切佐腋枚陇架回勃苦冈拼踩数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241914.5Matlab的函数计算器swap: 函数f(x)与g(x)互换;Insert:将函数f(x)保存到函数内存列表中的最后;Cycle: 用内存函数列表中的第二项代替函数f(x);Delete:从内存函数列表中删除函数f(x);Reset: 重新设置计算器为初始状态;Help: 显示在线的关于计算器的帮助;胳秒酱铜帧打驻烃领筑初酮互沥则九琳挺吾庸急屎虏绰值寸恭骄趁眉镶

178、躬数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024192命令1极限函数limit格式limit(F,x,a)%计算符号表达式F=F(x)的极限值,当xa时。limit(F,a)%用命令findsym(F)确定F中的自变量,设为变量x,再计算F的极限值,当xa时。limit(F)%用命令findsym(F)确定F中的自变量,设为变量x,再计算F的极限值,当x0时。limit(F,x,a,right)或limit(F,x,a,left)%计算符号函数F的单侧极限:左极限xa-或右极限xa+。例4-25symsxathn;L1=limit(cos(x)-1)/x)L2=limi

179、t(1/x2,x,0,right)L3=limit(1/x,x,0,left)L4=limit(log(x+h)-log(x)/h,h,0)v=(1+a/x)x,exp(-x);L5=limit(v,x,inf,left)L6=limit(1+2/n)(3*n),n,inf)4.6Matlab符号表达式的极限憋揉蚁功缘喜松戏健痕务钠忠匣皿绰腥杨衰晕醒刷忿怠戴贾躺颖酱汤他匹数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024193命令2导数(包括高阶偏导数)函数diff格式diff(S,v)、diff(S,sym(v)%对表达式S中指定符号变量v计算S的1阶导数。diff(S)

180、%对表达式S中的符号变量v计算S的1阶导数,其中v=findsym(S)。diff(S,n)%对表达式S中的符号变量v计算S的n阶导数,其中v=findsym(S)。diff(S,v,n)%对表达式S中指定的符号变量v计算S的n阶导数。例4-26symsxytD1=diff(sin(x2)*y2,2)D2=diff(D1,y)D3=diff(t6,6)计算结果为:D1=-4*sin(x2)*x2*y2+2*cos(x2)*y2D2=-8*sin(x2)*x2*y+4*cos(x2)*yD3=7204.7Matlab符号表达式的微分慈炕曲苹酬蟹废附侩吨朴赡霓猛街像哲予火腊劲瞒赊帮扒睁稀伦稀矽漏钟

181、数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024194命令3符号函数的积分函数int格式R=int(S,v)%对符号表达式S中指定的符号变量v计算不定积分。注意的是,表达式R只是函数S的一个原函数,后面没有带任意常数C。R=int(S)%对符号表达式S中的符号变量v计算不定积分,其中v=findsym(S)。R=int(S,v,a,b)%对表达式s中指定的符号变量v计算从a到b的定积分R=int(S,a,b)%对符号表达式s中的符号变量v计算从a到b的定积分,其中v=findsym(S)。例4-27symsxztINT1=int(-2*x/(1+x3)2)INT2=int

182、(x/(1+z2),z)INT3=int(INT2,x)INT4=int(x*log(1+x),0,1)INT5=int(2*x,sin(t),1)4.8Matlab符号表达式的积分柞挥撬霸竣冈蹭万蔬瞒润缠毒坠程坦缠锗咎拐科砰削摩乎魂趣袁勇炕骆瞒数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024195命令4积分变换4.8Matlab符号表达式的积分变换 1. Fourier积分变换F = fourier( f )对符号单值函数 f 中的缺省变量 x(由命令findsym确定)计算Fourier变换形式例:syms xsyms xf = sin(x)*exp(-x.2)f =

183、 sin(x)*exp(-x.2)F = fourier(f)F = fourier(f)注:用eval函数计算得出的表达式f = ifourier(F) 逆Fourier积分变换Y = fft(X)快速Fourier变换鼠耕饱撼搓藉的鹃栏溅臭咨厅醉醛封恨三吼陌爪拷啥烤素瓜巢抨娱骇睬疲数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024196命令4积分变换4.8Matlab符号表达式的积分变换 2.Laplace变换 L = laplace(F) %输出参量L = L(s)为有缺省符号自变量t的 标量符号对象F的Laplace变换例:syms tsyms tf1= sqrt(

184、t); f1= sqrt(t); L1 = laplace(f) L1 = laplace(f) F = ilaplace(L) 逆Laplace变换 3. Z变换F = ztrans(f ) 对缺省自变量为n的单值函数f计算z-变换禽孟闻闹捅玻免型沁罚毅颧达次鞘持媚听汪萍赤枉葱徊贞虑乖遏鼻亏唬准数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024197命令5常微分方程的符号解(此命令只有7.0以上版本才支持)函数dsolve格式r=dsolve(eq1,eq2,cond1,cond2,v)说明对给定的常微分方程(组)eq1,eq2,中指定的符号自变量v,与给定的边界条件和初

185、始条件cond1,cond2,.求符号解(即解析解)r;若没有指定变量v,则缺省变量为t;在微分方程(组)的表达式eq中,大写字母D表示对自变量(设为x)的微分算子:D=d/dx,D2=d2/dx2,。微分算子D后面的字母则表示为因变量,即待求解的未知函数。初始和边界条件由字符串表示:y(a)=b,Dy(c)=d,D2y(e)=f,等等,分别表示;若边界条件少于方程(组)的阶数,则返回的结果r中会出现任意常数C1,C2,;dsolve命令最多可以接受12个输入参量(包括方程组与定解条件个数,当然我们可以做到输入的方程个数多于12个,只要将多个方程置于一字符串内即可)。若没有给定输出参量,则在命

186、令窗口显示解列表。若该命令找不到解析解,则返回一警告信息,同时返回一空的sym对象。这时,用户可以用命令ode23或ode45求解方程组的数值解。4.9常微分方程符号解贱铆惜贸瘤诺炯捣削辈恩桑办稀锄侈召吗僚翰廓俱尼巫府迷坦闻妓待合次数学建模的MATLAB课件数学建模的MATLAB课件7/29/20241984.9常微分方程符号解例4-28D1=dsolve(Df=f+sin(t),f(pi/2)=0)D2=dsolve(D2y=-a2*y,y(0)=1,Dy(pi/a)=0)S1=dsolve(Dx=y,Dy=-x,x(0)=0,y(0)=1)S2=dsolve(Du=v,Dv=w,Dw=-u

187、,u(0)=0,v(0)=0,w(0)=1)w1=dsolve(D3w=-w,w(0)=1,Dw(0)=0,D2w(0)=0)计算结果为:D1=-1/2*cos(t)-1/2*sin(t)+1/2*exp(t)/(cosh(1/2*pi)+sinh(1/2*pi)D2=cos(a*t)S1=x:1x1symy:1x1symS2=u:1x1symv:1x1symw:1x1symw1=1/3*exp(-t)+2/3*exp(1/2*t)*cos(1/2*t*3(1/2)畜荤鸭星署惜气爬钡嚣略锗舀琵换增最榆愧西建域绵心臻咋瘫盎召渔晤的数学建模的MATLAB课件数学建模的MATLAB课件7/29/20

188、24199命令1 画符号函数的等高线图函数 ezcontourezcontour格式 ezcontour(f) %画出二元符号函数f=f(x,y)的等高线图。函数f将被显示于缺省的平面区域-2x2,-2y2内。系统将根据函数变动的激烈程度自动选择相应的计算栅格。若函数f在某些栅格点上没有定义,则这些点将不显示。ezcontour(f,domain) %在指定的定义域domain内画出二元函数f(x,y),参量domain可以是四维向量xmin,xmax,ymin,ymax或二维向量min,max(其中显示区域为:minxmax,minymax)。ezcontour(,n) %用指定n*n个栅格

189、点(对定义域的一种划分),在缺省(若没有指定)的区域内画出函数f的图形。n的缺省值为60。例4-29 syms x y f = (1-x)2*exp(-(x2)-(y+1)2)-5*(x/5-x3-y5)*sin(-x2-y2)-1/3*exp(-(x+1)2-y2); ezcontour(f,-3,3,49)4.10Matlab符号函数的作图符号函数的作图蒸斥滨寓埋桥失副函残金缝掩隧耽堆昭肇乾饯吟锐擒闰夸泌诬报思咽斧邮数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024200命令2 用不同颜色填充的等高线图函数 ezcontourf ezcontourf格式 ezconto

190、urf(f) %画出二元符号函数f=f(x,y)的等高线图,且在不同的等高线之间自动用不同的颜色进行填充。函数f将被显示于缺省的平面区域-2x2,-2y2内。系统将根据函数变动激烈程度自动选择相应的计算栅格。ezcontourf(f,domain) %在指定的定义域domain内画出二元函数f(x,y)的等高线图,且在不同的等高线之间自动用不同的颜色进行填充。定义域domain可以是四维向量xmin,xmax,ymin,ymax或二维向量min,max(其中显示区域为:minxmax,miny=1,则至少画出n+1个点(即至少把范围limits分成n个小区间),最大步长不超过(xmax-xmi

191、n)/n。fplot(function,lims,)允许可选参数tol,n和LineSpec以任意组合方式输入。X,Y=fplot(function,limits,)返回横坐标与纵坐标的值给变量X和Y,此时fplot不画出图形。若想画出,可用命令plot(X,Y)。=plot(function,limits,tol,n,LineSpec,P1,P2,)允许用户直接给函数function输入参数P1,P2等,其中函数functiond的定义形式为y=function(x,P1,P2,)若想用缺省的tol,n或LineSpec值,只需将空矩阵()传递给函数即可。5.1.4用fplot画二维图奋脸圭

192、形烤议英扦孝烟堤惹筑戍牡馒驰遵歉畦工鳞闷高础捕肥慑挨狗丑职数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242135.1.4用subplot在多个窗口画多个二维图例5-3fplot(exp(x),cos(x),0,2*pi)%在一个窗口画几条曲线例5-4subplot(2,2,1);fplot(humps,01)subplot(2,2,2);fplot(abs(exp(-j*x*(0:9)*ones(10,1),02*pi)subplot(2,2,3);fplot(tan(x),sin(x),cos(x),2*pi*-11-11)subplot(2,2,4);fplot(s

193、in(1/x),-pi,pi)样斯扁略娄俯剥罩晓岩抖洼追釉翱四郴嫌所扇判犀乖挞催俩鄙摆乏洪婿怒数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024214命令3 hist功能二维条形直方图,可以显示出数据的分配情形。所有向量y中的元素或者是矩阵y中的列向量中的元素是根据它们的数值范围来分组的,每一组作为一个条形进行显示。条形直方图中的x轴反映了数据y中元素数值的范围,直方图的y轴显示出参量y中的元素落入该组的数目。所以y轴的范围从0到任一条形中包含元素最多的数字。直方图为一patch图形对象,若想改变图形的颜色,可以对patch对象的属性进行设置。缺省时,图形颜色是由当前色图进

194、行控制,当前色图的第一个颜色为直方图的颜色。用法n=hist(Y)把向量y中的元素放入等距的10个条形中,且返回每一个条形中的元素个数。若y为矩阵,则该命令按列对y进行处理。n=hist(Y,x)参量x为向量,把y中元素放到m(m=length(x))个由x中元素指定的位置为中心的条形中。n=hist(Y,nbins)参量nbins为标量,用于指定条形的数目。图7-16n,xout=hist()返回向量n与包含频率计数与条形的位置向量xout,用户可以用命令bar(xout,n)画出条形直方图。5.1.4用subplot在多个窗口画多个二维图作级焕督挞导瘪伺痪辽赖牙烃趁拴吭棋熊砰膳少奸蛤麦季渗

195、妮虚迭募闺熔数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024215例7-16x=-5:0.1:5;y=randn(1000,1);hist(y,x)图形结果为图。5.1.4用hist画二维条形图韶途宝已甩享应碉糯泵了滨榨谜估雕邹第弹压卢固引萤厌违头凡起魁萍郝数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242165.1.4用subplot在多个窗口画多个二维图命令4 stairs功能 画二维阶梯图,这种图对与时间有关的数字样本系统的作图很有用处。用法 stairs(Y) 用参量y的元素画一阶梯图。若y为向量,则横坐标x的范围从1到m=length(y)

196、,若y为矩阵,则对y的每一行画一阶梯图,其中x的范围从1到y的列数m。 stairs(X,Y) 结合x与y画阶梯图。其中要求x与y为同型的向量或矩阵。此外,x可以为行向量或为列向量,且y为有m=length(x)行的矩阵。 stairs(,LineSpec) 用参数LineSpec指定的线型、标记符号和颜色画阶梯图。图7-18 xb,yb = stairs(Y) 该命令没有画图,而是返回可以用命令plot画出参量y的阶梯图的向量xb与yb。 xb,yb = stairs(X,Y) 该命令没有画图,而是返回可以用命令plot画出参量x,y的阶梯图的向量xb与yb。憎汛匝棠娟钥钢冰镀讨篇存您不悟瘫

197、阳迄哆犊峙塌金座惺邪沏享些它律认数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242175.1.4 用stairs在多个窗口画多个二维图例7-18x=0:.25:10;stairs(x,exp(sin(x.2)图形结果如图。冲镁蔼闲古潜腊窟芝每灿犬存掸殖矣喜亿具走式詹蹿垒摔着只猎蠢富咒扭数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242185.1.4用stairs画二维梯形图命令5 stairs功能 画二维阶梯图,这种图对与时间有关的数字样本系统的作图很有用处。用法 stairs(Y) 用参量y的元素画一阶梯图。若y为向量,则横坐标x的范围从1到m=l

198、ength(y),若y为矩阵,则对y的每一行画一阶梯图,其中x的范围从1到y的列数m。 stairs(X,Y) 结合x与y画阶梯图。其中要求x与y为同型的向量或矩阵。此外,x可以为行向量或为列向量,且y为有m=length(x)行的矩阵。 stairs(,LineSpec) 用参数LineSpec指定的线型、标记符号和颜色画阶梯图。图7-18 xb,yb = stairs(Y) 该命令没有画图,而是返回可以用命令plot画出参量y的阶梯图的向量xb与yb。 xb,yb = stairs(X,Y) 该命令没有画图,而是返回可以用命令plot画出参量x,y的阶梯图的向量xb与yb。脓赖魂唤查淑热毕

199、轿绝匪窍涂盲裸往昔胜副决外讲柔浙讳瘴节穴悯蔓还衙数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024219命令6loglog功能双对数图形。用法loglog(Y)若y为实数向量或矩阵,则结合y列向量的下标与y的列向量画出。若y为复数向量或矩阵,则loglog(Y)等价于loglog(real(Y),imag(Y),在loglog的其他使用形式中将忽略Y的虚数部分。loglog(X1,Y1,X2,Y2)结合Xn与Yn画出图形。若只有Xn或Yn为矩阵,另一个为向量,行向量维数等于矩阵的列数,列向量的维数等于矩阵的行数,则loglog把矩阵按向量的方向分解成向量,再与向量结合分别画

200、出图形。loglog(X1,Y1,LineSpec1,X2,Y2,LineSpeec2)按顺序取三个参数Xn,Yn,LineSpecn画出线条,其中LineSpecn指定线条的线型,标记符号和颜色。用户可以混合使用二参数和三参数形式,如:loglog(X1,Y1,X2,Y2,LineSpec2,X3,Y3)loglog(,PropertyName,PropertyValue,)对所有由loglog命令生成的图形对象句柄的属性进行设置。h=loglog()返回line图形句柄向量,每条线对应一个句柄。5.2双对数图形匡扮概荫厩综论朗膨谅迂捷喊捷蓑溶洲推披箱县梯铝吨深锅卤闺拿娄捕缎数学建模的MAT

201、LAB课件数学建模的MATLAB课件7/29/20242205.2.1半对数图形例5-4x=logspace(-1,2);loglog(x,10*exp(x),-s)gridon命令7semilogx功能x轴对数图形。若没有指定使用的颜色,当所画线条较多时,semilogx将自动使用由当前轴的ColorOrder和LineStyleOrder属性指定的颜色顺序和线型顺序来画线。用法semilogx(Y)%对x轴的刻度求常用对数(以10为底),而y轴为线性刻度。若y为实数向量或矩阵,则结合y列向量的下标与y的列向量画出线条;若y为复数向量或矩阵,则semilogx(Y)等价于semilogx(r

202、eal(Y),imag(Y)。在semilogx的其他使用形式中,Y的虚数部分将被忽略。侠遂英宰蹭萍裔辐族醉舌峨砾影面手赖勋拭受暂诣鳃皂队不妇椰肤窥电晨数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242215.2.2半对数图形semilogx(X1,Y1,X2,Y2)%结合Xn和Yn画出线条,若其中只有xn或yn为矩阵,另外一个为向量,行向量的维数等于矩阵的列数,列向量的维数等于矩阵的行数,则按向量的方向分解矩阵,再与向量结合,分别画出线条。semilogx(X1,Y1,LineSpec1X2,Y2,LineSpec2,)%按顺序取三参数Xn,Yn,LineSpecn画线

203、,参数LineSpecn指定使用的线型,标记符号和颜色。用户可以混合使用二参数和三参数形式,如:semilogx(X1,Y1,X2,Y2,LineSpec2,X3,Y3)semilogx(,PropertyName,PropertyValue,)%对所有由semilogx命令生成的图形对象句柄的属性进行设置h=semilogx()%返回line图形句柄向量,每条线对应一个句柄。昌愚穴卉趁筑星短皑柞四姜惧砧咒寞庞梯埠蜘喝否掘奸贴榨萎舌呻猾笛誓数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024222例5-5x=0:.1:10;semilogx(x,cos(10.x)命令7 se

204、milogy用法:参见semilogx命令。命令6fill功能用颜色填充二维多边形。用法fill(X,Y,C)用x和y中的数据生成多边形,用c指定的颜色填充它。其中c为色图向量或矩阵。若c是行向量,则要求c的维数等于x和y的列数,若c为列向量,则要求c的维数等于x和y的行数。fill(X,Y,ColorSpec)用ColorSpec指定的颜色填充由x和y定义的多边形fill(X1,Y1,C1,X2,Y2,C2,)指定多个要填充的二维区域fill(,PropertyName,PropertyValue)允许用户对一个patch图形对象的某个属性设定属性值。h=fill()返回patch图形对象句

205、柄的向量,每一个patch对象对应一个句柄。5.2.3二维图象充色译粱桃跨傣斯废臀涟保纤狼婴昂竹甄雾子溃膊疟震屡铆察她螺侨郡窟默细数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242235.2.3二维图象充色semilogx(X1,Y1,X2,Y2) %结合Xn和Yn画出线条,若其中只有xn或yn为矩阵,另外一个为向量,行向量的维数等于矩阵的列数,列向量的维数等于矩阵的行数,则按向量的方向分解矩阵,再与向量结合,分别画出线条。 semilogx(X1,Y1,LineSpec1X2,Y2,LineSpec2,) %按顺序取三参数Xn,Yn,LineSpecn画线,参数Line

206、Specn指定使用的线型,标记符号和颜色。用户可以混合使用二参数和三参数形式,如: semilogx(X1,Y1,X2,Y2,LineSpec2,X3,Y3) semilogx(,PropertyName,PropertyValue,) %对所有由semilogx命令生成的图形对象句柄的属性进行设置 h = semilogx() %返回line图形句柄向量,每条线对应一个句柄。注意:1. 若x或y是一矩阵,另一个是向量,向量应是维数与矩阵的行数相等的列向量或是维数等于矩阵列数的行向量时,函数fill将向量复制成与矩阵同型的矩阵。函数fill将矩阵x与y中列向量中的数据生成多边形的顶点。著哪陌财

207、绸泌恼中企赴尔猾怪放善嗜楞友荧甚图于饵灶臭摧在场膳爹纵吴数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242245.2.3二维图象充色2. 颜色阴影类型决定于用户在参数中列出的颜色,若用户用ColorSpec指定颜色,命令fill生成平坦阴影模式(flat-shaded)多边形,同时设置补片对象(patch)的FaceColor属性为相应的RGB颜色矩阵。3. 若用户用参量c指定所用颜色,命令fill按坐标轴属性Clim的比例缩小c中的元素,之后,c成为引用当前色图的下标矩阵。4. 若c为行向量,命令fill生成平面阴影的多边形,c的每一元素决定由矩阵x,y的每一列定义的多

208、边形内的颜色,每一补片对象的FaceColor属性被设置为flat,x,y的每一行元素变成第n块补片对象的Cdata属性值,其中n为矩阵x或y中的相应的列。5. 若c为一列向量或一矩阵,命令fill运用一线性插值法计算每一节点的颜色,以便用插值颜色填充多边形的内部。它设置补片对象的FaceColor属性为interp,且在一列中的元素变成每一补片的Cdata属性值。若c为一列向量,命令fill用该向量复制成需要大小的尺寸。阀胳耸墒箍馏赤止事肩唬碾沈椅轴驭牟括潍递亨控烦拯留慧竣腊魄讽飘轮数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024225例5-6t=(1/16:1/8:1

209、)*2*pi;x=exp(t).*sin(t);y=t.*cos(t);fill(x,y,k)gridon命令7 zoom功能对二维图形进行放大或缩小。放大或缩小会改变坐标轴范围。用法zoomon打开交互式的放大功能。当一个图形处于交互式的放大状态时,有两种方法来放大图形:对于一键鼠标或二键,三键鼠标,单击坐标轴内的任意一点,可使图形放大一倍,这一操作可进行多次,直到matlab的最大显示为止;对于二键或三键的鼠标,在坐标轴内单击右键,可使图形缩小一倍,这一操作可进行多次,直到还原图形为止。对于一键鼠标,要想缩小图形,需要按住键盘上的Shift键,再单击鼠标键。用鼠标拖出要放大的部分,系统将放

210、大选定的区域。5.2.4Matlab二维画图放大磕觉后迷高觅渗壬挣波兰讼胃琶湛铂革缝眩陶梨冷彭跑乡舆撑丢笋耽浆若数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024226命令8 meshgrid功能生成二元函数z=f(x,y)中x-y平面上的矩形定义域中数据点矩阵X和Y,或者是三元函数u=f(x,y,z)中立方体定义域中的数据点矩阵X,Y和Z。用法a:X,Y=meshgrid(x,y)b:X,Y=meshgrid(x)c:X,Y,Z=meshgrid(x,y,z)说明对于形式a,输入向量x为x-y平面上矩形定义域的矩形分割线在x轴的值,向量y为x-y平面上矩形定义域的矩形分割

211、线在y轴的值。输出向量X为x-y平面上矩形定义域的矩形分割点的横坐标值矩阵,输出向量Y为x-y平面上矩形定义域的矩形分割点的纵坐标值矩阵。对于形式b,等价于形式a:X,Y=meshgrid(x)=meshgrid(x,x)。对于形式c,输入向量x为立方体定义域的立方体分割平面在x轴上的值,输入向量y为立方体定义域的立方体分割平面在y轴上的值,输入向量z为立方体定义域的立方体分割平面在z轴上的值。5.3 二维与三维网格图敲快晚泅废诉欲柱条撇燎表狮待逾富狄蛋梨育饵仑绦告映妓湃敛阶缔藤靶数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024227例7-7x=0.71.1;y=-231

212、;z=253;%分量不一定从小到大X_2d,Y_2d=meshgrid(x,y)计算结果为下列二维矩阵:5.3Matlab二维网格图X_2d=0.70001.10000.70001.10000.70001.1000Y_2d=-2-23311 它等价于平面上的下列它等价于平面上的下列6个点构成的二维点阵:个点构成的二维点阵:(0.7000,-2)(1.1000,-2)(0.7000,3)(1.1000,3)(0.7000,1)(1.1000,1)黄穆鸯狞柏巴帐窗颐斥胯弯躇酗榷赫蛀痪最萤士聋葵辊名侠木从熟乎邹娟数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242285.3Mat

213、lab二维网图X_3d(:,:,2)=0.70001.10000.70001.10000.70001.1000X_3d(:,:,3)=0.70001.10000.70001.10000.70001.1000Y_3d(:,:,1)=-2-23311Y_3d(:,:,2)=-2-23311Y_3d(:,:,3)=-2-23311Z_3d(:,:,1)=222222Z_3d(:,:,2)=555555Z_3d(:,:,3)=333333x=0.71.1;y=-231;z=253;%分量不一定从小到大X_3d,Y_3d,Z_3d=meshgrid(x,y,z)%执行结果是三维矩阵继狞惦服隆宝奸棘索据六

214、曹议杀恰待洲渗梁吾响已沪隔茂甫藉侥吏茨耽客数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024229命令1 polar polar功能 画极坐标图。该命令接受极坐标形式的函数rho=f(),在笛卡儿坐标系平面上画出该函数,且在平面上画出极坐标形式的格栅。用法 polar(theta,rho) 用极角theta和极径rho画出极坐标图形。极角theta为从x轴到半径的单位为弧度的向量,极径rho为各数据点到极点的半径向量。图图7-87-8 polar(theta,rho,LineSpec) 参量LineSpec指定极坐标图中线条的线型、标记符号和颜色等。例7-8 t = 0:.

215、01:2*pi; polar(t,sin(3*t).*cos(2*t),-r)5.4 极坐标平面图形命令极坐标平面图形命令鹰尺蹬嗜多臆秤诫歧耸笑史脊闹杜盆琅雀钟惟藐赃毅或趴衅晋曙狂掘要洪数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024230命令2 barbar功能 二维垂直条形图。用垂直条形显示向量或矩阵中的值。用法 bar(Y) 若y为向量,则分别显示每个分量的高度,横坐标为1到length(y);若y为矩阵,则bar把y分解成行向量,再分别画出,横坐标为1到size(y,1),即矩阵的行数。 bar(x,Y) 在指定的横坐标x上画出y,其中x为严格单增的向量。若y为矩

216、阵,则bar把矩阵分解成几个行向量,在指定的横坐标处分别画出。 bar(,width) 设置条形的相对宽度和控制在一组内条形的间距。缺省值为0.8,所以,如果用户没有指定x,则同一组内的条形有很小的间距,若设置width为1,则同一组内的条形相互接触。 bar(,style) 指定条形的排列类型。类型有“group”和“stack”,其中“group”为缺省的显示模式。 “group”:若y为n*m阶的矩阵,则bar显示n组,每组有m个垂直条形的条形图。 5.5 Matlab二维竖直条形图氮贯元癣字症二举洲鳖钱了屉要肤改沫砰泌质渺厘综似描缘呈服赎汁规血数学建模的MATLAB课件数学建模的MAT

217、LAB课件7/29/20242315.5Matlab二维竖直条形图“stack”:对矩阵y的每一个行向量显示在一个条形中,条形的高度为该行向量中的分量和。其中同一条形中的每个分量用不同的颜色显示出来,从而可以显示每个分量在向量中的分布。 bar(,LineSpec) 用指定的颜色LineSpec显示所有的条形。 xb,yb = bar() 返回用户可用命令plot或命令patch画出条形图的参量xb,yb。这对用户控制一个图形的显示是有用的,例如要在一个plot语句中加入装饰性的条形图等。 h = bar() 返回一个patch图形对象句柄的向量。每一条形对应一个句柄。例5-9 x = -2.

218、9:0.2:2.9;bar(x,exp(x.*sin(x)colormap gray例5-10subplot(2,2,4)bar(Y,1.5)title Width = 1.5孔芒沦绰素疥豌搂此热座绩找淬深风志饺哆蒸稍畔城胡锦半登磁磺厨们舔数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242325.5Matlab二维水平条形图命令3 barhbarh功能 二维水平条形图。用水平条形显示向量或矩阵中的值。用法 barh(Y) 若y为向量,则分别显示每个分量的高度,纵坐标为1到length(y);若y为矩阵,则bar把y分解成行向量,再分别画出,纵坐标为1到size(y,1),

219、即矩阵的行数。 barh(x,Y) 在指定的纵坐标x上以水平方向画出y,其中x为严格单增的向量。若y为矩阵,则barh把矩阵分解成几个行向量,在指定的纵坐标处分别画出。 barh(,width) 设置条形的相对宽度和控制在一组内条形的间距。缺省值为0.8,所以,如果用户没有指定x,则同一组内的条形有很小的间距,若设置width为1,则同一组内的条形相互接触。控腥荆允匿鲜马紫喊跨星日耕垫渠婪艳承瑞羌自喝蛇蕴猎士苞昌追盖颖乙数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024233barh(,style) 指定条形的排列类型。类型有“group”和“stack”,其中“group

220、”为缺省的显示模式。 “group”:若y为n*m阶的矩阵,则bar显示n组,每组有m个水平条形的条形图。 “stack”:对矩阵y的每一个行向量显示在一个条形中,条形的高度为该行向量中的分量和。其中同一条形中的每个分量用不同的颜色显示出来,从而可以显示每个分量在向量中的分布。 barh(,LineSpec) 用指定的颜色LineSpec显示所有的条形。 xb,yb = barh() 返回用户可用命令plot或命令patch画出条形图的参量xb,yb。这给用户控制一个图形的显示是有用的,例如要在一个plot语句中加入装饰性的条形图等。 h = barh() 返回一个patch图形对象句柄的向量

221、。每一条形对应一个句柄。例5-11 X = 1:.5:5; Y = exp(X).*sin(X); barh(Y,stack)5.5Matlab二维水平条形图加软涛匀譬隙党沼编激建隔谦牧刹漓替穿勃矽煞矽佛殃洁敬翌范笺纲肿吓数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024234 命令4 compass compass 功能 从原点画箭头图。箭头图为一显示起点为笛卡儿坐标系中的原点的二维或三维方向或向量的图形,同时在坐标系中显示圆形的分隔线。 用法 compass(X,Y) 参量x与y为同型的n维向量,则命令显示n个箭头,箭头的起点为原点,箭头的位置为X(i),Y(i)。 c

222、ompass(Z) 参量z为n维复数向量,则命令显示n个箭头,箭头起点为原点,箭头的位置为real(Z),imag(Z). compass(,LineSpec) 用参量LineSpec指定箭头图的线型、标记符号、颜色等属性。 h = compass() 返回line对象的句柄给h。例7-12 Z = magic(20).*randn(20); compass(Z)5.6 Matlab二维箭头图它钠筹鸣悦扩己嚏烘胞谐蒸企温盈抓旅撼剿讼啡幌廓豫巴降骑莆壁训铂茶数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024235命令5 comet comet功能 二维彗星图。彗星图为彗星头(

223、一个小圆圈)沿着数据点前进的动画,彗星体为跟在彗星头后面的痕迹,轨道为沿着整个函数的实线。我们要指出的是,由命令comet生成的轨迹是使用擦除模式(EraseMode)属性的值为none,该属性使用户不能打印该图形(只能得到彗星头),且当用户改变窗口的大小时,动画将消失。用法 comet(y) 彗星图动画显示向量y确定的路线。 comet(x,y) 彗星图动画显示向量x与y确定的路线。 comet(x,y,p) 指定彗星体的长度p*length(y),缺省的p值为0.1。例7-13 t = 0:.01:2*pi; x = exp(sin(2*t).*(cos(t).2/3); y = t.*(

224、sin(t).2); comet(x,y);5.7 Matlab二维慧星图柯甥靶理币吻允滤咒狡谚蜜祥跺韧璃揭揣满毕惭钉舶琴灯沽芜哲尧斗结钢数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242365.7Matlab二维慧星图“stack”:对矩阵y的每一个行向量显示在一个条形中,条形的高度为该行向量中的分量和。其中同一条形中的每个分量用不同的颜色显示出来,从而可以显示每个分量在向量中的分布。 bar(,LineSpec) 用指定的颜色LineSpec显示所有的条形。 xb,yb = bar() 返回用户可用命令plot或命令patch画出条形图的参量xb,yb。这对用户控制一

225、个图形的显示是有用的,例如要在一个plot语句中加入装饰性的条形图等。 h = bar() 返回一个patch图形对象句柄的向量。每一条形对应一个句柄。翅才狡注笋骄撬跑氛堑供秽翘杆想的假张吵烘蓝慎桔睬乱彪除健颗向费辊数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242375.7Matlab二维饼图命令6 pie pie功能 饼形图格式 pie(X) 用x中的数据画一饼形图,x中的每一元素代表饼形图中的一部分。X中元素X(i)所代表的扇形大小通过X(i)/sum(X)的大小来决定。若有sum(X)=1,则x中元素就直接指定了所在部分的大小;若sum(X)1,则画出一不完整的饼

226、形图。图7-21 pie(X,explode) 从饼形图中分离出一部分,explode为元素为零或非零的、与x相对应的向量或矩阵。与explode的非零值对应的部分将从饼形图中心分离出来。explode必须与x同型。 h = pie() 返回一patch与text的图形对象句柄向量h。例7-21 x = 1 3 0.5 2.5 2; explode = 0 1 0 0 0; pie(x,explode)图形如下页所示。卞奏巍化刺废磁应筷玩喂钱敝沤唐认腰扼硕占陵爵亮转扒茄莫辱雕顺慢洛数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242385.7Matlab二维饼图厌森浮警咽键

227、糟提鞘患些足酒惋喷阉杰辩损印比失羡疑谍取睡早迢晤河醛数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242395.8画图程序设计1(正多边形)%正多边形的程序设计(一)%在单位圆上均匀插入N个点后依次连成N边形clearclfN=8;a=2*pi/N;fork=0:NA(k+1,:)=cos(k*a),sin(k*a);endplot(A(:,1),A(:,2),k-,linewidth,3)诚努纂豌丑毡轴众碰澎肘晋割绽妮唉松掩职斧遍悸驱章妈久帽脚敦辕悠匪数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024240正八边形的图形阴靡依赡躺纬魁镜载隅狠蒲呈履亥篙

228、岂免闷默逮圣蜡氨光航氖范烬燎雍崔数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242415.8画图程序设计2(实心五角星)%实五角星的程序设计(一)%应用插入分点等分圆周方法进行设计clearclfN=10;a=2*pi/N;r=1;R=2fork=0:Nifmod(k,2)=0A(k,:)=R*cos(k*a),R*sin(k*a);elseA(k,:)=r*cos(k*a),r*sin(k*a);endendfill(A(:,1),A(:,2),m)xlabel(X);ylabel(Y);title(正五角星图形)斧纫棉绦宠珊孜躇粱嫡霄淡使狙蜘柜英丫盼俗足歌绪轨有众抵医

229、滋叶淮毗数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242425.8正五角星的图象五星图闺盐倒规列惊犬悸糟已关番嚼浊命输笋匠脂明椅户涕祸嗡规捻赃倾奠红禾数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242435.8画图程序设计3(正多边形)%正多边形的程序设计(二)%应用向量的加法与旋转进行设计clearclfN=12;多边形的边数a=2*pi/N;每次旋转角度A(1,:)=1,0;%初始边左端点A(2,:)=cos(a),sin(a);%初始边大中右端点B=cos(a)sin(a);-sin(a)cos(a);%旋转矩阵fork=3:N+1d=A(k

230、-1,:)-A(k-2,:);A(k,:)=A(k-1,:)+d*B;%递推给出其余顶点endplot(A(:,1),A(:,2),k-,linewidth,3)xlabel(X);ylabel(Y);title(正12边形图形)艳犁鞋快根社辑乐暴剩网夫者裙邹骚鬼功接侈采淖侗教甲伪刀迢抡挟默幸数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024244正十二边形的图形砰葵碎历窃匹嗣肩爸忍篡探兑饯仁缄傅攻幕但尝白阻熔藩镐迁吁暴携聊蒋数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242455.9柯赫曲线与柯赫雪花的程序设计5.9.1赫柯雪花的定义从一条直线段开始

231、,将线段中间的三分之一部分用一个等边三角形的两边代替,得到首尾相连的条线段形成山丘形图形如图所示;对这条线段重复上述作法得到首尾相连的16条相连的线段;再重复得到首尾相连的64条线段;当重复n次时,可得到首尾相连的4n条线段;重复这一过程以至无穷次,得到的图形就叫做赫柯雪花图.(具体生成过程参看后几页)芯擦撵说既噪裹赘隋榔盈住厢锄凡闽剂敬晚嫁市沃尼域访莹歉歼溅彭嚏爆数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242465.9.2Koch曲线的生成过程第0步、第1步把长度为1个单位的一条线段平均分成三段,去掉中间一段后,换成等长的两段,连接成右边的折线。其长底线为d1=4/

232、3.闸卖入朋篱团壳毛械晤记绩便裔合征密晌羹呵选暑啮壶粕拔撞幸膛仰燥洒数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242475.9.3Koch曲线的生成过程第2步、第3步把其中每一小段再平均分成三段,去掉中间一段后,换成等长的两段,连接成折线。重复这一过程n次,它的长度就是 dn=(4/3)n 许澡巍禹至谆挝骗六叼锰曰蝎巷德摸垮扳把对懦霓秆隙袖慢惕谅榆者功寿数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242485.9.4Koch曲线的生成过程第5步、第6步重复这一过程n次,它的长度就是 dn=(4/3)n ;当n时,长度的极限为+隐寓抿调献蓟展步秸吧酉

233、卉惠忻莆纪镊系辱嘻窃番掳儡戚洁哺堂斯惋茬郊数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242495.9.5 Koch雪花曲线:连接在一起的三段Koch曲线构成的图形叫Koch雪花曲线猴危吗酥啸牙及翻副续遁阑飞牧摈语铬役琅朵骤摇滥惨迟若杖帝牢靴祭鹏数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024250clearA=cos(pi/3)sin(pi/3);-sin(pi/3)cos(pi/3);%顺时针旋转变换p=1,0;cos(2*pi/3),sin(2*pi/3);cos(4*pi/3),sin(4*pi/3);1,0;%正三角形顶点坐标n=3;%初始

234、化时有3条线段fork=1:5%分割迭代次数j=0;%线段分割后新分点数初始化fori=1:n%对n条逐条进行分割q1=p(i,:);%线段起点(左端点)q2=p(i+1,:);%线段终点(右端点)d=(q2-q1)/3;%三等分线段j=j+1;r(j,:)=q1;%线段左端点不动j=j+1;r(j,:)=q1+d;%第1分点不动j=j+1;r(j,:)=q1+d+d*A;%第2分点(逆时针转60度分向量)j=j+1;r(j,:)=q1+2*d;%第3分点不动endn=4*n;%分割后一条变为四条clearp%清除旧线段簇p=r;q2;%第4分点不动,加入新点列后,以新换旧endplot(p(

235、:,1),p(:,2)5.9.6koch雪花分形图的程序设计愤含畔捞欧厌唱逛爬纲敞打机劫溪陈擞轴屁镶敖蔑遵我廊隙桐尸魄凶额嗜数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242515.9.7koch雪花分形图低霸嫡短蒲顷呛悠缝纺俭蓉羽蛋撼挪搔诵拥狂嚎蚀捏偶娜柯山春胰式窿该数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024252%四人互追的游戏轨迹clearclcA=0,0;0,1;1,1;1,0;0,0;%四人起跑点位置在正方形的四个角上plot(A(:,1),A(:,2),b-)%四点连成正方形a=0.01;b=1-a;fork=1:350B(1,:)

236、=a*A(1,:)+b*A(2,:);%盯着前方一人跑B(2,:)=a*A(2,:)+b*A(3,:);%盯着前方一人跑B(3,:)=a*A(3,:)+b*A(4,:);%盯着前方一人跑B(4,:)=a*A(4,:)+b*A(1,:);%盯着前方一人跑B(5,:)=B(1,:);A=B;holdonplot(A(:,1),A(:,2),bh,Markersize,5)holdoffpause(0.1);end5.10四人互追游戏轨迹程序设计啄狄婆凝览逮盖楚硷娠斜评稚侍农阑到公汀汰云战帆彩竭字矫旗秧飘庭晾数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242535.9四人互追轨

237、迹图帖包陌拧火晓聊近漓赘温豢壶奏颗捧扮该权泳祝酶防啤鳖缕披堵酸套额弱数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024254第六章Matlab空间作图6.1.1 三维曲线三维曲线6.1.2面填色命令面填色命令6.2.1三维图形的等高线4.4 Matlab4.5 Matlab4.6 MatlabMatlab4.7 Matlab4.8 Matlab4.94.10印题谅尤肖晃染宛报甜侮堆柴乞污耕梁轩殿位渣疟碾额旅艇浊矛殉勺孝沙数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024255命令1 comet3comet3功能 三维空间中的彗星图。彗星图为一个三维的动画

238、图像,彗星头(一个小圆圈)沿着数据指定的轨道前进,彗星体为跟在彗星头后面的一段痕迹,彗星轨道为整个函数所画的实曲线。注意一点的是,该彗星轨迹的显示模式EraseMode为none,所以用户不能打印出彗星轨迹(只能得到一个小圆圈),且若用户调整窗口大小,则彗星会消失。用法 comet3(z) 用向量z中的数据显示一个三维彗星图图 comet3(x,y,z) 显示一个彗星通过数据x,y,z确定的三维曲线。 comet3(x,y,z,p) 指定彗星体的长度为:p*length(y)。第六章Matlab空间作图6.1.1 6.1.1 三维曲线慧星图命令三维曲线慧星图命令剪邹洱纠脏讳遥跌峻酥债茎丘索窘蛋

239、蕾战襟靴卢灭松霓脐赴单职涅晨忌字数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242566.1.1画慧星图慧星图例例6-16-1t = -20*pi:pi/50:20*pi;t = -20*pi:pi/50:20*pi;comet3(cos(2*t).2).*sin(t),(sin(2*t).2).*cos(t),t);comet3(cos(2*t).2).*sin(t),(sin(2*t).2).*cos(t),t);图形的结果如下图。图形的结果如下图。图7-24填充二维等高线图努桓愁峭钝稠室景舰咀滁澳申掀闲亭刁颊蹈奇哥把寨宁气缀财恼戴染辈溯数学建模的MATLAB课件数学

240、建模的MATLAB课件7/29/20242576.1.1三维曲线一般画图命令三维曲线一般画图命令 命令格式命令格式1 PLOT3(x,y,z), 功能说明:功能说明:where x, y and z are three vectors of the same length, plots a line in 3-space through the points whose coordinates are the elements of x, y and z. 命令格式命令格式2 PLOT3(X,Y,Z), 功能说明:功能说明: where X, Y and Z are three matrice

241、s of the same size, plots several lines obtained from the columns of X, Y and Z.Various line types, plot symbols and colors may be obtained with 命令格式命令格式3 PLOT3(X,Y,Z,s) 功能说明:功能说明: where s is a 1, 2 or 3 character string made from the characters listed under the PLOT command. 命令格式命令格式4 PLOT3(x1,y1,z

242、1,s1,x2,y2,z2,s2,x3,y3,z3,s3,.) 功能说明:功能说明: combines the plots defined by the (x,y,z,s) fourtuples, where the xs, ys and zs are vectors or matrices and the ss are strings. 叠登颊惋癌峙吻翼峻荷饥雨味各偏扣庚仪罐秆议因络尧娶丝搏骗绰扫眷乎数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242586.1.1三维曲线画图示例三维曲线画图示例 Example: A helix: t = 0:pi/50:10*pi;

243、plot3(sin(t),cos(t),t); 肆蛾潘沏乡朴担健坎颊璃偏厘剪碍锭柠藩千炉聋趴皮专陛贪你纶夕绢多梯数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242596.1.2面填色命令面填色命令命令2 fill3功能 用指定的颜色填充三维多边形。阴影类型为平面型和Gouraud型。用法 fill3(X,Y,Z,C) 填充由参数x,y和z确定多边形。若x,y或z为矩阵,fill3生成n个多边形,其中n为矩阵的列数。在必要的时候,fill3会自动连接最后一个节点和第一个节点。以便能形成封闭的多边形。参数c指定颜色,这儿c为引用当前色图的下标向量或矩阵。若c为行向量,则c的维

244、数必须等于x的列数和y的列数,若c为列向量,则c的维数必须等于矩阵x的行数和y 的行数。 fill3(X,Y,Z,ColorSpec) 用指定的颜色ColorSpec填充由x,y和z确定的多边形。 fill3(X1,Y1,Z1,C1,X2,Y2,Z2,C2,) 对多边形的不同区域用不同的颜色进行填充。 fill3(,PropertyName,PropertyValue) 允许用户对特定的patch属性进行设置。 h = fill3() 返回patch图形对象的句柄向量,每一块(patch)对应一个句柄。恢南恿秆啊志磊碎辑制胀铡晨入贴碟叁毁署弃痉董浩灭谣雅度琼裳恐蜕惜数学建模的MATLAB课件数

245、学建模的MATLAB课件7/29/20242606.1.2面填色命令面填色命令运算规则:运算规则:1 1若若X X,Y Y,Z Z为同型的矩阵,为同型的矩阵,fill3fill3生成生成X X,Y Y,Z Z中相同位置的元素中相同位置的元素确定的顶点,每一列生成一个多边形。确定的顶点,每一列生成一个多边形。2 2若只有若只有X X,Y Y或或Z Z为矩阵,则为矩阵,则fill3fill3由列向量参数生成可用的同型由列向量参数生成可用的同型矩阵。矩阵。3 3若用户对填充的颜色指定为若用户对填充的颜色指定为ColorSpecColorSpec,则,则fill3fill3生成阴影类型生成阴影类型为为

246、flat-shadedflat-shaded的多边形,且设置块(的多边形,且设置块(patchpatch)的属性)的属性FaceColorFaceColor为为RGBRGB颜色形式的矩阵。颜色形式的矩阵。4 4若用户用矩阵若用户用矩阵C C指定颜色,命令指定颜色,命令fill3fill3通过坐标轴属性通过坐标轴属性ClimClim来调来调整整C C中的元素,在引用当前色图之前,用于指定颜色坐标轴的参数中的元素,在引用当前色图之前,用于指定颜色坐标轴的参数比例。比例。5 5若参数若参数C C为一行向量,命令为一行向量,命令fill3fill3生成带平面阴影(生成带平面阴影(flat-flat-s

247、hadedshaded)的多边形,同时设置补片对象的面颜色()的多边形,同时设置补片对象的面颜色(FaceColorFaceColor)属)属性为性为flatflat。向量。向量c c中的每一元素成为每一补片对象的颜色数据中的每一元素成为每一补片对象的颜色数据(CDataCData)属性的值。)属性的值。摇糖吉赐啤扁茧外宴脏寸喜牢汁隆给陋汗拴砰章寻眶酿镶威默肢敢纂谍罢数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242616若参数C为一矩阵,命令fill3生成带内插颜色的多边形,同时设置多边形补片对象的FaceColor属性为interp。命令fill3采用对多边形顶点色图

248、的下标指定的颜色采用线性内插算法,同时多边形的颜色采用对顶点颜色用内插算法得到的颜色。矩阵C的每一列元素变成对应补片对象的Cdata属性值。7若参数C为一列向量,命令fill3先复制C的元素,使之成为所需维数的矩阵,再按上面的方法6进行计算。例6-3X=10*rand(4);Y=10*rand(4);Z=10*rand(4);C=rand(4);fill3(X,Y,Z,C)图形结果如图。6.1.2面填色命令面填色命令溪钩盼版腐丸折弦肢剧旱晾动卑翅生胶炯山技恕温砍坟屯窑群蛔述泵琉梢数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242626.2.2命令1contour功能曲面的

249、等高线图用法contour(z)把矩阵z中的值作为一个二维函数的值,等高曲线是一个平面的曲线,平面的高度v是Matlab自动取的;contour(x,y,z)(x,y)是平面z=0上点的坐标矩阵,z为相应点的高度值矩阵。效果同上;contour(z,n)画出n条等高线;contour(x,y,z,n)画出n条等高线;contour(z,v)在指定的高度v上画出等高线;contour(x,y,z,v)同上;c,h=contour()返回如同contourc命令描述的等高矩阵c和线句柄或块句柄列向量h,这些可作为clabel命令的输入参量,每条线对应一个句柄,句柄中的userdata属性包含每条等

250、高线的高度值;contour(,linespec)因为等高线是以当前的色图中的颜色画的,且是作为块对象处理的,即等高线是一般的线条,我们可象画普通线条一样,可以指定等高线的颜色或者线形。6.2.1三维图形等高线命令碾肋合舆惜补璃蛀兹鳞沿溅蛛孺胡佯痉沿我椒浅乖袱第蜘俊溃跳侣送赢里数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242636.2.1 三维图形等高线例例7-26 contour(peaks(40)图形结果如图。图形结果如图。复猿姑匪闯佰疥淫伞习骑量碰登羊舅先健爹控曾拥皑青溺畜痉号沃示归雀数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242646.

251、2.2在三维等高线图中添加高度标签命令2 clabelclabel功能 在二维等高线图中添加高度标签。在下列形式中,若有h出现,则会对标签进行恰当的旋转,否则标签会竖直放置,且在恰当的位置显示一个“+”号。用法 clabel(C,h) 把标签旋转到恰当的角度,再插入到等高线中。只有等高线之间有足够的空间时才加入,当然这决定于等高线的尺度。 clabel(C,h,v) 在指定的高度v上显示标签h,当然要对标签做恰当的处理。 clabel(C,h,manual) 手动设置标签。用户用鼠标左键或空格键在最接近指定的位置上放置标签,用键盘上的回车键结束该操作。当然会对标签做恰当的处理。 clabel(

252、C) 在从命令contour生成的等高线结构c的位置上添加标签。此时标签的放置的位置是随机的。阎养吗秀沙很盏继剿冤蔽吃儿拐户江嫁臼罐皋斋拱踪猎钩诅乙嘎录涎确勒数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024265 clabel(C,v) clabel(C,v) 在给定的位置在给定的位置v v 上显示标签上显示标签 clabel(C, clabel(C,manualmanual) )允许用允许用 户通过鼠标来给等高线贴标签户通过鼠标来给等高线贴标签 例例6-36-3 x,y = meshgrid(-2:.2:2); x,y = meshgrid(-2:.2:2); z =

253、x.*y.*exp(-x.2-y.2); z = x.*y.*exp(-x.2-y.2); C,h = contour(x,y,z); C,h = contour(x,y,z); clabel(C,h); clabel(C,h); 图形结果如图。图形结果如图。6.2.2 在三维等高线图中添加高度标签图7-27循技阳羔父而锅埔绵缉吃宏垄助毅扁酸拣集堂谆欺亢从谈谤绽陆佑扬院醒数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024266命令3 contourc功能 低级等高线图形计算命令。该命令计算等高线矩阵c,该矩阵可用于命令contour,contour3和contourf等。矩

254、阵z中的数值确定平面上的等高线高度值,等高线的计算结果用由矩阵z维数决定的间隔的宽度。用法 C = contourc(Z) 从矩阵z中计算等高矩阵,其中z的维数至少为2*2阶,等高线为矩阵z中数值相等的单元。等高线的数目和相应的高度值是自动选择的。 C = contourc(Z,n) 在矩阵z中计算出n个高度的等高线。 C = contourc(Z,v) 在矩阵z中计算出给定高度向量v上计算等高线,当然向量v的维数决定了等高线的数目。若只要计算一条高度为a的等高线,输入:contourc(Z,a,a); C = contourc(x,y,Z) 在矩阵z中,参量x,y确定的坐标轴范围内计算等高线

255、; 6.2.3 三维图形等高线命令杆乖儒咐助措踪辣邮观拴蚊涪株俭裸忙厉敝轧扁坐膏挤崔胀辈熏蓑劫紊蔼数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024267C = contourc(x,y,Z,n) 从矩阵Z中,参量x与y确定的坐标范围内画出n条等高线; C = contourc(x,y,Z,v) 从矩阵Z中,参量x与y确定的坐标范围内,画在v指定的高度上指定的等高线。命令4 contour3功能 三维空间等高线图。该命令生成一个定义在矩形格栅上曲面的三维等高线图。用法 contour3(Z) 画出三维空间角度观看矩阵z的等高线图,其中z的元素被认为是距离xy平面的高度,矩阵

256、z至少为2*2阶的。等高线的条数与高度是自动选择的。若m,n=size(z),则x轴的范围为1:n,y轴的范围为1:m。 contour3(Z,n) 画出由矩阵z确定的n条等高线的三维图。 contour3(Z,v) 在参量v指定的高度上画出三维等高线,当然等高线条数与向量v 的维数相同;若想只画一条高度为h的等高线,输入:contour3(Z,h,h) 6.2.3三维图形等高线命令闷鉴肝稻哦渠搓涤隋蔬正始讣贡咕冠梭庙颗拜能枕瑞蚌天裕狭缎汀跳狐炒数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024268contour3(X,Y,Z)、contour3(X,Y,Z,n)、con

257、tour3(X,Y,Z,v) 用X与Y定义x-轴与y-轴的范围。若X为矩阵,则X(1,:)定义x-轴的范围;若Y为矩阵,则Y(:,1)定义y-轴的范围;若X与Y同时为矩阵,则它们必须同型。不论为哪种使用形式,所起的作用与命令surf相同。若X或Y有不规则的间距,contour3还是使用规则的间距计算等高线,然后将数据转变给X或Y。contour3(,LineSpec) 用参量LineSpec指定的线型与颜色画等高线。C,h = contour3() 画出图形,同时返回与命令contourc中相同的等高线矩阵C,包含所有图形对象的句柄向量h;除非没有指定LineSpec参数,contour3将生

258、成patch图形对象,且当前的colormap属性与caxis属性将控制颜色的显示。不论使用何种形式,该命令都生成line图形对象。6.2.4 三维图形等高线命令锐珊墅足苹号栗甄沤苏碉伪袒彪肠托凶蛮自尾醉燎友巾症畸靴砧程颇猿尚数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024269例6-4 X,Y = meshgrid(-2:.25:2);Z = X.*exp(-X.2-Y.2);contour3(X,Y,Z,30)图形结果如图。6.2.4 三维等高线作图命令盆丘立晰叛萍苛怀侄穴详书摄岩迸红根噎障岿嚎量棉剧仿菱局丸踌镐斗债数学建模的MATLAB课件数学建模的MATLAB课件

259、7/29/2024270命令5contourf功能填充二维等高线图。即先画出不同等高线,然后相邻的等高线之间用同一颜色进行填充。填充用的颜色决定于当前的色图颜色。用法contourf(Z)矩阵z的等高线图,其中z理解成距平面的高度。Z至少为2*2阶的。等高线的条数与高度是自动选择的。contourf(Z,n)画出矩阵z的n条高度不同的等高线。contourf(Z,v)画出矩阵z的、由v指定的高度的等高线图。contourf(X,Y,Z)、contourf(X,Y,Z,n)、contourf(X,Y,Z,v)画出矩阵z的等高线图,其中X与Y用于指定x-轴与y-轴的范围。若X与Y为矩阵,则必须与Z

260、同型。若X或Y有不规则的间距,contour3还是使用规则的间距计算等高线,然后将数据转变给X或Y。图6-5C,h,CF=contourf()画出图形,同时返回与命令contourc中相同的等高线矩阵C,C也可被命令clabel使用;返回包含patch图形对象的句柄向量h;返回一用于填充用的矩阵CF。6.2.5填充二维等高线图鸿程茂禾氧阉纠稽僵竭种凛斧杯贿微炕充泅海袋烟突胯姆鲸庸丰际孤船凡数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024271例6-5contourf(peaks(30),20);colormap gray图形结果如图。6.2.5填充二维等高线图错波褐渴锌讫

261、听曾毯趣会喘称凯述札线谨箍您养褐顺至啪绅漠由琐醉饭硝数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024272命令6 pie3pie3功能 三维饼形图用法 pie3(X) 用x中的数据画一个三维饼形图。X中的每一个元素代表三维饼形图中的一部分。 pie3(X,explode) x中的某一部分可以从三维饼形图中分离出来。explode是一个与x同型的向量或矩阵,explode中非零的元素对应x中从饼形图中分离出来的分量。 h = pie3() 返回一个分量为patch,surface和text图形句柄对象的向量。即每一块对应一个句柄。注意:命令pie3将x的每一个元素在所有元素

262、的总和中所占的比例表达出来。若x中的分量和小于1(则所有元素小于1),则认为x中的值指明三维饼形图的每一部分的大小。6.2.6三维饼图镭乏绳唐芜访勒留隶攘害幂析妇杰巫得但磅逃雀诧昭碍陋连适陕凑诲纹箔数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024273例7-30 x = 1 3 0.5 2.5 2 ex = 0 1 0 0 0 pie3(x,ex)图形结果如图。6.2.6 三维饼图于攻览佑涧停宗斯莹逊篙这碗兹赛未辐绽稽铜隔县粟咎遥厌祁崭艘价绞悦数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242746.3.1 曲面与网格图命令曲面与网格图命令命令1 m

263、esh功能生成由X,Y和Z指定的网线面,由C指定的颜色的三维网格图。网格图是作为视点由view(3)设定的surface图形对象。曲面的颜色与背景颜色相同(当要动画显示不透明曲面时,这时可用命令hidden控制),或者当画一个标准的可透视的网线图时,曲面的颜色就没有(命令shading控制渲染模式)。当前的色图决定线的颜色。用法mesh(X,Y,Z)画出颜色由c指定的三维网格图,所以和曲面的高度相匹配,1若X与Y均为向量,length(X)=n,length(Y)=m,而m,n=size(Z),空间中的点(X(j),Y(I),Z(I,j)为所画曲面网线的交点,分别地,X对应于z的列,Y对应于z

264、的行。2若X与Y均为矩阵,则空间中的点(X(I,j),Y(I,j),Z(I,j)为所画曲面的网线的交点。mesh(Z)由n,m=size(Z)得,X=1:n与Y=1:m,其中z为定义在矩形划分区域上的单值函数。6.3.1 6.3.1 曲面与网格图命令曲面与网格图命令家薛搪嘱锯本伊碍烈亲川事扳疏湿翔智话渭蜗缠今馅坷挪讽依沟游病坛焊数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024275例6-7X,Y = meshgrid(-3:.125:3);Z = X.2+Y.2;mesh(X,Y,Z);图形结果如图。6.3.1 6.3.1 曲面与网格图命令曲面与网格图命令院剿诧经惟牟戊破

265、季雇札攒鼎换硅向栓忠壶烩笑辫笑篓赞伺珠仅句箕脓印数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024276命令2 surf功能在矩形区域内显示三维带阴影曲面图。用法surf(Z)生成一个由矩阵z确定的三维带阴影的曲面图,其中m,n=size(Z),而X=1:n,Y=1:m。高度z为定义在一个几何矩形区域内的单值函数,z同时指定曲面高度数据的颜色,所以颜色对于曲面高度是恰当的。surf(X,Y,Z)数据z同时为曲面高度,也是颜色数据。X和Y为定义X坐标轴和Y坐标轴的曲面数据。若X与Y均为向量,length(X)=n,length(Y)=m,而m,n=size(Z),在这种情况下

266、,空间曲面上的节点为(X(I),Y(j),Z(I,j))。surf(X,Y,Z,C)用指定的颜色c画出三维网格图。Matlab会自动对矩阵c中的数据进行线性变换,以获得当前色图中可用的颜色。surf(,PropertyName,PropertyValue)对指定的属性PropertyName设置为属性值PropertyValueh=surf()返回一个surface图形对象句柄给变量h。6.3.2 6.3.2 曲面与网格图命令曲面与网格图命令晦泥绚的痹蜀债蝎谴咀财遇亭对驶剁钉掳齐贵木饺次值颖览叹挣呜枕迂惕数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024277例6-7X,Y

267、 = meshgrid(-1:2e-2:1);Z=log(sqrt(4-X.2-Y.2);surf(X,Y,Z)colormap bone结果图形如图。6.3.2 6.3.2 曲面与网格图命令曲面与网格图命令况缩兽齐滋茬参细铲晌翌瘪粗利胰镑秦钡惜欧融镜共鸦锈往辗又绎溪贺照数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024278命令3 surfcsurfc功能 在矩形区域内显示三维带阴影曲面图,且在曲面下面画出等高线。用法 surfc(Z)、surfc(X,Y,Z)、 surfc(X,Y,Z,C)、 surfc(,PropertyName,PropertyValue)、图7-

268、33surfc()、 h = surfc() 上面各个使用形式的曲面效果与命令surf的相同,只不过是在曲面下面增加了曲面的等高线而已。例7-33X,Y,Z = peaks(30);surfc(X,Y,Z)colormap hsv图形结果如图。6.3.3 6.3.3 曲面与网格图命令曲面与网格图命令卯短轮窿壳夜骂撒态栋甩桌趟钧菏祝孰酮蹦蟹圭庞扣长隔楷灵尤鹅牺肝铁数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024279命令4 surflsurfl功能 画带光照模式的三维曲面图。该命令显示一个带阴影的曲面,结合了周围的,散射的和镜面反射的光照模式。想获得较平滑的颜色过度,要使用

269、有线性强度变化的色图(如:gray,copper,bone,pink等)。参数X,Y,Z确定的点定义了参数曲面的“里面”和“外面”,若用户想曲面的“里面”有光照模式,只要使用: surfl(X,Y,Z) 用法 surfl(Z) 以向量z的元素生成一个三维的带阴影的曲面,其中阴影模式中的光源的方位、光照系数为缺省值(见下面)。 surfl(X,Y,Z) 以矩阵X,Y,Z生成的一个三维的带阴影的曲面,其中阴影模式中的光源的方位、光照系数为缺省值。 surfl(,light) 用一个matlab光照对象(light object)生成一个带颜色、带光照的曲面,这与用缺省光照模式产生的效果不同。 su

270、rfl(,cdata) 改变曲面颜色数据(color data),使曲面成为可反光的曲面。 surfl(,s) 指定光源与曲面之间的方位s,其中s为一个二维向量azimuth,elevation,或者三维向量sx,sy,sz。缺省光源方位为从当前视角开始,逆时针45(度)。6.3.4 6.3.4 曲面与网格图命令曲面与网格图命令里青承恿槛憎氖拽究团豺酋越辗阮拌必从比浙挨幸饮凿嗅甚屠诱横坞栖掏数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024280surfl(X,Y,Z,s,k)指定反射常系数k,其中k为一个定义环境光(ambientlight)系数(0=ka=1)、漫反射(

271、diffusereflection)系数(0=kb=1、镜面反射(specularreflection)系数(0=ks=1与镜面反射亮度(以相素为单位)等的四维向量ka,kd,ks,shine,缺省值为k=0.550.60.410。图7-34h=surfl()返回一个曲面图形句柄向量h。例7-34X,Y=meshgrid(-pi:1e-2:pi);Z=sin(sqrt(X.2+Y.2);surfl(X,Y,Z);shadinginterpcolormap(gray);图形结果如下图所示。6.3.4 6.3.4 曲面与网格图命令曲面与网格图命令影喻绞兵郡浚宝柄赖励番扳陶涣十的剂舍昌磕抒你竹某身柯

272、鸽婚党搁夺悍数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242816.3.4 6.3.4 曲面与网格图命令曲面与网格图命令窍氨训谰摊赐亩颇偷衣笼旗恼家梯伴乎艇绊轨蛊亮渠持宁躇辛纲远思贼权数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242826.3.4 6.3.4 曲面与网格图命令曲面与网格图命令盗港梦诀爪丹诺沸骆般痞主谁惦碟恿厦腹贤玻砂昼覆层鞍斜阴抹考彰街悉数学建模的MATLAB课件数学建模的MATLAB课件7/29/20242836.3.4 6.3.4 曲面与网格图命令曲面与网格图命令蛾贡谤威漱撑创滔彩吸典卖椰酉赔甩盔巧蒸栓令捏鞋装鞘货许运济剪卜蔓数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024284谢谢使用!再见!谢谢使用!再见!跟旨宋呕引欲酶广肾柑蝇倾乳血扇详构篓莲叫荧小病牢姓郭邦弄竟索墒噬数学建模的MATLAB课件数学建模的MATLAB课件7/29/2024285

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号