Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-06-08
帖子: 3
声望力: 0 ![]() |
![]()
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) |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-03-16
年龄: 38
帖子: 8
声望力: 0 ![]() |
![]()
是不是一次后就使跳出了循环条件了。你把fun1也附上吧
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-06-08
帖子: 3
声望力: 0 ![]() |
![]()
您好,这是那个函数function y=fun1(x)
y=x^2-6*x+9 我觉得好像一步也没执行,就算了个初值的。 |
![]() |
![]() |
![]() |
#4 |
普通会员
注册日期: 2009-02-22
帖子: 91
声望力: 18 ![]() |
![]()
没问题的,循环13次,
y = 3.2948e-006 估计是你的fun1没在当前工作目录下!!! |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2009-06-08
帖子: 3
声望力: 0 ![]() |
![]()
非常感谢上面的两位,我仔细看了一下是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 |
![]() |
![]() |