MATLAB教程2012a-习题解答-第六章-张志涌-北航_第1页
MATLAB教程2012a-习题解答-第六章-张志涌-北航_第2页
MATLAB教程2012a-习题解答-第六章-张志涌-北航_第3页
MATLAB教程2012a-习题解答-第六章-张志涌-北航_第4页
MATLAB教程2012a-习题解答-第六章-张志涌-北航_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 M文件和句柄函数习题6及解答1 请分别写出用for 和while 循环语句计算的程序。此外,还请写出避免循环的数值、符号计算程序。目的l 练习for环和while环的使用方法。l 避免循环,提高计算速度。l 计时指令tic, toc的用法。解答(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<1e6+1%注意:上限与for环不同s2=s2+0.2k;k=k+1;ends2toc s2

2、 = 1.2500Elapsed time is 2.716870 seconds. (3)数值求和指令tics3=sum(0.2.(0:1e6)toc s3 = 1.2500Elapsed time is 0.626723 seconds. (4)符号求和指令ticsyms k;s4=vpa(symsum(0.2k,0,1e6)toc s4 =1.2500000000000000000000000000000Elapsed time is 4.029501 seconds. 说明l 使用数值求和指令和“数组运算”的计算速度最快。l 符号计算的精度最高,但速度慢。l 以上程序运行时间仅供参考。

3、具体时间与所用机器、那程序是否初次运行、在MATLAB指令窗还是在M-book中运行等因素有关。2 编写一个函数M文件,它的功能:没有输入量时,画出单位圆(见图p6.2-1);输入量是大于2的自然数N时,绘制正N边形,图名应反映显示多边形的真实边数(见图p6.2-2);输入量是“非自然数”时,给出“出错提示”。此外,函数M文件应有H1行、帮助说明和程序编写人姓名。目的l 较完整形式函数M文件的编写。l H1的书写,帮助区内容的组织。l 指令nargin的用法。解答(1)函数M文件function prob_solve602(n)% prob_solve602(n) plot a circle

4、or a polygon with n edges% prob_solve602 plot a circle% n 应为大于2的自然数 % By ZZY, 2006-2-15if nargin=0 t=0:pi/100:2*pi; x=exp(i*t); str='Circle'else if (nargin=0)&(n<=2) error('输入量应是大于2的自然数') end; if n-round(n)=0%检查非自然数 error('输入量应是大于2的自然数') end; t=(0:n)/n*2*pi; x=exp(i*t)

5、; str='Polygon with ', int2str(n),' edges'% 合成字符串endplot(real(x),imag(x),'r','LineWidth',4)title(str)axis square image offshg (2)各典型运行情况prob_solve602 图 p6.2-1prob_solve602(6) 图 p6.2-2prob_solve602(2) ? Error using => prob_solve602输入量应是大于2的自然数 prob_solve602(7.3) ? E

6、rror using => prob_solve602输入量应是大于2的自然数 3 用泛函指令fminbnd求在x=0附近的极小值。fminbnd的第一个输入量要求使用匿名函数表达。目的l 练习匿名函数的表达和使用。l 判断搜索结果是否符合要求。解答(1)在0附近的较小区间 -0.5, 0.5内搜索y=(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

7、=fminbnd(y,-1,1) x2 = -0.8634y2 = -1.4348 说明l 在-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

8、当前目录为work情况下,如何利用函数句柄调用smoke.m函数,产生3阶伪特征根矩阵。请写出相应的程序或操作步骤。目的l 说明:有效函数句柄的创建,必须使被建句柄的那函数在“视野”中。l 利用有效函数句柄,可以在任何地方通过句柄实现对函数的调用。l 了解cd, pwd等指令的应用。 解答(1)创建有效函数句柄,及函数句柄的调用以下程序正确运行的先决条件是:MATLAB的当前目录是work。clearb=pwd%获取当前目录名字符串which('smoke')%检查在当前目录下能否看到smoke.mb_d=b;b_d(end-4:end)=;%在b字符串中去除最后的四个字符,即

9、work。str=b_d,'toolboxmatlabelmatprivate'%构造smoke所在的目录字符串cd(str)%把smoke.m 所在目录设置为当前目录。SM=smoke; %创建smoke.m的函数句柄cd(b)%使work恢复为当前目录disp(' ')%为显示清楚起见,产生一个显示空行。A=SM(3,0,'double')%产生一个3阶“伪特征根”矩阵disp(' ')pwd%显示当前所在目录,以证实符合题意。which('smoke')%再次检查在当前目录下能否看到smoke.m,起证实作用。disp(' ')b =C:MATLAB2006R2006awork'smoke' not found. A = -0.5000 + 0.8660i 1.0000 0 0 -0.5000 - 0.8660i 1.0000 1.0000 0 1.0000 ans =C:MATLAB2006R2006awork&#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论