Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-12-14
帖子: 1
声望力: 0 ![]() |
![]()
在matlab窗口输入如下:
syms x; f=x^2-x+2; [x,mf]=min(f,x,-1,3) 其中自定义函数代码如下: function [x,minf]=min(f,var,a1,a2) %f是输入函数 %var是函数自变量 %a1、a2是自变量区间 format long; eps=1e-6; x2=a1+0.618*(a2-a1); f2=subs(f,var,x2); x1=a1+0.382*(a2-a1); f1=subs(f,var,x1); n=29; while n if f1<f2 a2=x2; x2=x1; f2=f1; x1=a1+0.382*(a2-a1); f1=subs(f,var,x1); else if f1==f2 a1=x1; a2=x2; x2=a1+0.618*(a2-a1); f2=subs(f,var,x2); x1=a1+0.382*(a2-a1); f1=subs(f,var,x1); else f1>f2 a1=x1; x1=x2; f1=f2; x2=a1+0.618*(a2-a1); f2=subs(f,var,x2); end end if n==1 break; end n=n-1; end x=x1; minf=x2; format short; 运行无错,得出[x,minf]的结果也没有错。但是更改n的值,从1到28,会发现: n=1时,窗口输出x,minf的值 n=2时,输出ans=1,x和minf的值 n=3时,输出ans=1,x和minf的值 n=4时,输出ans=1,ans=1,x和minf的值 以此类推,每逢n等于偶数时,ans=1的个数就增加一个, 到n=28时,输出了14个ans=1,然后才是x和minf的值 我实在不知道哪里出了问题,怎么会有这种输出,请高人解答~~谢谢 |
![]() |
![]() |