📄 fibonacci.cpp
字号:
#include<iostream.h>
int findn(double e);
double func(double x);
void main()
{
double F[30];
int n,i;
double a,b,mm,nn;
double e;
cout<<"请输入区间:";
cin>>a>>b;
cout<<"请输入缩短精度:";
cin>>e;
n=findn(e);
F[0]=1;
F[1]=1;
for(i=2;i<=20;i++)
F[i]=F[i-1]+F[i-2];
double t1,t2,a1=0,b1=0;
t1=a+F[n-2]/F[n]*(b-a);
t2=a+F[n-1]/F[n]*(b-a);
mm=func(t1);
nn=func(t2);
for(i=n;i>=2;i--)
{
if(mm<nn)
{
a1=a;
b1=t2;
t2=t1;
t1=b1+F[i-2]/F[i-1]*(a1-b1);
nn=mm;
mm=func(t1);
}
else if(mm>nn)
{
a1=t1;
b1=b;
t1=t2;
t2=a1+F[i-2]/F[i-1]*(b1-a1);
mm=nn;
nn=func(t2);
}
else
if(i>2)
cout<<"中途发现无法迭代点!!!\n";
a=a1;
b=b1;
}
cout<<a<<" "<<b<<endl;
t2=a+(0.5+e/10)*(b-a);
nn=func(t2);
if(mm<nn)
cout<<"原函数的最小值是"<<mm<<"在x="<<t1<<"处取得。\n";
else
cout<<"原函数的最小值是"<<nn<<"在x="<<t2<<"处取得。\n";
}
int findn(double e)
{
int n=2;
double a,b;
a=0;
b=1;
do
{
a=b;
b=a+b;
n++;
}while(1/b>e);
return n;
}
double func(double x)
{
return(x*x-x+2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -