?? jixiaozhi.txt
字號:
斐波那契法求極小值
功能:用斐波那契法求f(x)在區(qū)間[a,b]上的近似極小值。當且僅當f(x)在[a,b]上為單峰時次方法適用
----------------------------------------------------------------------
function X=fibonacci(f,a,b,tol,e)
% input - f is the object function input as a string 'f'
% - a and b are the end points of the interval
% - tol : length of uncertainy
% - e :distinguishability of constant
% output - X : x and y coordinates of minimum
% note : this function calls the m-file fib.m while had been edited
i=1;
F=1;
while F<=(b-a)/tol
F=fib(i);
i=i+1;
end
n=i-1;
A=zeros(1,n-2);B=zeros(1,n-2);
A(1)=a;
B(1)=b;
c=A(1)+(fib(n-2)/fib(n))*(B(1)-A(1));
d=A(1)+(fib(n-1)/fib(n))*(B(1)-A(1));
k=1;
while k=n-3
if feval(f,c)>feval(f,d)
A(k+1)=c;
B(k+1)=B(k);
c=d;
d=A(k+1)+(fib(n-k-1)/fib(n-k))*(B(k+1)-A(k+1));
else
A(k+1)=A(k);
B(k+1)=d;
d=c;
c=A(k+1)+(fib(n-k-2)/fib(n-k))*(B(k+1)-A(k+1));
end
k=k+1;
end
if feval(f,c)>feval(f,d)
A(n-2)=c;
B(n-2)=B(n-3);
c=d;
d=A(n-2)+(0.5+e)*(B(n-2)-A(n-2));
else
A(n-2)=A(N-3);
B(n-2)=d;
d=c;
c=A(n-2)+(0.5+e)*(B(n-2)-A(n-2));
end
if feval(f,c)>feval(f,d)
a=c;
b=B(n-2);
else
a=A(n-2);
b=d;
end
X=[(a+b)/2 feval(f,(a+b)/2)];
-------------------------------------------------------------
% 下面的程序用來生成斐波那契數(shù)
function y=fib(n)
fz(1)=1;
fz(2)=1;
for k=3:n
fz(k)=fz(k-1)+fz(k-1);
end
y=fz(n);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -