700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 黄金分割发c语言编程及框图 优化程序-黄金分割法C语言程序设计.doc

黄金分割发c语言编程及框图 优化程序-黄金分割法C语言程序设计.doc

时间:2020-09-13 05:46:07

相关推荐

黄金分割发c语言编程及框图 优化程序-黄金分割法C语言程序设计.doc

董建兴 现代设计方法之优化设计 编程

黄金分割法 c语言程序

题目:用黄金分割法求f(x)=x2-7x+10的最优解。设置初始点为:x0=0,初始步长h=1,取迭代精度e=0.35

程序:

#include "stdio.h"

#include "math.h"

#include "conio.h"

#define e 0.35

#define tt 1

float function(float x)

{

float y;

y=pow(x,2)-7*x+10;

return(y);

}

void searching(float a[3],float f[3])

{float h=tt,a1,f1,ia,i;

a[0]=0;

f[0]=function(a[0]);

for(i=0;;i++)

{a[1]=a[0]+h;

f[1]=function(a[1]);

if(f[1]

if(fabs(f[1]-f[0])>=e)

{h=-h;a[0]=a[1];f[0]=f[1];}

else{ if(ia==1) return;

h=h/2;ia=1;}

}

for(i=0;;i++)

{a[2]=a[1]+h;

f[2]=function(a[2]);

if(f[2]>f[1]) break;

h=2*h;

a[0]=a[1];f[0]=f[1];

a[1]=a[2];f[1]=f[2];

}

if(a[0]>a[2])

{a1=a[0];f1=f[0];

a[0]=a[2];f[0]=f[2];

a[2]=a1;f[2]=f1;

}

return;

}

void main()

{ float function(float x);

float a1[3],f1[3],a[4],f[4];

float F1,F2,m,n,xx;

searching(a1,f1);

a[0]=a1[0];f[0]=f1[0];

a[3]=a1[2];f[3]=f1[2];

while(fabs(a[0]-a[3])>e)

{

m=a[3]-0.618*(a[3]-a[0]);

n=a[0]+0.618*(a[3]-a[0]);

F1=function(m);

F2=function(n);

if(F1

a[3]=n;

else a[0]=m;

xx=(a[0]+a[3])/2;

printf("F1=%16.12f F2=%16.12f a[0]=%16.12f a[3]=%16.12f\n xx=%16.12f\n",F1,F2,a[0],a

[3],xx);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。