数学实验是以数学建模和数值计算_第1页
数学实验是以数学建模和数值计算_第2页
数学实验是以数学建模和数值计算_第3页
数学实验是以数学建模和数值计算_第4页
数学实验是以数学建模和数值计算_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、前 言0第一篇 数学软件简介1一、MATLAB软件1一、概 述1二、MATLAB基本的学习方法1三、Matlab基础知识介绍21、MATLAB 6工作环境简介22、语言规则43、数值与变量54、数据的输入和输出65、矩阵元素的操作76、M文件的编辑与建立87、运算符及特殊字符98、数学函数及其运算109、使用绘图命令1310、数据处理14四、Matlab的编程141、条件语句152、循环语句163、switchcaseend分支结构18第二章Mathematica20一、概述20二、Mathematica基本学习方法20三、Mathematica基础知识介绍221、Mathematica 4.

2、0工作环境简介222、语言规则253.1数的表示和计算253.2、表达式263.3、求算术运算的近似值:通常我们用格式Nexpr263.4 变量274、常用函数274.1函数的有关常识274.2 常见数学函数294.3常用表达式转换函数295、解方程316、极限327、 微分327.1 求导数的基本格式为Dexpr,变量327.2 对于含两个以上未知数的表达式,可求偏导数和混合偏导数。例如327.3 求表达式的全微分用格式Dtexpr,如337.4 求高阶导数用Dexpr,x,n337.5 对隐函数求导,用Dexpr,自变量,NonConstants->因变量338、积分348.1 求不

3、定积分的格式为:Integrateexpr,x348.2 求定积分的格式为 Integrateexpr,x,a,b348.3 计算含有两个变量的表达式的二重积分的格式为:Integrateexpr,x,x1,x2,y,y1,y2359、级数359.1 幂级数的Taylor展开。359.2 数列求和,求积3610、 表和矩阵3710.1 表的构造3710.2 矩阵,向量3810.3 利用矩阵解线性方程组4011、数据拟合4112、图形处理4212.1 二维作图4212.2三维作图44四、Mathematica的编程46第二篇 实 验49第一章 软件操作实验49实验1 矩阵的基本运算49一、实验目

4、的49二、预备知识49三、内容与要求49四、思考与练习50五、与你一起做实验50实验2 矩阵初等变换及向量的线性相关性53一、实验目的53二、预备知识53三、实验要求53四、思考与练习54五、与你一起做实验54实验3 解方程和方程组55一、实验目的55二、预备知识55三、实验内容与要求55四、与你一起作实验56实验4 微分运算57一、实验目的57二、预备知识57三、实验内容与要求57四、思考与练习58五、与你一起作实验58第二章 应用实验59实验1 最佳售房问题59一、问题59二、实验目的59三、预备知识59四、实验内容与要求59五、思考问题60实验2、工资问题61一、问题61二、实验目的61

5、三、预备知识61四、实验内容与要求61五、思考问题62实验3 放射性废料的处理问题63一、问题63二、实验目的63三、预备知识63四、实验内容与要求63五、思考问题63实验4 路程估计问题65一、问题65二、实验目的65三、预备知识65四、实验内容与要求65五、思考问题66第三篇、命令总汇67第一章、MATLAB 6 常用函数简介671、通用命令671.1通用信息查询671.2工作空间管理671.3管理指令和函数681.4搜索路径管理681.5指令窗控制681.6操作系统指令682、运算符和特殊运算符692.1算术运算符692.2关系运算符692.3逻辑操作692.4特殊运算符703、编程语言

6、结构703.1控制语句703.2计算运行713.3脚本文件、函数及变量713.4参数处理713.5信息显示713.6交互式输入724、基本矩阵函数和操作724.1基本矩阵724.2矩阵基本信息724.3矩阵操作734.4特殊变量和常量734.5特殊矩阵745、基本数学函数745.1三角函数745.2指数函数755.3复数函数755.4圆整和求余函数756、坐标变换、向量运算等特殊函数767、矩阵函数和数值线性代数767.1矩阵分析767.2线性方程767.3特性值与奇异值777.4矩阵函数777.5因式分解778、数据分析和傅立叶变换788.1基本运算788.2有限差分788.3相关788.4

7、滤波卷积799、插补与多项式函数799.1数据插补799.2样条插补799.3多项式8010、数值泛函函数和ODE解算器8010.1优化和寻根8010.2优化选项处理8010.3数值积分8010.4绘图8110.5差微分函数解算器8111、二维图形函数8111.1基本平面图形8111.2轴控制8211.3图形注释8212、三维图形函数8212.1基本三维图形8212.2色彩控制8312.3色图8313、文件输入/输出8414、示例函数8415、符号工具包8415.1微积分8415.2线性代数8515.3化简8515.4方程求解8515.5变量精度8615.6积分变换8615.7基本操作8615

