内容发布更新时间 : 2025/2/7 13:56:23星期一 下面是文章的全部内容请认真阅读。
第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