1、1第 6 章 M 文件和句柄函数习题 6 及解答1 请分别写出用 for 和 while 循环语句计算的程序。此外,还请写出10210 .02. iiK避免循环的数值、符号计算程序。解答(1)for 环tics1=0;for k=0:1e6s1=s1+0.2(k);end;s1 toc s1 =1.2500Elapsed time is 1.453482 seconds. (2)while 环tics2=1;k=1;while k prob_solve602输入量应是大于 2 的自然数 prob_solve602(7.3) ? Error using = prob_solve602输入量应是大
2、于 2 的自然数 3 用泛函指令 fminbnd 求 在 x=0 附近的极小|sinco|)(xexyx值。fminbnd 的第一个输入量要求使用匿名函数表达。解答(1)在 0 附近的较小区间 -0.5, 0.5 内搜索4y=(x)-exp(-x).*abs(sin(cos(x);x1,y1=fminbnd(y,-0.5,0.5)x1 =-0.4999y1 =-1.2681 (2)在包含 0 的更大区间内搜索在 -0.5, 0.5 区间搜索到的极小值点在该搜索区间的边界上,所以搜索区间应该进一步扩大。x2,y2=fminbnd(y,-1,1) x2 =-0.8634y2 =-1.4348 说明
3、 在-1, 1区间的搜索结果是区间的内点。进一步扩大搜索区间,只可能找到更远离 0 的极小值点,所以没有必要进一步搜索。4 在 matlab 的 toolboxmatlabelmatprivate 文件夹上有一个“烟圈矩阵”发生函数 smoke.m。运行指令 smoke(3,0,double) ,将生成一个 3 阶伪特征根矩阵如下A =-0.5000 + 0.8660i 1.0000 0 0 -0.5000 - 0.8660i 1.0000 1.0000 0 1.0000 现在的问题是:在 MATLAB 当前目录为work 情况下,如何利用函数句柄调用 smoke.m 函数,产生 3 阶伪特征
4、根矩阵。请写出相应的程序或操作步骤。clearb=pwd %获取当前目录名字符串which(smoke) %检查在当前目录下能否看到 smoke.mb_d=b;b_d(end-4:end)=; %在 b 字符串中去除最后的四个字符,即 work。str=b_d,toolboxmatlabelmatprivate; %构造 smoke 所在的目录字符串cd(str) %把 smoke.m 所在目录设置为当前目录。SM=smoke; %创建 smoke.m 的函数句柄cd(b) %使 work 恢复为当前目录disp( ) %为显示清楚起见,产生一个显示空行。A=SM(3,0,double) %产
5、生一个 3 阶“伪特征根”矩阵disp( )pwd %显示当前所在目录,以证实符合题意。which(smoke) %再次检查在当前目录下能否看到 smoke.m,起证实作用。disp( )b =C:MATLAB2006R2006aworksmoke not found.A =-0.5000 + 0.8660i 1.0000 0 0 -0.5000 - 0.8660i 1.0000 1.0000 0 1.0000 5ans =C:MATLAB2006R2006aworksmoke not found. (2)在当前目录下,进行直接调用 smoke.m 的尝试B=smoke(3,0,double) %用来证实:直接调用 smoke 函数将失败的事实 ? Undefined command/function smoke.