function rot=hj(f,a,b,eps) if(nargin=3) eps=1.0e-4; end
fl=subs(sym(0)findsym(sym())a); f2=subs(sym(f),findsym(sym(),b); if(f1==0) root=a; end if(f2==0) root=b; end ifl*f2>0) disp(两端点函数值乘积大于0!); retun; else t1=a+(b-a)*0.382; t2=a+(b-a)*0.618; f_1=subs(sym(f,findsym(sym(D),t1); f2=subs(sym(0,findsym(sym(D),2); tol=abs(tl-t2)); while(tol>eps) if(f_1*f_2<0) a=tl; b=t2; else fa=subs(sym(f),findsym(sym()),a); if(f_1*fa>0) a=t2; else b=tl1; end end tl=a+(b-a)*0.382; t2=a+(b-a)*0.618; f1=subs(sym(0),findsym(sym(D),t1); f 2-subs(sym(0),findsym(sym(D),2); tol=abs(2-t1); end root=((t1+t2)/2; end
黄金分割法 只学了c++,MATLAB 姑且也算是程序员吧 |
狂风974