黄金分割法.c

来自「机械优化设计」· C语言 代码 · 共 43 行

C
43
字号
#include"stdio.h"
#include <math.h>

float fa(float x)
{ int a,b,c;
  float y;
  scanf("a=%d,b=%d,c=%d",&a,&b,&c);
  y=a*x*x+b*x+c;
  return y;
  }

main()
{ float x1,x2,x3,x,f1,f2,f3,f,a,a1,a2,b,h,k,j;
  k=0.000035;
  x1=1;
  h=1;
  x2=x1+h;
  f1=fa(x1);
  f2=fa(x2);
       while(f1<f2)
       {x=x1;x1=x2;x2=x;
       f=f1;f1=f2;f2=f;
       h=-h;}
       x3=x2+h;
       f3=fa(x3);
      while(f3<f2)
      {x1=x2;x2=x3;x3=x2+h;
      f1=f2;f2=f3;}
      if(h<0)
      {a=x3;b=x1;}
  else {a=x1;b=x3;}
   printf("a=%f,b=%f\n",a,b);
       a1=b-0.618*(b-a);
       f1=fa(a1);
       a2=a+0.618*(b-a);
       f2=fa(a2);
  if(f1>=f2) {a=a1;a1=a2;f1=f2;a2=a+0.618*(b-a);f2=(a2);}
  else {b=a2;a2=a1;f2=f1;a1=b-0.618*(b-a);f1=fa(a1);}
      while((b-a)<k)
      j=(a+b)/2;
   printf("j=%f\n",j);
   }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?