查看完整版本 : [MATLAB图像处理] 请大家帮我看一下这个程序为什么不执行while循环体
wenroutianshi
2009-06-08, 20:37
a=1
b=7
while b-a>0.01
a1=a+0.382*(b-a)
a2=a+0.618*(b-a)
if fun1(a1)<fun1(a2)
b=a2
a2=a1
a1=a+0.382*(b-a)
else
a=a1
a1=a2
a2=a+0.618*(b-a)
end
x=(b+a)/2
end
y=fun1(x)
barqcf1986
2009-06-08, 20:41
是不是一次后就使跳出了循环条件了。你把fun1也附上吧
wenroutianshi
2009-06-08, 22:42
您好,这是那个函数function y=fun1(x)
y=x^2-6*x+9
我觉得好像一步也没执行,就算了个初值的。
没问题的,循环13次,
y =
3.2948e-006
估计是你的fun1没在当前工作目录下!!!
wenroutianshi
2009-06-09, 18:46
非常感谢上面的两位,我仔细看了一下是while 后面没加括号。大家再帮我看一下这个程序为什么还是出执行while循环体呢,
clc
clear
a0=0.2
b0=1
a1=a0
a3=b0
a2=0.6
c1=(fun2(a3)-fun2(a1))/(a3-a1)
c2=((fun2(a2)-fun2(a1))/(a2-a1)-c1)/(a2-a3)
a=1/2*(a1+a3-c1/c2)
while (abs(a-a2))>0.01
if a>a2
if fun2(a)<fun2(a2)
a3=a
else
a1=a2
a2=a
end
else
if fun2(a)<fun2(a2)
a3=a2
a2=a
else
a1=a
end
end
c1=(fun2(a3)-fun2(a1))/(a3-a1)
c2=((fun2(a2)-fun2(a1))/(a2-a1)-c1)/(a2-a3)
a=1/2*(a1+a3-c1/c2)
end
x=a
函数体是:
function y=fun2(x)
y=x+20/x
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.