8、.8图形应用8615.9 Maple接口8716、图象处理工具箱8716.1图象显示8716.2图象文件数据输入/输出8816.3图象的几何操作8816.4象值与统计8816.5图像分析8816.6图像增强8916.7线性滤波8916.8二维线性滤波器的设计8916.9图像变换9016.10邻域及块处理9016.11二值图像操作9016.12图像的区域处理9116.13色图操作9116.14色彩空间变换9113.15图像类型判断及其转换9116.16图像处理演示函数92第二章、Mathematica命令汇总921、数字计算921.1数字求值921.2方程求解93求常微分方程eqns的数字解,其

9、未知函数yi为自变量x的函数,且自变量的取值范围区间为xmin,xmax931.3求和与求积931.4积分941.5优化941.6数据处理941.7数的表达952、代数计算952.1基本代数95Expandexpr952.2公式操作962.3方程求解962.4微积分963、数学函数973.1基本算术运算973.2数学常数973.3数值函数973.4随机数983.5基本初等函数983.6阶乘983.7数论984、表和矩阵994.1表的构建994.2元素抽取994.3表的特征1004.4表的操作1004.5结构操作1014.6向量与矩阵操作1015、图形1015.1 2D图形1015.2 3D图形

10、1025.3等高线图1025.4图的组合1025.5基本选项1025.6 3D选项1035.7 等高线选项1035.8图元1046、编程1046.1变量赋值1046.2检查1056.3逻辑运算1056.4流程控制1056.5功能编程1066.6输入与输出1066.7统计107前 言马克思曾经说过:“任何一门科学只有充分利用了数学才能够达到完美的境界”。随着科学技术的发展,数学发挥着越来越重要的作用。为了适应科学技术的发展,数学教学面临着改革,特别是信息时代的到来,要求数学教学的实践性增强。数学实验这门课程就是基于上述原因而产生的。“数学实验”是以数学建模和数值计算为核心、借助计算机,培养学生应

11、用所学知识解决实际问题内容的课程。根据省教委的要求,我院从1999年上学期试点以来,目前已在全院推广。通过近几年的教学实践兵结合我院实际情况,为适应培养新世纪的创新人才的时代要求,编写了这本讲义。本讲义包括以下几部分:一、学软件基本操作介绍(Matlab和Mathematica);二、据不同专业的要求和数学基础课程的教学进度而编写的8个实验;1、 软件操作实验:实验1、2是MATLAB的内容;实验3、4是Mathematica的内容;2、基础实验:原则上每个实验都可用MATLAB和Mathematica来作,但实验1、2用MATLAB,实验3、4用Mathematica将更方便。三、Matla

12、b和Mathematica的基本命令。根据这几年的实验教学经验以及学生的要求,软件操作实验部分给予了参考答案,而基础实验没有编写参考答案。为了能让同学进一步学习,我们将其常用的命令编写在最后,以便帮助全面掌握数学软件。“数学实验”是一门新课程,其内容和方法在国内外均不是很成熟,讲义内容的取舍不易掌握,虽经努力,但限于水平,仍存在不少问题,恳请各位读者提出宝贵的意见。有什么意见,请发E-mail到an编著者2003年2月9日第一篇 数学软件简介一、MATLAB软件一、概 述Matlab是由美国的Mathworks公司推出的一个科技应用软件。它的名字是由矩阵(MATrix)和实验室 ( LABor

13、atory)的头三个字母组成。顾名思义,它相当于把矩阵放在实验里做实验,Matlab是以矩阵为单位进行处理的,也就是它把一切都当作矩阵。即使是一个数也是。比如:Matlab是一种高性能的、用于工程计算的编程软件,它把科学计算、结果的可视化和编程都集中在一个使用非常方便的环境中。一般来说,Matlab系统包括下面五个主要部分:(1)编程语言:他是以矩阵和数组为基本单位的编程语言;(2)工作环境:包括了一系列的应用工具,提供编程和调试程序的环境;(3)图形处理:包括绘制二维、三维图形和创建图形用户接口;(4)数学库函数:包含了大量的数学函数,也包括复杂的功能;(5)应用程序接口:提供接口程序,可使

