MATLAB教程2012a第6演习问题解答-xfdyet
页面
PAGE 1
m文件和句柄函数
演习问题6和答案
请分别编写用for和while的循环语句计算的程序。 另外,请编制避免循环的数值符号计算程序。
)解答
)1) for环
tic
s1=0;
for k=0:1e6
S1=S10.2^(k;
结束;
s1
东京国际机场
s1=
1.2500
elapsed time is 1.453482第二次连接。
)2)车轮环
tic
s2=1; k=1;
注意while k1e6 1% :上限与for环不同
s2=s2 0.2^k;
k=k 1;
结束
s2
东京国际机场
s2=
1.2500
封装时间is 2.716870 seconds。
(3)数值加法指令
tic
S3=sum(0.2.^ ) 0:1E6 )
东京国际机场
s3=
1.2500
elapsed time is 0.626723第二次连接。
(4)符号加法指令
tic
syms k;
S4=VPA(symsum ) 0.2^k,0,1 E6 ) )
东京国际机场
s4=
1.2500000000000000000000000000000000000000000
elapsed time is 4.029501第二次连接。
(说明
使用数值加法指令和“数组运算”,计算速度最快。
符号计算的精度最高,但速度慢。
以上程序的执行时间仅供参考。 具体时间取决于使用的计算机、该程序是否首次运行、是否在MATLAB命令窗口中运行、是否在M-book中运行等因素。
建立函数m文件,其功能:无输入量时画单位圆()见图p6.2-1 ); 输入量为大于2的自然数n时,画正n边形,图名应反映显示多边形的真边数(见图p6.2-2 ); 输入量为“非自然数”时,发出“错误提示”。 此外,函数m文件需要H1行、帮助说明和程序创建者的名字。
)解答
(1)函数m文件
功能prob _ solve 602 (n )
%prob_solve602(n ) plotacircleorapolygonwithnedges
% 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的自然数) ) )。
结束;
ifn-round(n ) )=0%非自然数检验
error (输入量为大于2的自然数) ) )。
结束;
t=(03360n )/n*2*pi;
x=exp(I*t );
str=['Polygon with ',int2str(n ),' edges']; %合成字符串
结束
plot(real ) x、imag(x ) x、' r '、' LineWidth '、4 ) ) ) )。
是标题(str )
axis square image off
shg
)2)各项典型运行情况
prob_solve602
图p6.2-1
prob_solve602(6)
图p6.2-2
prob_solve602(2)
? Error using==prob_solve602
输入量必须是大于2的自然数
prob_solve602(7.3 )
? Error using==prob_solve602
输入量必须是大于2的自然数
用泛函指令fminbnd求出x=0附近的极小值。 fminbnd的最初输入量需要用匿名函数表现。
)解答
(1)在0附近的小区间(-0.5,0.5 )内搜索
y=@(x )-exp(-x ).*ABS(sin ) cos(x ) );
[x1,y1]=fminbnd(y,- 0.5,0.5 ) )。
x1=
-0.4999
y1=
-1.2681
)2)搜索包含0的更大区间
在[-0.5,0.5 ]区间搜索到的极小值点位于该搜索区间的边界上,因此搜索区间应该进一步扩大。
[x2,y2]=fminbnd(y,- 1,1 ) )。
x2=
-0.8634
y2=
-1.4348
(说明
[-1,1 ]区间中的检索结果是区间内的点。 如果进一步扩大搜索区间,则只能找到比0更远的极小值的点,所以不需要进一步搜索。
matlab的toolboxmatlabelmatprivate