(11)break语句和continue语句
与循环结构相关的语句还有break语句和continue语句.它们一般与if语句配合使用.
break语句用于终止循环的执行.当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句.
continue语句控制跳过循环体中的某些语句.当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环. (12)循环的嵌套
如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构.
(13)函数文件的基本结构
函数文件由function语句引导,其基本结构为 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句
其中以function开头的一行为引导行,表示该M文件是一个函数文件.函数名的命名规则与变量名相同.输入形参为函数的输入参数,输出形参为函数的输出参数.当输出形参多于一个时,则应该用方括号括起来. (14)函数调用
函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错.函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能.
在MATLAB中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身.一个函数调用它自身称为函数的递归调用. (15)函数参数的可调性
在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数.只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理.
(16)全局变量与局部变量
全局变量用global命令定义,格式为: global 变量名 (17)程序调试
Debug菜单项:
该菜单项用于程序调试,需要与Breakpoints菜单项配合使用. Breakpoints菜单项:
该菜单项共有6个菜单命令,前两个是用于在程序中设置和清除断点的,后4个是设置停止条件的,用于临时停止M文件的执行,并给用户一个检查局部变量的机会,相当于在M文件指定的行号前加入了一个keyboard命令.
调试命令:
除了采用调试器调试程序外,MATLAB还提供了一些命令用于程序调试.命令的功能和调试器菜单命令类似,具体使用方法请读者查询MATLAB帮助文档.
16
1 绪论 1.1 例题解答
例1.1 计算sinx,x?[0,?4].
解:
创建符号函数: >> syms x; >>f=sym('sin(x)') f = sin(x)
展开至7阶泰勒级数: >> h=taylor(f,8,0) h =
x-1/6*x^3+1/120*x^5-1/5040*x^7 求泰勒级数在x?0.5处的函数值: >> subs(h,x,0.5) ans =
0.479425533234127 也可以通过内联函数来求解: >>H=inline(h) H =
Inline function:
H(x) = x-1./6.*x.^3+1./120.*x.^5-1./5040.*x.^7>>feval(H,0.5) ans =
0.479425533234127
例 1.2 计算积分值I??1101?xdx. 解:
解法一:( 符号法): >> I=int('1/(1+x)','x',0,1) I = log(2)
解法二 :(数值法):
>>x=0:0.2:1; %将[0,1]等分为4等份
>>f=1./(1+x); %分别计算每一个等分点的函数值 >>I=0;
>>for i=1:5
17
I=I+(f(i)+f(i+1))/2*0.2; %将每一小曲边的梯形累加起来作为积分值 End
>> vpa(I,9) %取结果的小数精度为9位小数 ans =
.695634921 例 1.3略
例 1.4 不用开平方根计算a(a?0)的值. 解:
解法一(符号法): >> A=sym('a'); >> sqrt(A) ans = a^(1/2)
解法二(数值法):
按以下迭代公式迭代计算近似值:
x12(xak?1?k?x),k?0,1,2,...
k建立函数文件msqrt.m
function x=msqrt(x0,a) %用迭代法近似计算平方根 %x0为初始迭代值,a为开平方数
format long; x=zeros(20,1); x(1)=x0; for i=2:20
x(i)=1/2*(x(i-1)+a/x(i-1)); end
disp(x);
用编写的函数计算3,x0?2: >> msqrt(2,3);
2.000000000000000 1.750000000000000 1.732142857142857 1.732050810014727 1.732050807568877
18
1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877 1.732050807568877
上述结果为迭代过程计算的中间结果,分析数据可知迭代收敛速度快,只需四次计算即可计算出较为准确的数值.
例 1.5 略.
11?例 1.6 计算,视已知数为精确数,用4位浮点数计算. 759760解:
直接在Matlab中输入式子: >> 1/759-1/760 ans =
1.7336e-006
若先转化为浮点数再运算可得: >> a=1/759,b=1/760,a-b a =
0.0013 b =
0.0013 ans =
1.7336e-006
可见Matlba在计算时,数据结构都取为双精度而提高了运算准确度.若以符号运算计算之,有:
>> a=sym('1/759'),b=sym('1/760'),c=a-b a = 1/759 b = 1/760 c =
1/576840
可见符号运算准确但耗费运算时间.
19
例 1.7 略.
例 1.8 解方程x2?18x?1?0. 解:
符号法解方程:
>> x=solve('x^2-18*x+1','x') x =
9+4*5^(1/2) 9-4*5^(1/2)
将结果保留小数点6位: >> vpa(x,6) ans =
17.9443 .5572e-1
1.2 Matlab中数值计算精度
1. Matlab中有三种运算精度,它们分别为数值算法、符号算法和可控精度算法,将它们分别介绍如下:
(1) 数值算法把每个数取为16位,计算按浮点运算进行,它是运算速度最快的一种算法.
(2) 符号算法把每个数都变为符号量,运算按有理量计算进行,它的优点是能够得到精确结果,缺点是占用空间大,并且运算速度最慢.
(3) 可控精度算法介于上述两种算法之间,它能够使运算在可控的精度下进行计算.
2. Matlab的数据显示格式,列表如下:
表 Matlab数据显示格式命令 命令 意义 举例(?) format short 短格式方式,显示5位定点十进制3.1416 数 format long 长格式方式,显示15位定点十进3.141592653589793 制数 format short e 3.1416e+000 最优化短格式显示,5位加指数 format long e 3.141592653589793e+000 最优格式,15位加指数 format short g 3.1416 5位定点或浮点格式 format long g 对双精度,显示15位定点或浮点3.14159265358979 格式,对单精度,显示7位定点或浮点格式 format short eng 至少5位加3位指数 3.1416e+000
20