14、MATLAB与其它语言程序进行交互。Matlab典型的应用包括以下两方面:(1)数值计算和符号计算; (2)建模和动态仿真二、MATLAB基本的学习方法作为一门高级语言,MATLAB和其它高级语言一样,具有完善的帮助系统。如果同学们能够对MATLAB的帮助系统很熟悉的话,自由运用它进行编程肯定没有多大问题,另外本讲义附录了有关命令,使得大家能够更方便的使用帮助,更好的进行学习。1、help指令在指令窗口中运行help能够获得范围不同的帮助信息,例如:(1)运行 help help,将得到如何使用help的提示;(2)直接运行help,会列出可以用于help显示的所有主体(topic);(3)h

15、elp topic可获得每个topic的帮助;比如,想对二维图形(graph2d)编程有所了解,可运行:>> help graph2d(4)对每个topic中的任何指令的用法,同样可以用help来查看;如对于二维图形(graph2d)指令中的plot,用help查看则显示如下:>> help plot2、lookfor指令当用户要查找具有某种功能但不知道其准确名字的指令时,help就无能为力了。而lookfor可以根据用户提供的完整或不完整的关键词,去搜索出一组与之有关的指令,用户可从列表中挑选出满足需要的指令。这被称为“模糊查找。”不过这个命令所查找的范围只限于一个。

16、如利用 lookfor 指令查找矩阵求逆函数>>lookfor inverse3、doc、helpwin和helpdesk指令在指令窗口中运行doc、helpwin和helpdesk指令中的任何一个,都会打开一个名为help的帮助窗口。大家自己在计算机上试一试。4、demo指令Demo指令用于查看集成于MATLAB环境内的各种演示内容。在MATLAB的指令窗口键入Demo指令可以得到演示界面,从而可以方便的了解MATLAB的基本功能。5、帮助菜单启动matlab应用程序后,单击help主菜单,则会弹出一系列子菜单,可以根据菜单直接进行操作三、Matlab基础知识介绍1、MATLAB

17、 6工作环境简介MATLAB 6的启动l 双击Windows桌面上的快捷图标;l 从开始菜单的程序子菜单中的MATLAB 6l 在MATLAB目录中搜索到可执行程序的matlab.exe,双击该程序使之启动启动后的对话框如图1,它大致包括以下几个部分:图1l 菜单项;l 工具栏;l Command Window窗口(指令窗口);l Launch Pad窗口(分类帮助文件夹);l Workspace窗口(工作台);l Command History窗口(指令的历史记录);l Current Directory窗口(当前目录选项)。MATLAB 6菜单环境介绍a) 文件菜单File文件菜单出了具有

18、Windows一般应用程序所具有的新建、打开、关闭、退出、打印选项外,还包括如下选项:l Import Data:有关数据的导入;l Save Workspace As:保存工作平台;l Preferences:部分MATLAB工作环境的交互性设置l Set Path:设置当前工作路径。b) 编辑菜单Edit编辑菜单出了具有Windows一般应用程序所具有的撤消操作、重复操作、拷贝、粘贴、全选选项外,还包括如下选项l Clear Command Window:清除指令窗口;l Clear Command History:清除指令的历史记录;l Clear Workspace:清除工作台。c)视

19、图菜单(View)视图菜单为了改动MATLAB工作环境外观,它可以决定显不显示界面上摆布的一些窗口。大家可以对其中的每个菜单操作一下,看分别会出现什么效果。d) 网页菜单Web网页菜单用于直接与MATLAB的生产商Mathworks工作的Internet联网,寻求有关的帮助或获得新的产品信息等。e) 窗口菜单Window窗口菜单用于显示当前打开的M文件的文件名以及将它们一次全部关闭。f) 帮助菜单Help帮助菜单能为用户及时提供所需要的帮助信息。常用窗口简介l 指令窗口(Command Window):在提示符>>后直接输入命令可以执行相关的命令l 指令历史记录窗口(Command

20、 History):该窗口记录着用户每一次开启MATLAB的时间,以及每一次开启MATLAB后在MATLAB指令窗口(Command Window)中运行过的所有指令行。这些指令行记录可以被复制到指令窗口中再运行,从而减少了重新输入的麻烦。选中该窗口中的任一指令记录,然后单击鼠标右键,则可根据菜单进行相应操作。l 工作台窗口(Workspace):该程序窗口中列出了程序计算过程中产生的变量及其对应的数据的尺寸、字节和类型。选中一个变量,单击鼠标右键则可根据菜单进行相应的操作。 2、语言规则MATLAB要区分大小写,它的命令全是小写的;一行可以输入几个命令,用“;”或“,”隔开。如用“;”则该函

