#include <stdioh>
typedef unsigned long long int uint64;
typedef unsigned int uint32;
int main(void)
{
uint64 limit=((uint64)634<<(sizeof(uint64)8-10)); //634=06191406251024 由于0618转换成2进制比较难,所以用这个接近0618的数
uint64 pre=0;
uint64 cur=1;
uint64 next=0;
uint64 cnt=1;
while(cur<=limit) //利用Fibonacci数列的特性,即F(n-1)/F(n)=0618。
{
next=cur+pre;
pre=cur;
cur=next;
cnt++;
if(cnt%10==0)
printf("F%llu=%llu\n",cnt,cur);
}
printf("%llu %llu\n",pre,cur);
return 0;
}
32位的自己改吧。把uint64改为uint32就可以了。
private void prove()
{
double pre = 1;//前一项
double back = 1;//后一项
double current = 1;//当前新值
double ratio = 00;//比例
for (double i = 1; i < 100; i++)
{
current = pre + back;
ratio = back / current;
pre = back;
back = current;
}
}
我也在学这个课,老兄。我编的这个用于解决二次的问题。输入目标函数系数和初始区间及熟练精度。 黄金分割法:
# include <stdioh>
# include <mathh>
float d,e,f;
void main ()
{printf("请输入目标函数的二次项,一次项,常数项,中间用空格分开\n");
scanf("%f %f %f",&d,&e,&f);
float fox (float x);
float a0,b0,z,a,b,x1,x2,f1,f2,xx;
char k,m;
int n;
printf("请输入初始区间a0,b0,收敛精度z,中间用空格分开\n");
scanf("%f %f %f",&a,&b,&z);
a=a0;
b=b0;
x1=a+0382(b-a);
f1=fox(x1);
x2=a+0618(b-a);
f2=fox(x2);
if(f1<f2) {n=0;
b=x2;
x2=x1;
f2=f1;
}
else {n=1;
a=x1;
x1=x2;
f1=f2;
}
while(fabs((b-a))>z)
{if(n==0) {x1=a+0382(b-a);
f1=fox(x1);
}
else {x2=a+0618(b-a);
f2=fox(x2);
}
}
if(f1<f2) {n=0;
b=x2;
x2=x1;
f2=f1;
}
else {n=1;
a=x1;
x1=x2;
f1=f2;
}
xx=(a+b)/2;
printf("极小点和极小值xx=%f,ff=%f\n",xx,fox(xx));
k=getchar();
m=getchar();
}
float fox(float x)
{float r;
r=dxx+ex+f;
return(r);
}
#include<iostreamh>
#include<mathh>
/黄金分割法求最小值的C++程序,部分变量及函数书写并不规范/
//δ为题给精度
int n = (lnδ/ln0618 + 1) + 1;
int i;
float f(float ai, float bi)
{
a(i + 1) = ai + 0618(bi - ai);
return ai + 1;
}
float g(float ai, float bi)
{
b(i + 1) = ai + 0382(bi - ai);
return b(i + 1);
}
float F(float ai, float bi)
{
//题给的f(x)函数式;
return ;
}
float A(float ai, float bi)
{
int i = 1;
float result;
L: do
{
a(i + 1) = f(float ai, float bi);
b(i + 1) = g(float ai, float bi);
float F1 = F(float ai, float bi);
float F2 = F(float a(i + 1), float b(i + 1));
ai = ai, bi = b(i + 1);
i ++;
}while(i <= n && F1 >= F2)
if(i < n)
{
B(float ai, float bi);
}
else
result = F2;
return result;
}
float B(float ai, float bi)
{
do
{
a(i + 1) = f(float ai, float bi);
b(i + 1) = g(float ai, float bi);
float F1 = F(float ai, float bi);
float F2 = F(float a(i + 1), float b(i + 1));
ai = a(i + 1), bi = bi;
i ++;
}while(i <= n && F1 <= F2)
if(i < n)
{
goto L;
}
else
result = F1;
return result;
}
void main()
{
int i = 1;
float A(float ai, float bi);
cout<<"最小值为:"<<result<<endl;
}
#include <stdioh>
#include <mathh>
float GetEquation(float x)
{
return xx-7x+10;
}
void main()
{
float a=0;
float b=6;
float result = 0;
do {
float c=a+0618(b-a);
float d=a+b-c;
if(fabs(GetEquation(c)) < fabs(GetEquation(d)))
{
a=d;
result = c;
}
else
{
b=c;
result = d;
}
} while(fabs(GetEquation(result)) > 001);
printf("f(a)=aa-7a+10\n");
printf("a=%f\n",result);
}
以上就是关于在目前的计算机系统里用整数运算能得到的最大Fibonacci数是多大 用C语言写一个完整的程序计算,并每隔10全部的内容,包括:在目前的计算机系统里用整数运算能得到的最大Fibonacci数是多大 用C语言写一个完整的程序计算,并每隔10、C#编写程序 证明斐波那契数列的数列前后项的比值无限接近0.618、C语言编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)