China-pub.CoM 第I2章MATLAB程序设计 175 下载 disp(TheText) 运行程序,得到: A= 0.1517 0.6628 0.2098 0.5295 1 ambda1=-0.077395,1 ambda_2=0.7586 其中变量lambda1和lambda2是矩阵A的特征值。 加入一个变量用来计算迭代的次数。注意:如果程序再运行一次,会得到不同的结果。 A rand(2);niter =1; while max(abs(eig(A)))>=1 disp(['Step num2str(niter)]); disp(['Eigenvalues:'num2str(eig(A)',5)]); A rand(2); niter niter +1; end disp(['Final result -step num2str(niter)]); disp(['Eigenvalues:num2str(eig(A)',5)]); 结果是: Step 1 Eigenvalues:1.3871 -0.41031 Step 2 Eigenvalues:-0.18924 1.2166 Step 3 Eigenvalues:1.0151-0.11415 Final result -step 4 Eigenvalues:0.054835 0.95675 (b)函数ln(1+x)的Maclaurin序列为: n(1+x)= k=1 k 用x=O.5带入,并把Maclaurin序列的各项相加,直至要加的下一项系数小于内建变量eps。 计算出所加项的个数。用下面的方法来实现: 1nsum=0;x=0.5;k=1; while abs((x k)/k)>=eps 1nsum=1nsum+(-1)(+1))*((xk)/k); k=k+1; end disp(['The sum =',num2str(Insum),... ’,number of iter=’,num2str(k)]); 给出的结果为:
d i s p ( T h e T e x t ) 运行程序,得到: 其中变量lambda_1 和l a m b d a _ 2是矩阵A的特征值。 加入一个变量用来计算迭代的次数。注意:如果程序再运行一次,会得到不同的结果。 结果是: (b) 函数l n ( 1 +x)的M a c l a u r i n序列为: 用x= 0 . 5带入,并把M a c l a u r i n序列的各项相加,直至要加的下一项系数小于内建变量 e p s。 计算出所加项的个数。用下面的方法来实现: 给出的结果为: 第1 2章 M AT L A B程序设计 1 7 5 下载
176 MATLAB5手册 China-bub.coM 下载 The sum =0.40547,number of iter =47 检验这个结果: 1n=1og(1.5) 1n= 0.4055 ■ 有时在循环正常结束前终止循环是有用的,这可以用命令break来实现。如果break命 令用于嵌套循环的内部循环,那么只能终止内部循环,外部循环仍然继续。 应该尽量避免使用break,因为使用命令break的程序通常不易理解和维护。这样的程 序通常被改写成没有break的程序。 ■例12.6 通过迭代求机器最小正数。 (a)使用break的for循环: macheps 1; fori=1:1000 macheps =macheps/2; if macheps +1 <=1 break end end macheps macheps*2 在Sun SPARC工作站上运行的结果为: macheps 2.2204e-16 (b)未使用break的while循环: macheps =1; while macheps +1 >1 machepsmacheps/2; end macheps macheps*2 ■ 12.3M文件的其他相关内容 在2.9节中介绍了M文件。在本节中将涉及到与M文件相关的其他方面的内容。 in1ine命令可以不用M文件就能创建函数:参见5.1.4节。 MATLAB能处理递归函数。这样的函数能调用本身,但要通过改变一些判断条件以防止 该程序进入死循环
检验这个结果: 有时在循环正常结束前终止循环是有用的,这可以用命令 b r e a k来实现。如果b r e a k命 令用于嵌套循环的内部循环,那么只能终止内部循环,外部循环仍然继续。 应该尽量避免使用 b r e a k,因为使用命令 b r e a k的程序通常不易理解和维护。这样的程 序通常被改写成没有b r e a k的程序。 ■ 例1 2 . 6 通过迭代求机器最小正数。 (a) 使用b r e a k的f o r循环: 在Sun SPA R C工作站上运行的结果为: (b) 未使用b r e a k的w h i l e循环: 12.3 M文件的其他相关内容 在2 . 9节中介绍了M文件。在本节中将涉及到与 M文件相关的其他方面的内容。 i n l i n e命令可以不用M文件就能创建函数;参见5 . 1 . 4节。 M AT L A B能处理递归函数。这样的函数能调用本身,但要通过改变一些判断条件以防止 该程序进入死循环。 1 7 6 M ATLAB 5 手册 下载 ■ ■