MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB图像处理] 请大家帮我看一下这个程序为什么不执行while循环体 (https://www.labfans.com/bbs/showthread.php?t=8879)

wenroutianshi 2009-06-08 20:37

请大家帮我看一下这个程序为什么不执行while循环体
 
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

回复: 请大家帮我看一下这个程序为什么不执行while循环体
 
是不是一次后就使跳出了循环条件了。你把fun1也附上吧

wenroutianshi 2009-06-08 22:42

回复: 请大家帮我看一下这个程序为什么不执行while循环体
 
您好,这是那个函数function y=fun1(x)
y=x^2-6*x+9
我觉得好像一步也没执行,就算了个初值的。

TTT_IOU 2009-06-08 23:28

回复: 请大家帮我看一下这个程序为什么不执行while循环体
 
没问题的,循环13次,
y =
3.2948e-006
估计是你的fun1没在当前工作目录下!!!

wenroutianshi 2009-06-09 18:46

回复: 请大家帮我看一下这个程序为什么不执行while循环体
 
非常感谢上面的两位,我仔细看了一下是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


所有时间均为北京时间。现在的时间是 11:12

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.