21、数的执行结果不显示(图形函数除外);如用“,”则该函数的运行结果要显示。3、数值与变量数值MATLAB环境下的数值表示一般采用十进制,可以带小数点和正负号。下面的数值都是合法的:6+6-6.660.0066-60006.6e-6100e60-0.060e-012在采用IEEE浮点算法的计算机上,数值的相对精度为eps,MATLAB规定一个eps的值为2.2204e-016,即大约保持16位有效数字。有时用户希望在指令窗口中得到的是自己想要的数据形式,比如说是有理数(Rational)形式,则可以通过在File主菜单中打开Preferences 子菜单,并在对话框中做相应的选择操作即可。变量MA

22、TLAB是基于矩阵运算的,因此其基本数据结构只有一个:矩阵。一个数也是矩阵。只不过它是11的矩阵。MATLAB中的变量可用来存放数据,也可用来存放向量或矩阵,并进行各种运算。MALAB将所有变量均保存成double的形式,所以不需要经过变量声明。MATLAB也会自动进行内存的使用和回收。变量命名的规则为:l 变量名、函数名是对大小写很敏感的,两个字符串表示的变量,字母都相同,大小写不同,也视为不同的变量;l 第一个字母必须是英文字母;l 字符间不可留空格;l 最多只能有31个字符(只能用英文字母、数字和下连字符)一行中“%”后的内容仅作注释用,对MATLAB的计算不产生任何影响。who、who

23、s、clear和永久变量who:用于检查现存于空间(Workspace)的变量whos:用于检查现存于空间(Workspace)的变量的详细资料clear:用于删除工作空间的变量;永久变量:是变量的一种特殊情况,它在工作空间中看不到,但是使用者可直接调用,如:pi等符号变量在MATLAB中,如果没有定义则不能对符号进行引用,在对变量进行引用时需要先用syms命令创建符号变量和表达式。如:>>syms xsyms不仅可以声明一个变量,还可以指定这个变量的数学特性,比如:l 声明变量为实数类型,如:>>syms x y reall 声明变量为整数类型,如:syms x y

