《MATLAB基础应用2.ppt》由会员分享,可在线阅读,更多相关《MATLAB基础应用2.ppt(134页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、北京理工大学数学系 MATLAB 一一 MatlabMatlab 简介简介MatlabMatlab:矩阵实验室:矩阵实验室 MATrixMATrix +LABoratoryLABoratory 。主要用于方便矩阵的存取,其基本元素是无须定义主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。维数的矩阵。19841984年,年,Steve Steve BangertBangert,Cleve,Cleve MolerMoler&John&John Little Little 成立成立MathWorksMathWorks公司,正是把公司,正是把MatlabMatlab推向市推向市场。场。2020
2、世纪世纪7070年代,时任美国新墨西哥州大学计算机科学年代,时任美国新墨西哥州大学计算机科学系主任系主任Cleve Cleve MolerMoler教授出于减轻学生编成负担的动机,教授出于减轻学生编成负担的动机,为学生设计了一组调用为学生设计了一组调用LINPACK LINPACK 和和EISPACKEISPACK库程序库程序的的“通俗易用通俗易用”的接口,此即用的接口,此即用FORTRANFORTRAN编写的萌编写的萌芽状态的芽状态的MATLABMATLAB 它是一套高性能的数值计算和它是一套高性能的数值计算和可视化可视化数学软件。数学软件。在在 MatlabMatlab 环境下,对所要求解
3、的问题,用户只环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图需简单地列出数学表达式,其结果便以数值或图形方式显示出来。形方式显示出来。19931993年,年,MathworksMathworks公司推出了公司推出了Matlab4.0Matlab4.0版本,系统平台由版本,系统平台由DOSDOS改为改为WINDOWSWINDOWS。19971997年,年,MathworksMathworks公司推出了公司推出了Matlab5.0Matlab5.0版本,版本,19991999年推出年推出5.35.3版本。版本。20022002年推出年推出6.56.5版本。现在使用版本。
4、现在使用7.07.0以上版本。以上版本。MatlabMatlab:1)1)MatlabMatlab 主包:数百个核心内部函数;主包:数百个核心内部函数;2)2)各种可选各种可选ToolboxToolbox”工具包工具包”:功能性工具包功能性工具包:扩充:扩充MatlabMatlab的符号计算功能、图示的符号计算功能、图示 建模仿真功能、文字处理功能、硬件适时交互功建模仿真功能、文字处理功能、硬件适时交互功 能;能;学科性工具包学科性工具包:Control Control toolbox,Optimizationtoolbox,Optimization tollboxtollbox.它可用来它可
5、用来求解各类学科的问题求解各类学科的问题,包括:信号处理、,包括:信号处理、图象处理、控制、系统辨识、神经网络等图象处理、控制、系统辨识、神经网络等.MatlabMatlab 的主要特点:的主要特点:4.4.语法限制不严格,程序设计自由度大;语法限制不严格,程序设计自由度大;2.2.运算符丰富;运算符丰富;3.3.具有结构化的控制语句具有结构化的控制语句(如如 for for 循环、循环、whilewhile 循环、循环、break break 语句和语句和 if if 语句和面向对象编程语句和面向对象编程 的特性;的特性;1.1.语言简洁紧凑,使用方便灵活,库函数极其语言简洁紧凑,使用方便灵
6、活,库函数极其丰富;丰富;5.5.图形功能强大;图形功能强大;6.6.功能强大的工具箱;功能强大的工具箱;7.7.源程序的开放性;源程序的开放性;优点:功能强大;界面友善,语言自然;开放性强。优点:功能强大;界面友善,语言自然;开放性强。编程效率高、易学易用编程效率高、易学易用.运行运行MatlabMatlab的可执行文件,自动创建的可执行文件,自动创建MatlabMatlab指令指令窗(窗(Command WindowCommand Window)。)。初学者可在命令窗键入:初学者可在命令窗键入:demo demo 或或 intro(intro(入门演示入门演示)发发现现指指令令不不知知如如
7、何何使使用用时时,helphelp命命令令将将告告诉诉你你使使用。例:用。例:help sinhelp sin SIN Sine.SIN Sine.SIN(X)is the sine of the elements of X.二二 MatlabMatlab 工作环境工作环境在在MatlabMatlab下进行基本数学运算,只需将运算式直接下进行基本数学运算,只需将运算式直接打入提示号(打入提示号()之后,并按入)之后,并按入EnterEnter键即可。键即可。例如:例如:(10*19+2/4-34)/2*3ans=234.7500 MatlabMatlab可可以以将将计计算算结结果果以以不不同同
8、的的精精确确度度的的数数字字格格式式显显示示,直直接接在在指指令令视视窗窗键键入入以以下下的各个数字显示格式的指令。的各个数字显示格式的指令。format shortformat short(这是默认的这是默认的)小数点后小数点后4 4位位Format long 15Format long 15位数字表示位数字表示Format short e 5Format short e 5位科学计数表示位科学计数表示Format long e 15Format long e 15位科学计数表示位科学计数表示等等等等 MatlabMatlab利用了利用了二个游标键可以将所下过的二个游标键可以将所下过的指令叫
9、回来重覆使用指令叫回来重覆使用 CtrlCtrlC C(即同时按(即同时按CtrlCtrl及及C C二个键)可以用来二个键)可以用来中止执行中的中止执行中的MatlabMatlab的工作。的工作。三三 变量及其命名规则变量及其命名规则 1 1 变量变量 MATLABMATLAB中变量的中变量的命名规则命名规则是:是:(1 1)变量名必须是不含空格的单个词;)变量名必须是不含空格的单个词;(2 2)变量名区分大小写;)变量名区分大小写;(3 3)变量名最多不超过)变量名最多不超过1919个字符;个字符;(4 4)变量名必须以字母打头,之后可以是任意字母、)变量名必须以字母打头,之后可以是任意字母
10、、数字或下划线,变量名中不允许使用标点符号数字或下划线,变量名中不允许使用标点符号.预定义的变量预定义的变量ansans预设的计算结果的变量名预设的计算结果的变量名epsepsMatlabMatlab定义的正的极小值定义的正的极小值=2.2204e-162.2204e-16pipi内建的内建的 值值infinf值,无限大值,无限大 (1/0)(1/0)NaNNaN无法定义一个数目无法定义一个数目 (0/0)(0/0)i i 或或 j j 虚数单位虚数单位i=j=(-1)(1/2)i=j=(-1)(1/2)而键入而键入 clear clear 则是清除所有定义过的变量名称。则是清除所有定义过的变
11、量名称。2 2、数学运算符号及标点符号、数学运算符号及标点符号(1 1)MATLABMATLAB的每条命令后,若为的每条命令后,若为逗号逗号或或无标点无标点符号,符号,则显示命令的结果;若命令后为则显示命令的结果;若命令后为分号分号,则禁止显示结果,则禁止显示结果.(2 2)“%”后面所有文字为注释后面所有文字为注释.(3 3)“.”表示续行表示续行.三角函数和双曲函数三角函数和双曲函数 名称名称 含义含义 名称名称 含义含义 名称名称 含义含义 sin sin 正弦正弦 csccsc 余割余割 atanhatanh 反双曲正切反双曲正切 coscos 余弦余弦 asecasec 反正割反正割
12、 acothacoth 反双曲余切反双曲余切 tan tan 正切正切 acscacsc 反余割反余割 sechsech 双曲正割双曲正割 cot cot 余切余切 sinhsinh 双曲正弦双曲正弦 cschcsch 双曲余割双曲余割 asinasin 反正弦反正弦 coshcosh 双曲余弦双曲余弦 asechasech 反双曲正割反双曲正割 acosacos 反余弦反余弦 tanhtanh 双曲正切双曲正切 acschacsch 反双曲余割反双曲余割 atanatan 反正切反正切 cothcoth 双曲余切双曲余切 acotacot 反余切反余切 asinhasinh 反双曲正弦反双曲
13、正弦 sec sec 正割正割 acoshacosh 反双曲余弦反双曲余弦 3 3、数学函数、数学函数 指数函数指数函数 名称名称 含义含义 名称名称 含义含义 名称名称 含义含义 exp exp E E为底的指数为底的指数 log10 log10 1010为底的对数为底的对数 pow2 pow2 2 2的幂的幂 log log 自然对数自然对数 log2 log2 2 2为底的对数为底的对数 sqrtsqrt 平方根平方根 复数函数复数函数 名称名称 含义含义 名称名称 含义含义 名称名称 含义含义 abs abs 绝对值绝对值 conj conj 复数共轭复数共轭 real real 复数
14、实部复数实部 angle angle 相角相角 imagimag 复数虚部复数虚部 取整函数和求余函数取整函数和求余函数 名称名称 含义含义 名称名称 含义含义 ceil ceil 向向+取整取整 remrem 求余数求余数 fix fix 向向0 0取整取整 round round 向靠近整数取整向靠近整数取整 floor floor 向向-取整取整 sign sign 符号函数符号函数 mod mod 模除求余模除求余 矩阵变换函数矩阵变换函数 名称名称 含义含义 名称名称 含义含义 fiplrfiplr 矩阵左右翻转矩阵左右翻转 diagdiag 产生或提取对角阵产生或提取对角阵 fip
15、udfipud 矩阵上下翻转矩阵上下翻转 triltril 产生下三角产生下三角 fipdimfipdim 矩阵特定维翻转矩阵特定维翻转 triutriu 产生上三角产生上三角 Rot90 Rot90 矩阵反时针矩阵反时针9090翻转翻转 其他函数其他函数 名称名称 含义含义 名称名称 含义含义 min min 最小值最小值 max max 最大值最大值 mean mean 平均值平均值 median median 中位数中位数 std std 标准差标准差 diff diff 相邻元素的差相邻元素的差 sort sort 排序排序 length length 个数个数 norm norm 欧
16、欧(EuclideanEuclidean)长度长度 sum sum 总和总和 prod prod 总乘积总乘积 dot dot 内积内积 cumsumcumsum 累计元素总和累计元素总和 cumprodcumprod 累计元素总乘积累计元素总乘积 cross cross 外积外积 可查阅在线帮助可查阅在线帮助 helpwinhelpwin 中中 MatlabelfunMatlabelfun 或或help help elfunelfun。为为MATLABMATLAB定义新函数,必须编写定义新函数,必须编写函数文件函数文件.函数文件函数文件是文件名是文件名后缀为后缀为MM的文件的文件,这类文件的
17、,这类文件的第一行必须是一第一行必须是一特殊字符特殊字符 function function 开始开始,格式为:,格式为:function function 因变量名因变量名=函数名(自变量名)函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变量函数值的获得必须通过具体的运算实现,并赋给因变量.4 4、MM文件文件MM文件建立方法:文件建立方法:1.1.在在MatlabMatlab中,点中,点:File-New-M-file:File-New-M-file 2.2.在编辑窗口中输入程序内容在编辑窗口中输入程序内容 3.3.点:点:File-SaveFile-Save,存盘,存盘,
18、MM文件名最文件名最 好与函数名一致。好与函数名一致。MatlabMatlab的应用程序也以的应用程序也以MM文件保存。文件保存。例:定义函数例:定义函数 f(xf(x1 1,x,x2 2)=100(x)=100(x2 2-x-x1 12 2)2 2+(1-x+(1-x1 1)2 2function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)21.1.建立建立MM文件:文件:fun.mfun.m2.2.可以直接使用函数可以直接使用函数 fun.mfun.m例如:计算例如:计算 f(1,2),f(1,2),只需在只需在MatlabMatlab命令窗口命令窗口键入命令:
19、键入命令:x=1 2x=1 2fun(xfun(x)MatlabMatlab的运算事实上是以数组的运算事实上是以数组 (array)(array)及矩阵及矩阵 (matrix)(matrix)方式在做运算。方式在做运算。x=1 2 3 4 5 6 7 8;%x=1 2 3 4 5 6 7 8;%一维一维 1x8 1x8 阵列阵列 x=1 2 3 4 5 6 7 8;4 5 6 7 8 9 10 11 x=1 2 3 4 5 6 7 8;4 5 6 7 8 9 10 11;%;%二维二维 2x8 2x8 矩阵,以矩阵,以;表示分行表示分行 四、数组四、数组1 1 创建简单的数组创建简单的数组x=
20、a b c d e f 创建包含指定元素的行向量创建包含指定元素的行向量2 2建立数组建立数组 上面的方法只适用于元素不多的情况,但是当上面的方法只适用于元素不多的情况,但是当元素很多的时候,则须采用以下的方式:元素很多的时候,则须采用以下的方式:x=firstx=first:last last 创建从创建从firstfirst开始,加开始,加1 1计数,到计数,到lastlast结束的行向量结束的行向量x=firstx=first:incrementincrement:last last 创建始于创建始于firstfirst,步长,步长incrementincrement,终于,终于last
21、last的向量的向量x=x=linspace(firstlinspace(first,lastlast,n n)创建从创建从firstfirst开始,到开始,到lastlast结束,有结束,有n n个元素的行向量个元素的行向量 产生列向量有两种方法:产生列向量有两种方法:直接产生直接产生 例例 c=1c=1;2 2;3 3;44 转置产生转置产生 例例 b=1 2 3 4;c=bb=1 2 3 4;c=b 说明:以说明:以空格空格或或逗号逗号分隔的元素指定的是不同列的元分隔的元素指定的是不同列的元 素,而以素,而以分号分号分隔的元素指定了不同行的元素分隔的元素指定了不同行的元素.3 3 数组的
22、运算数组的运算(1 1)标量)标量-数组运算数组运算 数组对标量的加、减、乘、除、乘方是数组的每个元数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算素对该标量施加相应的加、减、乘、除、乘方运算.设:设:a=aa=a1 1,a,a2 2,a,an n,c=,c=标量标量则:则:a+ca+c=a=a1 1+c,a+c,a2 2+c,+c,a an n+c+c a.*c=a a.*c=a1 1*c,a*c,a2 2*c,*c,a,an n*c*c a./c=a a./c=a1 1/c,a/c,a2 2/c,/c,a,an n/c(/c(右除)右除)a.c=c
23、/aa.c=c/a1 1,c/a,c/a2 2,c/a,c/an n(左除)左除)a.ca.c=a=a1 1c,ac,a2 2c,c,a an ncc c.ac.a=ca=ca1 1,ca,ca2 2,cacan n (2 2)数组数组-数组运算数组运算 当两个数组有相同维数时,加、减、乘、除、幂运当两个数组有相同维数时,加、减、乘、除、幂运算可按算可按元素对元素元素对元素方式进行的,不同大小或维数的方式进行的,不同大小或维数的数组是不能进行运算的数组是不能进行运算的.设:设:a=aa=a1 1,a,a2 2,a,an n,b=b,b=b1 1,b,b2 2,b bn n 则:则:a+ba+b
24、=a=a1 1+b+b1 1,a,a2 2+b+b2 2,a an n+b+bn n a.*b=a a.*b=a1 1*b*b1 1,a,a2 2*b*b2 2,a,an n*b bn n a./b=a a./b=a1 1/b/b1 1,a,a2 2/b/b2 2,a,an n/b bn n a.b=b a.b=b1 1/a/a1 1,b,b2 2/a/a2 2,b bn n/a/an n a.ba.b=a=a1 1bb1 1,a,a2 2bb2 2,a an nbbn n(1)输入矩阵时要以“”为其标识,即矩阵的元素应在“”内部;(2)同行元素之间可由空格或“,”分隔,行与行间用“;”或回车
25、符分隔;(3)矩阵元素可为运算表达式;(4)如不想获得中间结果,可以“;”结束。1、一般矩阵的生成:五五 矩阵矩阵 例1:输入矩阵 解:B=1+9i 2+8i 3+7i;4+6j 5+5j 6+4i;7+3i 8+2i 0+j输入命令在Matlab环境中定义了两个记号 i 和 j,可以用来直接输入复数矩阵2、特殊矩阵的生成:(1)生成单位矩阵eye(n)生成 n 阶单位阵eye(m,n)生成 阶单位阵eye(size(A)生成与矩阵A大小相同的单位阵()生成全矩阵ones(n)生成 n 阶全1矩阵ones(m,n)生成 阶全1矩阵ones(size(A)生成与矩阵A大小相同的全1矩阵(3)生成
26、全 0 矩阵zeros(n)生成 n 阶全0矩阵zeros(m,n)生成 阶全0矩阵zeros(size(A)生成与矩阵A大小相同的全0矩阵 例3:已知矩阵试生成与矩阵A大小相同的单位阵,全0阵及全1阵;解:输入命令A=1 2 3;4 5 6;7 8 9;B1=eye(size(A)B2=zeros(size(A)B3=ones(size(A)(4)生成随机矩阵rand(n)生成 n 阶随机阵rand(m,n)生成 阶均匀分布随机数矩阵randn(m,n)生成 阶正态分布随机数矩阵rand(size(A)生成与矩阵A大小相同的随机阵(5)生成对角矩阵生成第 k 个对角线由向量 v 组成的对角阵
27、,k 可以是正数,零或负数。当 k 是零时指主对角线(可简记为A=diag(v),k 是负数时 v 在对角线下,k 是正数时 v 在对角线上。生成的对角矩阵的Matlab调用格式为:A=diag(v,k)(6)幻方矩阵(魔阵)即每行每列和对角线上元素之和相等命令:magic(n)(7)Vandermonde 矩阵生成的Vandermonde矩阵的Matlat调用格式为:V=vander(C)(8)希尔伯特(Hilbert)矩阵希尔伯特矩阵其元素为1/(i+j-1),i,j分别为其行标和列标。1,1/2,1/3,1/n;1/2,1/3,1/4,1/(n+1);1/3,1/4,1/5,1/(n+2
28、);1/n,1/(n+1),1/(n+2),1/(2n-1)希尔伯特矩阵是一种数学变换矩阵,正定,且高度病态(即,任何一个元素发生一点变动,整个矩阵的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。命令:hilb(n)生成n阶希尔伯特矩阵 3、符号矩阵的生成:如果已经建立起数值矩阵 A,则可以由 B=sym(A)语句将其转化成符号矩阵。这样,所有数值矩阵均可以通过这样的形式转换成符号矩阵,可以利用符号运算工具箱获得更高精度的解。值得注意的是,不管原来的数值矩阵是以分数形式给出,还是以小数形式给出,转换成符号矩阵后都将以最接近于原数的有理形式给出。3、矩阵的修改、矩阵的修改冒号表达式是Matl
29、ab中很有用的表达式,在向量生成、子矩阵提取等方面都特别重要。冒号表达式的原型为该函数生成一个行向量 v,其中 s1 为向量的起始值,s2 为步距,该向量从 s1 出发,每隔步距 s2 取一个点,直至不超过 s3 的最大值就可以构成一个向量。若省略 s2,则步距的默认值为 1。(1).冒号表达式(2).子矩阵的提取1 提取子矩阵在Matlab是经常需要处理的事。提取子矩阵的具体方法是:其中向量 v1 表示子矩阵要包含的行号构成的向量,v2 表示子矩阵要包含的列号构成的向量。若v1为:,则表示要提取所有的行,v2 亦有相应的处理结果。关键词end表示最后一行(或列,取决于其位置)。例:解:设(1
30、)提取矩阵A全部奇数行,所有列;(2)提取矩阵A的3,2,1行,2,3,4列;(3)将矩阵A左右翻转,即最后一列排在最前面;分别输入命令 A=1 4 3 6;2 7 9 5;5 7 6 6;B1=A(1:2:end,:)B2=A(3,2,1,2,3,4)B3=A(:,end:-1:1)diag(A,k)2一些特殊子矩阵的提取表示将矩阵 A 的第 k 个对角线的元素提取组成列向量,若 k 省略 等价于k=0,表示主对角线元素。tril(A,k)与tril(A)表示提取矩阵 A 的下三角部分,未提取部分用 0 补齐。triu(A,k)与triu(A)表示提取矩阵 A 的上三角部分,未提取部分用 0
31、 补齐。rot90(A)表示将矩阵 A 逆时针旋转900 fliplr(A)表示将矩阵 A 左右翻转 flipud(A)表示将矩阵 A 上下翻转3.矩阵的扩充和部分元素的删除a 矩阵的扩充可用“”将小矩阵扩充成大矩阵。可用命令D=A B构造矩阵D,其中A和B必须有相同的行。可用命令 D=A;B C 构造矩阵D,其中B和C必须有相同的行,B和C 的列数之和必须等于A的列数。b 也可用直接赋值的办法对超出矩阵维数的元素赋值来扩充矩阵。A(1:3,1:3)=eye(3)命令 A(1:3,1:3)=ones(3)A(1:3,1:3)=zeros(3)类似 A(i,j)=k命令 A(:,j)=或 A(i
32、,:)=命令 A(:,i j)=A(:,j i)命令 A(i j,:)=A(j i,:)命令基本矩阵的运算符运算符运算符 含义含义 运算符运算符 含义含义 A+BA+BA-BA-BA*BA*BA.*BA.*BA BA BA/BA/BA./B A./B k*Ak*A加法加法减法减法乘法乘法对应元素相乘对应元素相乘左除左除右除右除A A的元素被的元素被B B的的 对应元对应元素除素除 数乘数乘A nA nA.nA.nA.BA.Bexp(A)exp(A)log(A)log(A)sqrt(A)sqrt(A)det(A)det(A)inv(A)inv(A)A AA A为方阵时,自乘为方阵时,自乘n n次
33、次A A的各元素的各元素n n次方次方A,BA,B两矩阵对应元素乘方两矩阵对应元素乘方A A的所有元素取以的所有元素取以e e为底的指数为底的指数对对A A的各元素取的各元素取 e e为底的对数为底的对数对对A A的各元素求平方根的各元素求平方根求求A A的行列式的行列式求求A A的逆矩阵的逆矩阵求求A A转置转置 4 4、矩阵的运算、矩阵的运算六六 Matlab Matlab 命令系统命令系统命命 令令 含含 义义 help help 在线帮助在线帮助 helpwin helpwin 在线帮助窗口在线帮助窗口 helpdesk helpdesk 在线帮助工作台在线帮助工作台 demo dem
34、o 运行演示程序运行演示程序 ver ver 版本信息版本信息 readme readme 显示显示ReadmeReadme文件文件 who who 显示当前变量显示当前变量 whos whos 显示当前变量的详细信息显示当前变量的详细信息 clear clear 清空工作间的变量和函数清空工作间的变量和函数 pack pack 整理工作间的内存整理工作间的内存 load load 把文件调入变量到工作间把文件调入变量到工作间 save save 把变量存入文件中把变量存入文件中 quit/exit quit/exit 退出退出Matlab Matlab what what 显示指定的显示指定
35、的MatlabMatlab文件文件 lookfor lookfor 在在HELPHELP里搜索关键字里搜索关键字 which which 定位函数或文件定位函数或文件 path path 获取或设置搜索路径获取或设置搜索路径 echo echo 命令回显命令回显 cd cd 改变当前的工作目录改变当前的工作目录 pwd pwd 显示当前的工作目录显示当前的工作目录 dir dir 显示目录内容显示目录内容 unix unix 执行执行unixunix命令命令 dos dos 执行执行dosdos命令命令 !执行操作系统命令执行操作系统命令 computer computer 显示计算机类型显示
36、计算机类型 可查阅在线帮助可查阅在线帮助 helpwin helpwin 中中Matlabgeneral Matlabgeneral 或或 help generalhelp general。七七 MatlabMatlab语言中的关系与逻辑运算语言中的关系与逻辑运算 关系运算关系运算 指令指令 含义含义 小于小于 =大于大于 =大于等于大于等于 =等于等于 =不等于不等于 逻辑运算逻辑运算 指令指令 含义含义&逻辑逻辑 andand|逻辑逻辑 oror 逻辑逻辑 notnot 指令指令 含义含义 xor xor 不相同就取不相同就取1 1,否则取,否则取0 0 any any 只要有非只要有非0
37、 0就取就取1 1,否则取,否则取0 0 all all 全为全为1 1取取1 1,否则为,否则为0 0 isnan isnan 为数为数NaNNaN取取1 1,否则为,否则为0 0 isinf isinf 为数为数infinf取取1 1,否则为,否则为0 0 isfinite isfinite 有限大小元素取有限大小元素取1 1,否则为,否则为0 0 ischar ischar 是字符串取是字符串取1 1,否则为,否则为0 0 isequal isequal 相等取相等取1 1,否则取,否则取0 0 ismember ismember 两个矩阵是属于关系取两个矩阵是属于关系取1 1,否则取,
38、否则取0 0 isempty isempty 矩阵为空取矩阵为空取1 1,否则取,否则取0 0 isletter isletter 是字母取是字母取1 1,否则取,否则取0 0(可以是字符串)(可以是字符串)isstudent isstudent 学生版取学生版取1 1 isprime isprime 质数取质数取1 1,否则取,否则取0 0 isreal isreal 实数取实数取1 1,否则取,否则取0 0 isspace isspace 空格位置取空格位置取1 1,否则取,否则取0 0 逻辑关系函数逻辑关系函数 MatlabMatlab提供如下几种控制流结构:提供如下几种控制流结构:Fo
39、rFor循环,循环,WhileWhile循环循环,If-Else-End,If-Else-End结构和结构和switch-case-endswitch-case-end结构。结构。八八 MatlabMatlab编程编程这些结构经常包含大量的这些结构经常包含大量的 MATLAB MATLAB 命令,故经常命令,故经常出现在出现在MATLABMATLAB程序中,而不是直接加在程序中,而不是直接加在Matlab Matlab 提示符下提示符下.ForFor循环允许一条语句或一组语句被重复执行预循环允许一条语句或一组语句被重复执行预先指定的次数。先指定的次数。ForFor循环的一般形式是:循环的一般形
40、式是:for x=arrayfor x=array语句语句endend1.For 1.For 循环循环在在 for for 和和 end end 语句之间的语句按数组中的每一列执行一语句之间的语句按数组中的每一列执行一次。在每一次迭代中,次。在每一次迭代中,x x被指定为数组的下一列,即在第被指定为数组的下一列,即在第n n次循环中,次循环中,x=array(:,n)x=array(:,n)。在在ForFor循环内接受任何有效的循环内接受任何有效的MatlabMatlab数组数组 ;ForFor循环可按需要嵌套;循环可按需要嵌套;当有一个等效的数组方法来解给定的问题当有一个等效的数组方法来解给
41、定的问题时,应避免用时,应避免用ForFor循环。循环。注意:注意:与与ForFor循环以固定次数求一组命令的值相反,循环以固定次数求一组命令的值相反,While While 循环以不定的次数重复执行一组语句。循环以不定的次数重复执行一组语句。WhileWhile循环的一般形式是:循环的一般形式是:while while 表达式表达式1 1 语句语句1 1endend2.While 2.While 循环循环只要表达式只要表达式1 1里的所有元素为真,就执行里的所有元素为真,就执行whilewhile和和endend之间的语句之间的语句1,1,否则,就结束循环。否则,就结束循环。例例 求求1 1
42、100100的偶数和。的偶数和。clearx=0;sum=0;while x0或或 f(x)0,且且f(a).f(b)0,则则必存在唯一的必存在唯一的x*a,b使使f(x*)=03方程的近似解的求法方程的近似解的求法115求方程近似解可分两步做:求方程近似解可分两步做:第一步,确定根的大致范围,即确定一个区间第一步,确定根的大致范围,即确定一个区间a,b,使所求根位于这个区间内,称之为根的隔离区间。,使所求根位于这个区间内,称之为根的隔离区间。一般来说,可以通过函数作图大致地确定。根据零一般来说,可以通过函数作图大致地确定。根据零点存在定理,只要点存在定理,只要f(x)在某闭区间连续,在该区间
43、内在某闭区间连续,在该区间内找小区间找小区间a,b使使f(a).f(b)0且曲线且曲线 y=f(x)在在(a,b)内内仅通过仅通过x轴一次,即可。轴一次,即可。第二步,以根的隔离区间的端点作为根的初始近似第二步,以根的隔离区间的端点作为根的初始近似值,用指定的方法逐步改进根的近似值的精确度,值,用指定的方法逐步改进根的近似值的精确度,直至求得满足精确度的近似解。直至求得满足精确度的近似解。116(a)二分法)二分法设设f(x)在在a,b连续,连续,f(a).f(b)0,且且 f(x)=0在在(a,b)内内仅有一个实根仅有一个实根c。于是。于是a,b为初始隔离区间为初始隔离区间设设a,b的中点的
44、中点x1=(a+b)/2,计算,计算f(x1),如果,如果f(x1)=0,则则c=x1;如果;如果f(x1)与与f(b)异号,则取异号,则取a1=x1,b1=b;如果如果f(x1)与与 f(a)异号,则取异号,则取a1=a,b1=x1,然后再以然后再以a1,b1为隔离区间,取为隔离区间,取x2=(a1+b1)/2,重复以重复以上过程上过程n次,可得第次,可得第n次隔离区间次隔离区间an,bn,且且anc0;0;步骤步骤2 2 确定初始隔离区间确定初始隔离区间 a,b,使,使f(a).).f(b)0;)0;步骤步骤3 3 若若b-a,则输出近似值,则输出近似值c=a;停止;停止;步骤步骤4 4
45、x=(a+b)/2,如果,如果f(x)=0,则输出则输出c=x;如果如果f(x)与与f(b)异号,则异号,则a=x;返回;返回3;如果如果f(x)与与 f(a)异号,则异号,则b=x,返回返回3。118(b)牛顿迭代法)牛顿迭代法设设 f(x)在在a,b上有二阶导数,上有二阶导数,f(a).f(b)0,且且f(x)与与f(x)在在a,b上分别保持定号,这时,可采用牛顿迭代法求解。上分别保持定号,这时,可采用牛顿迭代法求解。牛顿迭代法的基本思路是用曲线弧一端处的切线代替曲牛顿迭代法的基本思路是用曲线弧一端处的切线代替曲线弧,从而以切线与线弧,从而以切线与x轴的交点的横坐标作为方程实根轴的交点的横
46、坐标作为方程实根的近似。如下图,的近似。如下图,f(a)0,f(x)0,f(x)0y=f(x)bax1119记记(x0,f(x0)为纵坐标与为纵坐标与f(x)同号的那个端点,在此同号的那个端点,在此x0=b,在,在(x0,f(x0)处作曲线弧的切线,它与处作曲线弧的切线,它与x轴交点轴交点x1(a,b),x1比比x0更接近精确解更接近精确解c.这时切线方程是:这时切线方程是:y-f(x0)=f(x0)(x-x0)令令y=0,得得 x1=x0-f(x0)/f(x0);如果如果x1的精度不够用,可在在的精度不够用,可在在(x1,f(x1)处做切线。可处做切线。可得比得比x1的更接近的更接近c的近似
47、解的近似解 x2=x1-f(x1)/f(x1),cx2x1 x0120依此类推,继续下去,如果依此类推,继续下去,如果xn-1已经得出,则在点已经得出,则在点(xn-1,f(xn-1)处做切线。此切线与处做切线。此切线与x轴轴的交点的横坐标的交点的横坐标为为 xn=xn-1-f(xn-1)/f(xn-1),n=1,2,3上式称为牛顿迭代法的迭代公式。上式称为牛顿迭代法的迭代公式。可采用如下简单的方法估计误差,给定误差限可采用如下简单的方法估计误差,给定误差限,每,每次迭代后均判断次迭代后均判断|xn-xn-1|0;0;步骤步骤2 2 确定确定a,b为初始隔离区间,为初始隔离区间,f(a).f(
48、b)0,则则x0=a,否则否则x0=b;步骤步骤4 4 x1=x0-f(x0)/f(x0);步骤步骤5 5 若若|xn-xn-1|,则输出近似解则输出近似解x1后退出方程,后退出方程,否则否则x0=x1,返回步骤返回步骤4。122(c)弦截法)弦截法弦截法是用差商弦截法是用差商代替导数代替导数f(xn)获得获得迭代公式。迭代公式。用用 近似代替近似代替f(xn)可得到以下迭代可得到以下迭代公式公式利用上述公式求方程利用上述公式求方程f(x)=0的根的近似值的方法就叫的根的近似值的方法就叫弦截法。弦截法。即对于牛顿法迭代公式即对于牛顿法迭代公式123设方程设方程f(x)=0的一个有根区间的一个有
49、根区间a,b,连接曲线连接曲线A(a,f(a)和和B(b,f(b)得弦得弦AB,令令x0=a,x1=b,得弦得弦AB的方的方程为:程为:A(a,f(a)B(b,f(b)x0=ax1=bx2x3124令令y=0得弦得弦AB与与x轴的交点为轴的交点为以以x2作为方程根的一个近似值,又过曲线作为方程根的一个近似值,又过曲线y=f(x)上上的的两点两点(x1,f(x1)和和(x2,f(x2)做弦,得它与做弦,得它与x轴的交点为轴的交点为以以x3作为方程根的一个新的近似值。这样继续做下去,作为方程根的一个新的近似值。这样继续做下去,得到一般迭代公式。得到一般迭代公式。125弦截法的计算步骤可归纳如下:弦
50、截法的计算步骤可归纳如下:(1)准备:选取初始近似值)准备:选取初始近似值x0和和x1,精度要求精度要求 1,2 和控制迭代次数和控制迭代次数K,K,并计算并计算f(f(x1)和和f(x0),令令K=0。(2)迭代:按公式)迭代:按公式迭代一次得到新近似值迭代一次得到新近似值x2,并计算并计算f(x2)(3)控制:如果)控制:如果|f(x2)|1 或或|x2-x1|,2 则终止则终止迭代迭代x2,就是方程的近似根;否则执行(就是方程的近似根;否则执行(4)(4)修改:如果迭代次数超过预先指定的次数)修改:如果迭代次数超过预先指定的次数K,则方法失败;否则以则方法失败;否则以(x1,f(x1)和