程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 最優化問題中黃金分割法的代碼

最優化問題中黃金分割法的代碼

編輯:關於C語言

#include<stdio.h>
#include<math.h>

doubleF(doublex)
{
returnpow(x,4)+x*2+4;
}

doublegolden(doublea,doubleb,doublee)
{
inti=0;
doublex1,x2,f1,f2;

x2=a+0.618*(b-a);
f2=F(x2);
x1=a+0.382*(b-a);
f1=F(x1);
while(fabs(b-a)>e)
{
printf("\n%d\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf",i++,a,b,x1,x2,f1,f2,fabs(b-a));
if(f1<f2)
{
b=x2;
x2=x1;
f2=f1;
x1=a+0.382*(b-a);
f1=F(x1);
}
elseif(f1>f2)
{
a=x2;
x1=x2;
f1=f2;
x2=a+0.618*(b-a);
f2=F(x2);
}
else
{
a=x1;
b=x2;
x2=a+0.618*(b-a);
f2=F(x2);
x1=a+0.382*(b-a);
f1=F(x1);
}
}
printf("\n%d\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf",i++,a,b,x1,x2,f1,f2,fabs(b-a));

return(a+b)/2;
}

intmain()
{
doublea,b,e;
a=0-1;
b=0;
e=0.005;
printf("\nresult=%lf",golden(a,b,e));
printf("\nover!\n");
return0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved