《MATLAB程序设计13915》由会员分享,可在线阅读,更多相关《MATLAB程序设计13915(59页珍藏版)》请在金锄头文库上搜索。
1、MATLAB程序设计程序设计M文件文件程序控制结构程序控制结构函数文件函数文件程序举例程序举例程序调试程序调试1M文件文件M文件概述文件概述 用用MATLAB语言编写的程序,称为语言编写的程序,称为M文件。文件。M文件可以根据调用方式的不同分为两文件可以根据调用方式的不同分为两类:类:命令文件命令文件(Script File)和函数文件和函数文件(Function File)。2例例 分别建立命令文件和函数文件,将华氏温分别建立命令文件和函数文件,将华氏温度度f转换为摄氏温度转换为摄氏温度c。程序程序1: 首先建立命令文件并以文件名首先建立命令文件并以文件名f2c.m存盘。存盘。clear;
2、%清除工作空间中的变量清除工作空间中的变量f=input(Input Fahrenheit temperature:);c=5*(f-32)/9 run chxu1Input Fahrenheit temperature: 89c = 31.66673程序程序2:首先建立函数文件首先建立函数文件f2c.m。function c=f2c(f)c=5*(f-32)/9;然后在然后在MATLAB的命令窗口调用该函数文件。的命令窗口调用该函数文件。 clear; y=input(Input Fahrenheit temperature:);Input Fahrenheit temperature:89
3、 x=f2c(y)x = 31.66674M M文件的建立与打开文件的建立与打开 M文件是一个文本文件,它可以用任何编辑程序文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器。提供的文本编辑器。1建立新的建立新的M文件文件 为建立新的为建立新的M文件,启动文件,启动MATLAB文本编辑器有文本编辑器有3种方法:种方法: (1) 菜单操作。从菜单操作。从MATLAB主窗口的主窗口的File菜单中菜单中选择选择New菜单项,再选择菜单项,再选择M-file命令,屏幕上将出命令,屏幕上将出现现MAT
4、LAB 文本编辑器窗口。文本编辑器窗口。 (2) 命令操作。在命令操作。在MATLAB命令窗口输入命令命令窗口输入命令edit,启动,启动MATLAB文本编辑器后,输入文本编辑器后,输入M文件文件的内容并存盘。的内容并存盘。 (3) 命令按钮操作。单击命令按钮操作。单击MATLAB主窗口工具栏主窗口工具栏上的上的New M-File命令按钮,启动命令按钮,启动MATLAB文本编文本编辑器后,输入辑器后,输入M文件的内容并存盘。文件的内容并存盘。52打开已有的打开已有的M文件文件 打开已有的打开已有的M文件,也有文件,也有3种方法:种方法: (1) 菜单操作。从菜单操作。从MATLAB主窗口的主
5、窗口的File菜菜单中选择单中选择Open命令,则屏幕出现命令,则屏幕出现Open对话对话框,在框,在Open对话框中选中所需打开的对话框中选中所需打开的M文文件。在文档窗口可以对打开的件。在文档窗口可以对打开的M文件进行编文件进行编辑修改,编辑完成后,将辑修改,编辑完成后,将M文件存盘。文件存盘。 (2) 命令操作。在命令操作。在MATLAB命令窗口输入命令窗口输入命令:命令:edit 文件名,则打开指定的文件名,则打开指定的M文件。文件。 (3) 命令按钮操作。单击命令按钮操作。单击MATLAB主窗口主窗口工具栏上的工具栏上的Open File命令按钮,再从弹出命令按钮,再从弹出的对话框中
6、选择所需打开的的对话框中选择所需打开的M文件。文件。6程序控制结构程序控制结构顺序结构顺序结构1数据的输入数据的输入从键盘输入数据,则可以使用从键盘输入数据,则可以使用input函数来进函数来进行,该函数的调用格式为:行,该函数的调用格式为: A=input(提示信息,选项提示信息,选项);其中提示信息为一个字符串,用于提示用户其中提示信息为一个字符串,用于提示用户输入什么样的数据。输入什么样的数据。 如果在如果在input函数调用时采用函数调用时采用s选项,则允选项,则允许用户输入一个字符串。例如,想输入一许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令:个人的姓名,可采用命令:x
7、m=input(Whats your name?,s);72数据的输出数据的输出 MATLAB提供的命令窗口输出函提供的命令窗口输出函数主要有数主要有disp函数,其调用格式为函数,其调用格式为 disp(输出项输出项)其中输出项既可以为字符串,也可其中输出项既可以为字符串,也可以为矩阵。以为矩阵。8 例例 输入输入x,y的值,并将它们的值互换后输出。的值,并将它们的值互换后输出。 程序如下:程序如下: x=input(Input x please.); y=input(Input y please.); z=x; x=y; y=z; disp(x); disp(y);Input x plea
8、se.4Input y please.5 5 49例例 求一元二次方程求一元二次方程ax2 +bx+c=0的根。的根。程序如下:程序如下:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);a=?9b=?13c=?2x1=-0.17506,x2=-1.269410程序的暂停程序的暂停 暂停程序的执行可以使用暂停程序的执行可以使用pause函数,函数,其调用格式为:其调用格式为: pause(延
9、迟秒数延迟秒数) 如果省略延迟时间,直接使用如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后则将暂停程序,直到用户按任一键后程序继续执行。程序继续执行。 若要强行中止程序的运行可使用若要强行中止程序的运行可使用Ctrl+C命令。命令。11选择结构选择结构1if语句语句 在在MATLAB中,中,if语句有语句有3种格式。种格式。 (1) 单分支单分支if语句:语句:if 条件条件 语句组语句组 end当条件成立时,则执行语句组,执行完之后当条件成立时,则执行语句组,执行完之后继续执行继续执行if语句的后继语句,若条件不成立,语句的后继语句,若条件不成立,则直接则直接执行执行
10、if语句的后继语句语句的后继语句。12 (2) 双分支双分支if语句:语句:if 条件条件 语句组语句组1 else 语句组语句组2 end 当条件成立时,执行语句组当条件成立时,执行语句组1,否则执行语,否则执行语句组句组2,语句组,语句组1或语句组或语句组2执行后,再执行执行后,再执行if语句的后继语句。语句的后继语句。13 例例 计算分段函数的值。计算分段函数的值。 程序如下:程序如下:x=input(请输入请输入x的值的值:);if x=A & c=a& c=0& c=9 disp(abs(c)-abs(0);else disp(c);endPlease input a charsSP
11、lease input a char:sSPlease input a char:TtPlease input a char:45 4 5Please input a char:5 5Please input a char:!162switch语句语句 switch语句根据表达式的取值不同,分别执行不语句根据表达式的取值不同,分别执行不同的语句,其语句格式为:同的语句,其语句格式为: switch 表达式表达式 case 表达式表达式1 语句组语句组1 case 表达式表达式2 语句组语句组2 case 表达式表达式m 语句组语句组m otherwise 语句组语句组n end17当表达式的值
12、等于当表达式的值等于表达式表达式1的值时,的值时,执行语句组执行语句组1,当表达式的值等于,当表达式的值等于表达式表达式2的值时,执行语句组的值时,执行语句组2,当表达式的值等于表达式,当表达式的值等于表达式m的值的值时,执行语句组时,执行语句组m,当表达式的值,当表达式的值不等于不等于case所列的表达式的值时,所列的表达式的值时,执行语句组执行语句组n。当任意一个分支的。当任意一个分支的语句执行完后,语句执行完后,直接执行直接执行switch语语句的下一句。句的下一句。18例例 某商场对顾客所购买的商品实行打折销售,某商场对顾客所购买的商品实行打折销售,标准如下标准如下(商品价格用商品价格
13、用price来表示来表示): price200 没有折扣没有折扣 200price500 3%折扣折扣 500price1000 5%折扣折扣 1000price2500 8%折扣折扣 2500price 5690ans = 5690Please input the number:12price = 12213try语句语句语句格式为:语句格式为:try 语句组语句组1catch 语句组语句组2endtry语句先试探性执行语句组语句先试探性执行语句组1,如果语句组,如果语句组1在执行过程中出现错误,则将错误信息赋在执行过程中出现错误,则将错误信息赋给保留的给保留的lasterr变量,并转去执行
14、语句组变量,并转去执行语句组2。22例例 矩阵乘法运算要求两矩阵的维数相容,否则会出矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。两矩阵的点乘。程序如下:程序如下:A=1,2,3;4,5,6; B=7,8,9;10,11,12;try C=A*B;catch C=A.*B;endClasterr %显示出错原因显示出错原因23A = 1 2 3 4 5 6B = 7 8 9 10 11 12C = 7 16 27 40 55 72ans =Error using = mtimesInner matri
15、x dimensions must agree.24循环结构循环结构1for语句语句for语句的格式为:语句的格式为:for 循环变量循环变量=表达式表达式1:表达式表达式2:表达式表达式3 循环体语句循环体语句 end其中表达式其中表达式1的值为循环变量的初值,表达式的值为循环变量的初值,表达式2的值为步长,表达式的值为步长,表达式3的值为循环变量的的值为循环变量的终值。步长为终值。步长为1时,表达式时,表达式2可以省略。可以省略。25例例 一个三位整数各位数字的立方和等于该数本身则一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。称该数为水仙花数。输出全部水仙花
16、数。 程序如下:程序如下:for m=100:999m1=fix(m/100); %求求m的百位数字的百位数字m2=rem(fix(m/10),10); %求求m的十位数字的十位数字m3=rem(m,10); %求求m的个位数字的个位数字if m=m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m)endend153 370 371 40726例例 已知已知 ,当,当n=100时,求时,求y的值。的值。 程序如下:程序如下:y=0;n=100;for i=1:n y=y+1/(2*i-1);endyy = 3.284327 在实际在实际MATLAB编程中,采用循环语句会编程中,采
17、用循环语句会降低其执行速度,所以前面的程序通常由降低其执行速度,所以前面的程序通常由下面的程序来代替:下面的程序来代替:n=100;i=1:2:2*n-1;y=sum(1./i);y28for语句更一般的格式为:语句更一般的格式为: for 循环变量循环变量=矩阵表达式矩阵表达式 循环体语句循环体语句 end 执行过程是依次将矩阵的各列元执行过程是依次将矩阵的各列元素赋给循环变量(按行)素赋给循环变量(按行),然后执,然后执行循环体语句,直至各列元素处理行循环体语句,直至各列元素处理完毕。完毕。29 例例 写出下列程序的执行结果。写出下列程序的执行结果。 s=0; a=12,13,14;15,
18、16,17;18,19,20;21,22,23; for k=a s=s+k; end disp(s);39 48 57 66302while语句语句 while语句的一般格式为:语句的一般格式为: while (条件条件) 循环体语句循环体语句 end 其执行过程为:若条件成立,则执行其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。成立,如果不成立则跳出循环。31 例例 从键盘输入若干个数,当输入从键盘输入若干个数,当输入0时结束输入,求这些数时结束输入,求这些数的平均值和它们之和。的平均值和它们之和。程序如下:程序
19、如下:sum=0;cnt=0;val=input(Enter a number (end in 0):);while (val=0) sum=sum+val; cnt=cnt+1; val=input(Enter a number (end in 0):);endif (cnt 0) sum mean=sum/cntend323break语句和语句和continue语句语句 与循环结构相关的语句还有与循环结构相关的语句还有break语句和语句和continue语句。它们一般与语句。它们一般与if语句配合使用。语句配合使用。break语句用于终止循环的执行。当在循环体语句用于终止循环的执行。当在
20、循环体内执行到该语句时,程序将跳出循环,继内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。续执行循环语句的下一语句。continue语句控制跳过循环体中的某些语句。语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次过循环体中所有剩下的语句,继续下一次循环。循环。33例例 求求100,200之间第一个能被之间第一个能被21整除的整整除的整数。数。程序如下:程序如下:for n=100:200if rem(n,21)=0 continueendbreakendnn = 105344循环的嵌套循环
21、的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。循环的嵌套,或称为多重循环结构。 例例 若一个数等于它的各个真因子之和,则称该数为完数,若一个数等于它的各个真因子之和,则称该数为完数,如如6=1+2+3,所以,所以6是完数。求是完数。求1,500之间的全部完数。之间的全部完数。for m=1:500s=0;for k=1:m/2if rem(m,k)=0s=s+k;endendif m=s disp(m);endend6 28 496 6 28 49635函数文件函数文件函数文件的基本结构函数文件的基本
22、结构 函数文件由函数文件由function语句引导,其基本结构为:语句引导,其基本结构为: function 输出形参表输出形参表=函数名函数名(输入形参表输入形参表) 注释说明部分注释说明部分 函数体语句函数体语句其中以其中以function开头的一行为引导行,表示该开头的一行为引导行,表示该M文件文件是一个函数文件。是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。的输入参数,输出形参为函数的输出参数。当输当输出形参多于一个时,则应该用方括号括起来出形参多于一个时,则应该用方括号括起来。36 例例
23、编写函数文件求半径为编写函数文件求半径为r的圆的面积和的圆的面积和周长。周长。 函数文件如下:函数文件如下: function s,p=fcircle(r)%CIRCLE calculate the area and perimeter of a circle of radii r%r 圆半径圆半径%s 圆面积圆面积%p 圆周长圆周长%2010年年7月月11日日s=pi*r*r;p=2*pi*r; fcircle(2)ans = 12.5664 fcircle(1)ans = 3.1416 s,p=fcircle(1)s = 3.1416p = 6.283237 函数调用函数调用函数调用的一般
24、格式是:函数调用的一般格式是: 输出实参表输出实参表=函数名函数名(输入实参表输入实参表) 要注意的是,函数调用时各实参出现的顺要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。传递,然后再执行函数的功能。38 例例 利用函数文件,实现直角坐标利用函数文件,实现直角坐标(x,y)与极坐标与极坐标(,)之间的转换。之间的转换。 函数文件函数文件tran.m:functi
25、on rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x); 调用调用tran.m的命令文件的命令文件main1.m:x=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rhothe 在在MATLAB中,函数可以嵌套调用,即一个函数可以调中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身。一个函数调用它自身称为用别的函数,甚至调用它自身。一个函数调用它自身称为函数的递归调用。函数的递归调用。 rho, the=tran(1,2)rho = 2
26、.2361the = 1.107139 例例 利用函数的递归调用,求利用函数的递归调用,求n!。!。 n!本身就是以递归的形式定义的:本身就是以递归的形式定义的:显然,求显然,求n!需要求需要求(n-1)!,这时可采用递归调,这时可采用递归调用。递归调用函数文件用。递归调用函数文件factor.m如下:如下:function f=factor(n)if n fout=charray(1)fout = 1 fout=charray(1,2)fout = 3 fout=charray(1,2,3)fout = 342全局变量全局变量全局变量用全局变量用global命令定义,格式为:命令定义,格式为
27、:global 变量名变量名 例例 全局变量应用示例全局变量应用示例 先建立函数文件先建立函数文件wadd.m,该函数将输入的参数加权相加。,该函数将输入的参数加权相加。function f=wadd(x,y)global ALPHA BETAf=ALPHA*x+BETA*y; 在命令窗口中输入:在命令窗口中输入:global ALPHA BETAALPHA=1;BETA=2;s=wadd(1,2) global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2)s = 543注注 函数文件的放置位置,一般自己的函数文件放在函数文件的放置位置,一般自己的函数文件放在
28、当前目录;当前目录;如果对一个专题有了足够多的函数,如果对一个专题有了足够多的函数,可以生成一个工具箱可以生成一个工具箱,放在一个固定的目录下,放在一个固定的目录下,并在并在MATLAB中加入这个目录路径即可。中加入这个目录路径即可。使用函数可以加快计算速度。使用函数可以加快计算速度。MATLAB首次执行首次执行一个函数时,它将打开的文件编译为存储器内部一个函数时,它将打开的文件编译为存储器内部形式,加速了执行速度。普通的形式,加速了执行速度。普通的m文件不被编译,文件不被编译,在每次编译时,文件将逐行解释执行。在每次编译时,文件将逐行解释执行。函数的前一部分注释为帮助行,在使用函数的前一部分
29、注释为帮助行,在使用help命令命令时看得到这些注释行,所以,写函数时最好先添时看得到这些注释行,所以,写函数时最好先添加函数的功能注释。加函数的功能注释。44函数可以按少于函数函数可以按少于函数M 文件中所规定的输入和输出文件中所规定的输入和输出变量进行调用,但不能用多于函数变量进行调用,但不能用多于函数M 文件中所规定文件中所规定的输入和输出变量数目。如果输入和输出变量数目的输入和输出变量数目。如果输入和输出变量数目多于函数多于函数M 文件中文件中function 语句一开始所规定的数语句一开始所规定的数目,则调用时自动返回一个错误。目,则调用时自动返回一个错误。当调用一个函数时,所用的输
30、入和输出的参量的数当调用一个函数时,所用的输入和输出的参量的数目,在函数内是规定好的。函数工作空间变量目,在函数内是规定好的。函数工作空间变量nargin 包含输入参量个数;函数工作空间变量包含输入参量个数;函数工作空间变量nargout 包含输出参量个数。包含输出参量个数。45函数有它们自己的专用工作空间,它与函数有它们自己的专用工作空间,它与MATLAB 的工作空间分开。的工作空间分开。函数内变量与函数内变量与MATLAB 工作空工作空间之间唯一的联系是函数的输入和输出变量间之间唯一的联系是函数的输入和输出变量。如果函数任一输入变量值发生变化,其变化仅在如果函数任一输入变量值发生变化,其变
31、化仅在函数内出现,不影响函数内出现,不影响MATLAB 工作空间的变量。工作空间的变量。函数内所创建的变量只驻留在函数的工作空间,函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消失。而且只在函数执行期间临时存在,以后就消失。因此,从一个调用到下一个调用,在函数工作空因此,从一个调用到下一个调用,在函数工作空间变量存储信息是不可能的。间变量存储信息是不可能的。 46如果变量说明是全局的如果变量说明是全局的,函数可以与其它函数、函数可以与其它函数、MATLAB 工作空间和递归调用本身共享变量。为工作空间和递归调用本身共享变量。为了在函数内或了在函数内或MATLAB
32、工作空间中访问全局变量,工作空间中访问全局变量,变量必须说明是全局的。变量必须说明是全局的。 实际编程中,应尽量避免使用全局变量。实际编程中,应尽量避免使用全局变量。建议全建议全局变量名要长局变量名要长,包含大写字母,并有选择地以首,包含大写字母,并有选择地以首次出现的次出现的M 文件的名字开头,可以使全局变量之文件的名字开头,可以使全局变量之间不必要的互作用减至最小。间不必要的互作用减至最小。 47从函数从函数M 文件内可以调用脚本文件。在这种情文件内可以调用脚本文件。在这种情况下,脚本文件查看函数工作空间,不查看况下,脚本文件查看函数工作空间,不查看MATLAB 工作空间。从函数工作空间。
33、从函数M 文件内调用的文件内调用的脚本文件不必用调用函数编译到内存。函数每脚本文件不必用调用函数编译到内存。函数每调用一次,它们就被打开和解释。因此,从函调用一次,它们就被打开和解释。因此,从函数数M 文件内调用脚本文件减慢了函数的执行。文件内调用脚本文件减慢了函数的执行。48MATLAB 函数函数error 在命令窗口显示一个在命令窗口显示一个字符串,放弃函数执行,把控制权返回给字符串,放弃函数执行,把控制权返回给键盘。这个函数对提示函数使用不当很有键盘。这个函数对提示函数使用不当很有用,如在以下文件片段中:用,如在以下文件片段中:if length(val)1error( VAL must
34、 be a scalar. )enderror 显示消息字符串,把控制权返回给命显示消息字符串,把控制权返回给命令窗口和键盘。令窗口和键盘。49程序举例程序举例例例 猜数游戏。首先由计算机产生猜数游戏。首先由计算机产生1,100之间的随机整数,然后由用户之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大的情况给出不同提示,如猜测的数大于产生的数,则显示于产生的数,则显示“High”,小于,小于则显示则显示“Low”,等于则显示,等于则显示“You won”,同时退出游戏。用户最多可以,同时退出游戏。用户最多可以猜猜7次。次
35、。50%Play the game of guess the numberx=fix(100*rand); %a random number calculated by the computern=7;test=1;for k=1:7 numb=int2str(n); disp(You have a right to ,numb, guesses) disp(A guess is a number between 0 and 100) guess=input(Enter your guess:); if guessx disp(High) else disp(You won) test=0;
36、break; end n=n-1;endif test=1 disp(You lost)end51You have a right to 7 guessesA guess is a number between 0 and 100Enter your guess:9LowYou have a right to 5 guessesA guess is a number between 0 and 100Enter your guess:93LowYou have a right to 4 guessesA guess is a number between 0 and 100Enter your
37、 guess:90LowYou have a right to 3 guessesA guess is a number between 0 and 100Enter your guess:98HighYou have a right to 2 guessesA guess is a number between 0 and 100Enter your guess:96HighYou have a right to 1 guessesA guess is a number between 0 and 100Enter your guess:95You won52例例 用筛选法求某自然数范围内的
38、全部素数。用筛选法求某自然数范围内的全部素数。 素数是大于素数是大于1,且除了,且除了1和它本身以外,不能被其和它本身以外,不能被其他任何整数所整除的整数。他任何整数所整除的整数。用筛选法求素数的基本思想是:要找出用筛选法求素数的基本思想是:要找出2m之间的之间的全部素数,首先在全部素数,首先在2m中划去中划去2的倍数的倍数(不包括不包括2),然后划去,然后划去3的倍数的倍数(不包括不包括3),由于,由于4已被划去,已被划去,再找再找5的倍数的倍数 (不包括不包括5),直到再划去不超过,直到再划去不超过的数的倍数,剩下的数都是素数。的数的倍数,剩下的数都是素数。53m=90ans = Colu
39、mns 1 through 14 2 3 5 7 11 13 17 19 23 29 31 37 41 43 Columns 15 through 24 47 53 59 61 67 71 73 79 83 89m=input(m=); p=1:m; p(1)=0;for i=2:sqrt(m) for j=2*i:i:m p(j)=0; endendn=find(p=0);p(n)54例例 求函数求函数f(x)在在a,b上的定积分,其几何意上的定积分,其几何意义就是求曲线义就是求曲线y=f(x)与直线与直线x=a,x=b,y=0所围成的曲边梯形的面积。为了求得曲边所围成的曲边梯形的面积。为了
40、求得曲边梯形面积,先将积分区间梯形面积,先将积分区间a,b分成分成n等分,等分,每个区间的宽度为每个区间的宽度为h=(b-a)/n,对应地将曲,对应地将曲边梯形分成边梯形分成n等分,每个小部分即是一个小等分,每个小部分即是一个小曲边梯形。近似求出每个小曲边梯形面积,曲边梯形。近似求出每个小曲边梯形面积,然后将然后将n个小曲边梯形的面积加起来,就得个小曲边梯形的面积加起来,就得到总面积,即定积分的近似值。近似地求到总面积,即定积分的近似值。近似地求每个小曲边梯形的面积,常用的方法有:每个小曲边梯形的面积,常用的方法有:矩形法、梯形法以及辛普生法等。矩形法、梯形法以及辛普生法等。55s = 0.9
41、008a=0;b=3*pi;n=1000; h=(b-a)/n;x=a; s=0; f0=exp(-0.5*x)*sin(x+pi/6);for i=1:n x=x+h; f1=exp(-0.5*x)*sin(x+pi/6); s=s+(f0+f1)*h/2; f0=f1;ends56Enter X:1 2 3 3;4 5 6 7;2 1 3 4;0 1 2 3E = 1.0e+004 * 0.4439 0.5657 0.9646 1.2285 1.1028 1.4059 2.3964 3.0523 0.4053 0.5165 0.8812 1.1224 0.2568 0.3275 0.558
42、6 0.7117ans = 1.0e+004 * 0.4439 0.5657 0.9646 1.2285 1.1028 1.4059 2.3964 3.0523 0.4053 0.5165 0.8812 1.1224 0.2568 0.3275 0.5586 0.7117X=input(Enter X:);E=zeros(size(X);F=eye(size(X);n=1;while norm(F,1)0 E=E+F; F=F*X/n; n=n+1;endEexpm(X) %调用MATLAB矩阵指数函数求矩阵指数例例 根据矩阵指数的幂级数展开式求矩阵指数。根据矩阵指数的幂级数展开式求矩阵指数。
43、57程序调试程序调试程序调试概述程序调试概述一般来说,应用程序的错误有两类,一类是一般来说,应用程序的错误有两类,一类是语法错误,另一类是运行时的错误。语法语法错误,另一类是运行时的错误。语法错误包括词法或文法的错误,例如函数名错误包括词法或文法的错误,例如函数名的拼写错、表达式书写错等。的拼写错、表达式书写错等。程序运行时的错误是指程序的运行结果有错程序运行时的错误是指程序的运行结果有错误,这类错误也称为程序逻辑错误。误,这类错误也称为程序逻辑错误。58调试器调试器1Debug菜单项菜单项该菜单项用于程序调试,需要与该菜单项用于程序调试,需要与Breakpoints菜单项配合使用。菜单项配合使用。2Breakpoints菜单项菜单项该菜单项共有该菜单项共有6个菜单命令,前两个是用于在个菜单命令,前两个是用于在程序中设置和清除断点的,后程序中设置和清除断点的,后4个是设置停个是设置停止条件的,用于临时停止止条件的,用于临时停止M文件的执行,并文件的执行,并给用户一个检查局部变量的机会,相当于给用户一个检查局部变量的机会,相当于在在M文件指定的行号前加入了一个文件指定的行号前加入了一个keyboard命令。命令。59