MATLAB教程2012a第6章习题解答-张志涌 下载本文

内容发布更新时间 : 2024/5/5 2:00:32星期一 下面是文章的全部内容请认真阅读。

第6章 M文件和句柄函数

习题6及解答

1 请

分别写出用

for 和while 循环语句计算

1000000K??0.2i?1?0.2?0.22??0.21000000的程序。此外,还请写出

i?0避免循环的数值、符号计算程序。

〖解答〗 (1)for 环

tic s1=0;

for k=0:1e6 s1=s1+0.2^(k); end; s1 toc s1 =

1.2500

Elapsed time is 1.453482 seconds.

(2)while环

tic

s2=1;k=1;

while k<1e6+1 %注意:上限与for环不同 s2=s2+0.2^k; k=k+1; end s2 toc s2 =

1.2500

Elapsed time is 2.716870 seconds.

(3)数值求和指令

tic

s3=sum(0.2.^(0:1e6)) toc s3 =

1.2500

Elapsed time is 0.626723 seconds.

(4)符号求和指令

tic

syms k;

s4=vpa(symsum(0.2^k,0,1e6)) toc s4 =

1

1.2500000000000000000000000000000 Elapsed time is 4.029501 seconds.

〖说明〗

? 使用数值求和指令和“数组运算”的计算速度最快。 ? 符号计算的精度最高,但速度慢。 ? 以上程序运行时间仅供参考。具体时间与所用机器、那程序是否初次运行、在MATLAB

指令窗还是在M-book中运行等因素有关。

2 编写一个函数

M文件,它的功能:没有输入量时,画出单位圆

(见图p6.2-1);输入量是大于2的自然数N时,绘制正N边形,图名应反映显示多边形的真实边数(见图p6.2-2);输入量是“非自然数”时,给出“出错提示”。此外,函数M文件应有H1行、帮助说明和程序编写人姓名。

〖解答〗

(1)函数M文件

function prob_solve602(n)

% prob_solve602(n) plot a circle or a polygon with n edges % prob_solve602 plot a circle % n 应为大于2的自然数

% By ZZY, 2006-2-15 if 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);

str=['Polygon with ', int2str(n),' edges']; % 合成字符串 end

plot(real(x),imag(x),'r','LineWidth',4) title(str)

axis square image off shg

(2)各典型运行情况

prob_solve602

2

Circle图 p6.2-1

prob_solve602(6) Polygon with 6 edges图 p6.2-2

prob_solve602(2)

??? Error using ==> prob_solve602 输入量应是大于2的自然数

prob_solve602(7.3)

??? Error using ==> prob_solve602 输入量应是大于2的自然数

3 用泛函指令

fminbnd求y(x)??e?x|sin[cosx]|在x=0附近的极小

值。fminbnd的第一个输入量要求使用匿名函数表达。

〖解答〗

(1)在0附近的较小区间 [-0.5, 0.5]内搜索

3