📄 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 + -