資源描述:
《優(yōu)化方法中0.618法和fibonacci法源程序原創(chuàng)(matlab).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、0.618法function[w,ans]=fa(f_1,a,b,j)a(1)=a;b(1)=b;k=j;n=1;t(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1));while((b(n)-a(n))>k)B(n)=b(n)-a(n);m(n)=feval(f_1,t(n));g(n)=feval(f_1,u(n));ifm(n)>g(n)a(n+1)=t(n);b(n+1)=b(n);t(n+1)=u(n);u(n+1)=a(n+1)+0.618*(b(n+1)-a(n+1));elsea(
2、n+1)=a(n);b(n+1)=u(n);u(n+1)=t(n);t(n+1)=a(n+1)+0.382*(b(n+1)-a(n+1));endn=n+1;endans=(b(n)+a(n))/2;t(n)=0;u(n)=0;m(n)=0;g(n)=0;B(n)=b(n)-a(n);n=n-1;%disp('ak','bk')w=[a',b',t',u',m',g',B'];functiony=f1(x)y=2*x^2-x-1;可以在matlab中運(yùn)行[w,ans]=fa('f1',-1,1,0.16)Fibonacci法function[x,T,j
3、]=Fibonacci(F_1,a1,b1,l,e)n=1;j=1;a(n)=a1;b(n)=b1;while(Fib(j)*l<(b1-a1))j=j+1;endr(1)=a(1)+(1-Fib(j-1)/Fib(j))*(b(1)-a(1));u(1)=a(1)+Fib(j-1)/Fib(j)*(b(1)-a(1));forn=1:1:j-2R(n)=feval(F_1,r(n));U(n)=feval(F_1,u(n));Z(n)=b(n)-a(n);ifR(n)>U(n)a(n+1)=r(n);b(n+1)=b(n);r(n+1)=u(n);u
4、(n+1)=a(n+1)+Fib(j-n-1)/Fib(j-n)*(b(n+1)-a(n+1));elsea(n+1)=a(n);b(n+1)=u(n);u(n+1)=r(n),r(n+1)=a(n+1)+(1-Fib(j-n-1)/Fib(j-n))*(b(n+1)-a(n+1));endendR(j-1)=feval(F_1,r(j-1));U(j-1)=feval(F_1,u(j-1));r(j)=r(j-1);u(j)=r(j-1)+e;R(j)=feval(F_1,r(j));U(j)=feval(F_1,u(j));ifR(j)>U(j)a
5、(j)=r(j);b(j)=b(j-1);elsea(j)=a(j-1);b(j)=u(j);endZ(j-1)=b(j-1)-a(j-1);Z(j)=b(j)-a(j);x=(a(j)+b(j))/2;T=[a',b',r',u',R',U',Z'];functiony=F_1(x)y=2*x^2-x-1;functionFi=Fib(n)i=1;Fib(2)=2;Fib(1)=1;ifn==0Fi=1;elsefori=3:1:nFib(i)=Fib(i-1)+Fib(i-2);endi=n;endFi=Fib(i);可以在matlab中輸入[x,
6、T,j]=Fibonacci('F_1',-1,1,0.16,0.01)