?? fibonacci.m
字號:
function yiweishousuo=fibonacci(e)
%a is the left port of area
%b is the right port of area
%e is the precision
tic %程序運行時間
[a,b]=areafind(0,1,2);
%creat the fabonacci 數列
c=(b-a)/e; %c為fibonacci數列最大值的下界
f=[];
f(1)=1;
f(2)=1;
inum=3;
while max(f)<c
f(inum)=f(inum-1)+f(inum-2);
inum=inum+1;
end
n=inum-2; %n為應取試點個數
%初始化基本變量
k=0;
x1=a+f(n-1)/f(n+1)*(b-a);
x2=a+f(n)/f(n+1)*(b-a);
g1=g(x1);
g2=g(x2);
xx1=[];
xx1(1,:)=[a b x1 x2 g1 g2];
%迭代求解極值
while k<n-2
k=k+1;
if g1<g2
b=x2;
x2=x1;
g2=g1;
x1=a+f(n-1-k)/f(n+1-k)*(b-a);
g1=g(x1);
else
a=x1;
x1=x2;
g1=g2;
x2=a+f(n-k)/f(n+1-k)*(b-a);
g2=g(x2);
end
xx1(k,:)=[a b x1 x2 g1 g2];
end
%最后結果
x1=x2-0.1*(b-a);
g1=g(x1);
switch g1-g2
case g1>g2
x0=(x1+b)/2;
case {0}
x0=(x1+x2)/2;
otherwise
x0=(a+x2)/2;
end
xx1(k+1,:)=[a b x1 x2 g1 g2];
xx1
x0
g(x0)
%畫出函數圖像進行對比
fplot('x^4-2*x+4',[0,2,2.5,4]);
hold on
scatter(x0,g(x0),8,'r');
toc
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -