Fibonacci法
来源:互联网 发布:淘宝众筹回报是什么 编辑:程序博客网 时间:2024/05/03 00:19
#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
//the accuracy
const double delta=1e-4;
const int MAX=200;
double fib[MAX];
//the function
double func(double x)
...{
return exp(x)+exp(-x);
}
void calcuFib()
...{
fib[0]=fib[1]=1;
for(int i=2;i<MAX;i++)
fib[i]=fib[i-1]+fib[i-2];
}
int main()
...{
//the interval [a,b]
double a=-1,b=1;
calcuFib();
int n=0;
for(;n<MAX;n++)
...{
if(fib[n]>=(b-a)/delta) ...{
break;
}
}
double s=a+fib[n-2]*1.0/fib[n]*(b-a);
double t=a+fib[n-1]*1.0/fib[n]*(b-a);
double f1=func(s),f2=func(t);
for(int k=2;k<=n;)
...{
printf("f(a=%6.2lf, s=%6.2lf, t=%6.2lf, b=%6.2lf) = %6.4lf, %6.4lf, %6.4lf, %6.4lf) ",a,s,t,b,func(a),func(s),func(t),func(b));
if(f1>f2) ...{
if(b-s<=delta)...{
cout<<t<<endl;break;
}
a=s;s=t;f1=f2;
k++;
t=a+fib[n-k]/fib[n-k+1]*(b-a);
f2=func(t);
}
else...{
if(t-a<=delta)...{
cout<<s<<endl;break;
}
b=t;t=s;f2=f1;
k++;
s=a+fib[n-k-1]/fib[n-k+1]*(b-a);
f1=func(s);
}
}
printf("******************************************************* ");
printf("after %d iterators the values reach ",n-1);
printf("f(a=%6.2lf, s=%6.2lf, t=%6.2lf, b=%6.2lf) = (%6.4lf, %6.4lf, %6.4lf, %6.4lf) ",a,s,t,b,func(a),func(s),func(t),func(b));
return 0;
}
#include<stdio.h>
#include<cmath>
using namespace std;
//the accuracy
const double delta=1e-4;
const int MAX=200;
double fib[MAX];
//the function
double func(double x)
...{
return exp(x)+exp(-x);
}
void calcuFib()
...{
fib[0]=fib[1]=1;
for(int i=2;i<MAX;i++)
fib[i]=fib[i-1]+fib[i-2];
}
int main()
...{
//the interval [a,b]
double a=-1,b=1;
calcuFib();
int n=0;
for(;n<MAX;n++)
...{
if(fib[n]>=(b-a)/delta) ...{
break;
}
}
double s=a+fib[n-2]*1.0/fib[n]*(b-a);
double t=a+fib[n-1]*1.0/fib[n]*(b-a);
double f1=func(s),f2=func(t);
for(int k=2;k<=n;)
...{
printf("f(a=%6.2lf, s=%6.2lf, t=%6.2lf, b=%6.2lf) = %6.4lf, %6.4lf, %6.4lf, %6.4lf) ",a,s,t,b,func(a),func(s),func(t),func(b));
if(f1>f2) ...{
if(b-s<=delta)...{
cout<<t<<endl;break;
}
a=s;s=t;f1=f2;
k++;
t=a+fib[n-k]/fib[n-k+1]*(b-a);
f2=func(t);
}
else...{
if(t-a<=delta)...{
cout<<s<<endl;break;
}
b=t;t=s;f2=f1;
k++;
s=a+fib[n-k-1]/fib[n-k+1]*(b-a);
f1=func(s);
}
}
printf("******************************************************* ");
printf("after %d iterators the values reach ",n-1);
printf("f(a=%6.2lf, s=%6.2lf, t=%6.2lf, b=%6.2lf) = (%6.4lf, %6.4lf, %6.4lf, %6.4lf) ",a,s,t,b,func(a),func(s),func(t),func(b));
return 0;
}
- Fibonacci法
- Fibonacci
- fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- Fibonacci
- typedef的陷阱
- 嵌入式系统的介绍
- Batch update table name using *sp_rename*
- 通过编程运行SSIS包:Running SSIS package programmatically
- 春晓(壹拾壹)
- Fibonacci法
- .NET Framework 2.0 中未处理的异常
- 随笔一篇
- MSSql数据库操作实用类
- VistaButton
- SOC PLD SOPC CPLD FPGA 的解释
- Java Applet小试
- vs2008简体中文版,vs2008简体中文版下载,vs2008简体中文版key,vs2008正版下载
- 与开发商硬抗到底(转)