24、positivel 创建表达式,如:>>f=syms(cos(x)+sin(x)4、数据的输入和输出(1)直接输入:由于MATLAB都是将视为矩阵进行操作,如果是单个元素则象计算器一样直接输入元素,如果有多个元素,比如矩阵有多行多列的则用:变量=表达式;或,格式,其中行中元素间用“空格”或“,”分开;行与行之间用“;”或“回车”分开。如果一行写不完,要用“”作为继行标记(在英文状态下输入三个句号);如果只有表达式,则会出现一个变量“ans”,“ans”为“answer”(答案)的缩写,引出运算结果。值得注意的是整个矩阵分别用左右方括号“”和“”表示开始和结束。比如:>>

25、a=1 2 3;4 5 6;7 8 9或a=1 2 3 4 5 6 7 8 9(2)利用语句或函数产生“初值:步长:终值” 产生一个行向量(行矩阵)。当步长为1时可以省略。如:>>1:5;1:2:6,1:2:5特殊命令:l linspace(x,x2,n): 产生一个行向量,指定初值(x)、终值(x2)、向量资料(n)。如:linspace(1,4,3);l ones(n)或ones(n,m)或ones(n,m): 产生全一的矩阵。如:ones(5)。l zeros(n)或zeros(n,m)或zeros(n,m): 产生全零的矩阵。如:zeros(5)。l eye (n)或eye

26、(n,m)或eye(n,m): 产生单位(或对角线上为1)的矩阵。如:eye (5);eye (2,4)。l rand:产生平均分布的随机矩阵。如:rand(3)。l randn:产生正态分布的随机矩阵l diag(4,2) 对角矩阵l vander(2,4) 范德蒙矩阵(3)用input指令输入单个参数例如:小侯吃桃问题:有一天小侯摘下了若干个桃子,当即吃掉了一半,还觉得不过隐,又多吃了2个。第二天接着吃下剩下的一半,又多吃了2个。以后每天都是吃掉尚存的一半零两个。到第十天早上,小侯准备吃桃子时,看到只剩下n个桃子了。问小侯第一天共摘下多少个桃子?分析:根据建立数学模型的步骤可以看到我们应该

27、怎样分析这个问题,首先是根据实际情况建立关系式,即我们说的数学模型,在建立模型时注意建立模型的各种常用方法,这里用递推法建立,然后运用计算机来求解:比如这个问题的答案与n有关,设第k天的桃子数为Pk,变化规律(我们在建立模型时实际上就是找到各个量之间的变化规律),首先令P0=n,利用递推式Pk-1=2(Pk+1)(k=10,9,8,2)构造循环算法。编写Matlab程序如下:n=input(input n:);P(10)=n;for k=10:-1:2 P(k-1)=2*(P(k)+2);endP(1)(4)小型矩阵或用数据文件输入将资料以矩阵的形式输入程序的开始部分,比如上次输入了矩阵a,并

28、保存到文件:LAB1.mat中,下次运行时用load LAB1(回车)就可以了,如果是用.M文件输入,则只要在命令窗口中输入文件名就可以了。5、矩阵元素的操作(1)矩阵元素的提取:现令a=1 2 3;4 5 6;7 8 9;b=4 5 8 1;l 按矩阵元素的序号进行提取:MATLAB是以列为单位计算的,它按列给矩阵的元素编号,可用变量名加上下标表示。如取b的第二个元素:b(2);取b的一二两个元素:b(1 2)。l 按照矩阵的行列提取:a(i , j): a矩阵的第i行与第j列的交叉元素的值,i与j可以是向量,它们分别表示对矩阵的行和列进行操作。如:a(2 , 3):表示取第2行第3列的元素

29、6;a(2 , 1 3):表示取a第2行的第1列和第3列的元素4和6;a(2 3 , 1 3) :表示取a第2、3行的第1、3列的四个元素;a(1,1 : 3):表示取a的第1行的第1列到第3列的所有元素;a(1, :):表示取a的第1行的所有元素。这里a(1, :) 中的“:”是把列号省略的意思,就是所有的列,a(:,1) 中的“:”是把行号省略的意思。(2)小矩阵构造大矩阵l c=a; 3 2 1表示在矩阵a中加一行构成矩阵c(列数必须相等)。l 现令 d=1 2 3, d2=d,d表示构造d2=、l 这里还有一种矩阵的构造方法:x(m1: m2,n1: n2)=a。注:a 是n行m列的矩

30、阵,生成的x是m2行n2列的矩阵,其中,m2-m1+1=n; n2-n1+1=m,对应元素为a的值,其余的全为零。如:x(1:4,2:4)=a;y(2:5,2:4)=a;(3):可以用它来删除矩阵的行列,或整个矩阵。如:y(1, :)=,x= 6、M文件的编辑与建立MATLAB 6可以有两种常用的工作方式:一种是直接交互的指令行操作方式;另一种是M文件的编程方式(程序的写法见后)。前一种MATLAB给当做一种高级的数学演算和计算可视化器来使用。后一种相当于集成环境。M文件有两种形式:命令文件和函数文件。这两种文件的扩展名相同,都是“.m”。当用户要运行的指令较多时,可以直接从键盘上逐行输入指令

31、,但这样做显得很麻烦;而命令文件则可以较好的解决这一问题。用户可以将一组相关命令编辑在同一个ASCII码命令中,运行时只需输入文件名,MATLAB就会自动按顺序执行文件中的命令,这类似于批处理文件。函数文件是另一种形式的M文件,它的第一句可执行语句是以function引导的定义语句。在函数文件中的变量都是局部变量,它们在函数执行过程中驻留在内存中,在函数执行结束时自动消失。函数文件不单单具有命令文件的功能,更重要的是它提供了与其它MATLAB函数和程序的接口,因此功能更强大。(1)命令文件命令文件中的语句可以访问MATLAB工作空间(Workspace)中的所有数据。在运行的过程中所产生的变量

32、均是全局变量。这些变量一旦生成,就一直保存在内存空间中,除非用户将它们清除(如clear命令)。运行一个命令文件等价于从指令窗口中按顺序连续执行文件中的指令。由于命令文件只是一串指令的结合,因此程序不需要预先定义,而只需按在指令窗口中的指令输入顺序,依次将指令编辑在命令文件中就可以(在指令窗口中的新建m文件中进入这个编辑窗口)。如果某个命令的结果不需要显示出则在该命令后加上“;”,注意文件名一定是“.m”。如:求下列1,2,3,4,100的和:程序如下:s=0;for n=1:100 s=s+n;ends(2)函数文件如果M文件的第一行包含function,则该文件就是函数文件。每个函数文件都

33、定义一个函数。从形式上看,函数文件于命令文件的区别在于:命令文件的变量在文件执行完后保留在内存;而函数文件内定义的变量仅在函数文件内部起作用,当函数文件执行完成后,这些内部变量将被清除。定义函数格式如下:function 因变量名=函数名(自变量名)注意:函数名应该和M文件名相同。例:function y=f(x)y=sin(x);7、运算符及特殊字符(1)算术运算符+ 加法运算。适用于两个数相加或两个同阶矩阵相加。如果是一个矩阵和一个数字相加,则这个数字自动扩展为与矩阵同维的一个矩阵。- 减法运算。适用于两个数相加或两个同阶矩阵相加。如果是一个矩阵和一个数字相减,则这个数字自动扩展为与矩阵同

34、维的一个矩阵。* 乘法运算。适用于两个数相乘或两个可乘矩阵相乘。.* 点乘运算。适用于两个同阶矩阵对应元素相乘。./ 点除运算。适用于两个同阶矩阵对应元素相除。 乘幂运算。适用于一个方阵的多少次方。 反斜杠表示左除。如x=AB可以得到矩阵方程Ax=B的解。除、左除:a2/a3与a2*inv(a3)等价,a3a2与等价inv(a3)*a2,要求a3的逆存在。inv是求逆。(2)关系运算符= = 等于 如果矩阵A和B都为矩阵,则A和B必须具有相同的维数,运算时将A中的元素和B中对应元素进行比较,如果相等,则在输出矩阵的对应位置输出1,反之输出0。如果其中一个为数,则将这个数与另一个矩阵的所有元素进

35、行比较。无论何种情况,返回结果都与运算的矩阵具有相同维数的由0和1组成的矩阵。函数eq(A,B)得到结果一样。= 不等于 如果矩阵A和B都为矩阵,则A和B必须具有相同的维数,运算时将A中的元素和B中对应元素进行比较,如果相等,则在输出矩阵的对应位置输出0,反之输出1。如果其中一个为数,则将这个数与另一个矩阵的所有元素进行比较。无论何种情况,返回结果都与运算的矩阵具有相同维数的由0和1组成的矩阵。函数ne(A,B)得到结果一样。< 小于 如果矩阵A和B都为矩阵,则A和B必须具有相同的维数,运算时将A中的元素和B中对应元素进行比较,如果是小于关系,则在输出矩阵的对应位置输出1,反之输出0。如

36、果其中一个为数,则将这个数与另一个矩阵的所有元素进行比较。无论何种情况,返回结果都与运算的矩阵具有相同维数的由0和1组成的矩阵。函数lt(A,B)得到结果一样。> 大于 如果矩阵A和B都为矩阵,则A和B必须具有相同的维数,运算时将A中的元素和B中对应元素进行比较,如果是大于关系,则在输出矩阵的对应位置输出1,反之输出0。如果其中一个为数,则将这个数与另一个矩阵的所有元素进行比较。无论何种情况,返回结果都与运算的矩阵具有相同维数的由0和1组成的矩阵。函数gt(A,B)得到结果一样。<= 小于等于 如果矩阵A和B都为矩阵,则A和B必须具有相同的维数,运算时将A中的元素和B中对应元素进行

37、比较,如果是小于或等于关系,则在输出矩阵的对应位置输出1,反之输出0。如果其中一个为数,则将这个数与另一个矩阵的所有元素进行比较。无论何种情况,返回结果都与运算的矩阵具有相同维数的由0和1组成的矩阵。函数le(A,B)得到结果一样。>= 大于等于 如果矩阵A和B都为矩阵,则A和B必须具有相同的维数,运算时将A中的元素和B中对应元素进行比较,如果是大于或等于关系,则在输出矩阵的对应位置输出1,反之输出0。如果其中一个为数,则将这个数与另一个矩阵的所有元素进行比较。无论何种情况,返回结果都与运算的矩阵具有相同维数的由0和1组成的矩阵。函数ge(A,B)得到结果一样。8、数学函数及其运算MAT

38、LAB中函数的函数都有一个共同的特点:若自变量x为矩阵,则函数值也为x的同阶矩阵。即对x的每一元素分别求函数值;若自变量x为通常情况下的一个数据,则函数值是对应于x的一个数据。MATLAB的函数有很多,后面有按照功能分类的各种函数和工具箱,有兴趣的同学可以通过帮助学习,这里只介绍基本的函数。(在学习的过程中注意利用帮助中的例子)。(1)三角函数sin(x)正弦函数asin(x) 反正弦函数cos(x)余弦函数acos(x)反余弦函数tan(x)正切函数atan(x)反正切函数(2)基本数学函数abs(x)绝对值max(x)最大值min(x)最小值sum(x)元素求和sqrt(x)开平方exp(

39、x)以e为底的指数log(x) 自然对数 log10(x) 求以10为底数的函数sign(x)正负符号函数 fix(x) 朝零方面取整round(x) 四舍五入到最近的整数floor(x) 朝负无穷方向取整rem(x,y) 求两整数相除的余数ceil(x) 朝正无穷方向取整conj(x) 求复数的共轭imag(x) 求复数的虚部real(x) 求复数的实部 eig(x) 求矩阵x的特征值x,d=eig(A) 求A的特征向量矩阵x及对 角阵Dorth(x) 将非奇异矩阵x正交规范化(3)矩阵及其运算norm(A) 求向量或矩阵的范数 rank(A) 求矩阵的秩det(A) 求矩阵的行列式 tra

40、ce(A) 求矩阵的迹inv(A) 求方阵的逆矩阵eig(A) 求特征值及特征向量schur(A) 求矩阵的舒尔分解rref(X) 求矩阵X阶梯形的行最简形式size(A) 求矩阵的阶数(4)常用数值计算多项式的表示方法及其运算MATLAB中用行矢量表示多项式的系数,行矢量中的各元素按照多项式的项的次数从高到低排列。如可以表示为p=1 0 2 3。求此多项式当x=5时的值p(4),可以使用函数polyval(p,4);polyvalm(p,X):第二个参数X是方阵,表示求以矩阵为自变量的多项式的值;roots(p):找出一个多项式的根。多项式的曲线拟合根据一组已知的自变量和函数值,应用最小二乘

41、法,求出多项式的拟合曲线,在MATLAB中可以通过ployfit函数实现。函数形式为:p=polyfit(x,y,n)。其中,前两个输入参数x,y都是矢量,表示已知的自变量取值和函数值,n为拟合多项式的次数。如:>>x=1 2 3 4 5;y=5.6 40 150 250 498.6;polyfit(x,y,3)求函数的最小值和零点l 求解一元函数的最小值:通过fminbnd(以前版本是fmin函数)来求指定区间上的函数的局部极小值。fminbnd(函数名,起点,终点);l 多元函数最小值:用fminsearch(以前版本是fmins)来求,它可以指定一个开始的矢量,并非指定一个区

42、间。此函数返回一个矢量为多元函数局部最小值对应的自变量的取值。fminsearch(函数名,初始矢量);l 求函数的零点:MATLAB中使用fzero来实现,寻找零点时可以指定一个开始的位置,或者指定一个区间。如果指定一个开始点,函数首先在开始点附近寻找一个使函数值变号的区间,如果不存在,则返回NaN。如果知道函数值在某个区间上变号,则可以把这个区间作为参数。>>fzero(函数名,起点,终点)或fzero(函数名,初始位置)。积分和微分运算l 函数的定积分:quad(被积函数,积分下限,积分上限);l 微分运算:diff(多项式矢量,微分阶数),微分阶数为1时可以省略。方程求解l

43、 求解代数方程的根:用solve函数,调用格式:p=solve(eq)如:>> syms x y>> x,y=solve('x2+x*y+y=3','x2-4*x+3=0')有多少个未知数则需要在前面分别列出,如本例中的x,y;如果等式的值为0,也可以只写等式右边,如x,y=solve('x2+x*y+y=3','x2-4*x+3');一般情况下,如果不能得到数值解也会得到符号解,这是需要指出未知数,如果没有指出则表示x为未知数。如下例中以b为未知数:>> syms x b>> so

44、lve('x2+x*b+b=3','b')l 微分方程:当常微分方程能够解析求解时,可以用MATLAB的符号工具箱中的功能找到精确解。在微分方程难以获得解析的情况下,可以方便的通过数值计算求解,高阶微分方程必须等价地变换成一阶微分方程组进行求解。这时用t,y=ode23(函数,t的初值,t的终值,y的初值)。例:描述震荡器的经典范得波(Var der Pol)微分方程对于上述微分方程,通过重新定义两个新的变量,来实现这种变换。令,则高阶微分方程变为两个低阶的微分方程:要解这个方程首先要建立一个M文件varr.m,内容如下:function der=var(t,y

45、)der=y(2) 2*(1-y(1)2)*y(2)-y(1)'函数的参数是时间t和一个二维向量,返回值是一个列向量,代表的是导数的值。>>t,y=ode23('var',0 20,2 0);第一个参数是函数名,第二个是时间跨度,第三个是初值。返回的t是一个矢量,y是个矩阵,分别代表微分方程两个自变量在时间t 的取值。9、使用绘图命令使用MATLAB的绘图命令,可以根据数据(或函数)在计算机屏幕上绘制出对应的图形,便于可视化计算,其图形的操作请同学们根据菜单选项自己试一试,下面介绍几个最常用的绘图命令:plot:绘制二维线性图形及两个坐标轴; plot(x,

46、y)表示以x为横坐标,y为纵坐标的图形。如:>> x=0:pi/100:2*pi;y=sin(x);plot(x,y)plot3:绘制三维线性图形及三个坐标轴;一般格式:plot3(x,y,z)如:>> t=0:pi/100:6*pi;x=cos(t);y=sin(t);z=2*t;plot3(y,x,z)hist:统计直方图,hist(X)如:>> x=randn(10000,1);hist(x)10、数据处理max 求向量或矩阵最大值min 求向量或矩阵最小值mean 求向量或矩阵的平均值median 求向量或矩阵的中间值sum 求向量或矩阵的元素和pr

47、od 求向量或矩阵的元素乘积find 求向量中满足条件的元素length 求向量所含元素个数corrcoef 求向量或矩阵的相关系数四、Matlab的编程由于使用MATLAB编程运算与人进行科学计算的思路和表达方式完全一致,这使MATLAB受到广大科技工作者的青睐,下面简单介绍MATLAB编程所涉及的常用语句。1、条件语句在Matlab中,可以利用条件语句来实现分支算法,最简单的条件语句是if语句。当条件满足时,执行条件后的指令;当条件不满足时,则不执行条件后的指令。其具体格式为: if条件 语句 end在if语句的条件选项中通常应有一个(或多个)逻辑表达式,但表达式的逻辑值为真,则执行条件后

48、面的语句块包含的指令;否则跳过条件后面的语句块。在建立逻辑表达式时,常用到的关系符有下面(见表)有九个符号:符号名称意义= =双等号等于小于号小于大于号大于小于等于号小于等于大于等于号大于等于 =上波号与等号不等于与号逻辑与竖杠逻辑或上波号逻辑非例1 求函数的值。当自变量取值为零时,补充定义函数值为1。求该函数值的程序(程序1.1)用到了分支算法。用于分支算法的if语句,其格式为:程序1.1 else endyif条件1语句块1else语句块2end上面语句的算法结构是:当条件1满足时,执行语句块1;当条件不满足时,则执行语句块2;当条件较多时必须用分支算法,用于多分支算法的if语句,其格式为

49、:if条件1语句块1elseif<条件2>语句块2else语句块3end2、循环语句Matlab的循环语句有for循环语句和while循环语句两种。for循环语句用于重复执行某些操作,直至循环变量达到终止为止。具体格式为:for循环变量=初值:步长 :终值 循环体 endfor循环语句常用于由数控制的循环算法。当初值小于终值时,步长为正数;当初值大于终值时,步长为负数;当步长被省略时,Matlab默认值为1。例2、例2 用双重循环编写程序生成4阶Hilbert矩阵. for for H end end while循环语句适用于由条件控制的循环算法的实现.反复执行某些操作,直到条件不

50、满足为止.其具体格式为 while条件, 循环 end例3 产生裴波拉奇数列:1,1,2,5,8,13,21,.要求数列之中最后一个数不超过1000.数列产生的递推公式为: 1 1; I=1; while <, end下面是将for语句和if语句结合起来一达到特殊的目的的一个例子.在实现循环算法时常用到转移语句.Matlab中的转换语句是以if条件break,end的格式来定义的.例4 用ifbreak语句跳出while循环.计算无穷级数的近似值.要求误差不超过.while if ends这段程序执行的结果,误差界限不超过.如果没有转移语句,程序见按照公式求和并一直进行下去永不休止,形成

51、死循环.3、switchcaseend分支结构switch语句是多分支选择语句,虽然在某些场合switch的功能可以由if语句的多层嵌套来完成,但是会使程序变得复杂和难于修改维护,而利用switch语句构造多分支选择时显得更加简单明了、容易理解。switch的基本用法为:switch 表达式case 常量表达式1 语句块1case 常量表达式2 语句块2case常量表达式n,常量表达式n+1, 常量表达式n+2 语句块notherwise 语句块n+1endswitch 后面的表达式可以为任何类型,如字符串、矩阵等当表达式的值与case后面的某个表达式的值相等时,就执行这个case后面的语句块

52、,如果所有的常量表达式的值都与此表达式的值不匹配时,就执行otherwise后面的语句块。与if语句不同的是,各个case和otherwise语句出现的先后顺序并不会影响程序的执行结果,将otherwise语句放到case语句的前面也是合法的。每个case后面的常量表达式可以有多个,而且可以是不同的类型,每个case中常量表达式的值是可以重复的,这在语法上没有错误,只是在执行时后面那些符合条件的case语句将被忽略,不会起作用。每次只执行一个语块,执行完一个语句块后就退出switch语句。例5 我国新税法规定:个体工商户的生产、经营所得和对事业单位的承包经营、承租经营所得应交纳的个人所得税为:全年收入中应纳税所得税部分 税率(%)1、不超过5000元的 52、超过5000元至10000元的部分 103、超过10000元至30000元的部分 204、超过30000元至50000元的部分 305、超过50000元的部分 35function y=shui(x)x=input('input x:')n=fix(x/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论