search interzone.c

来自「最优化理论与方法中」· C语言 代码 · 共 59 行

C
59
字号
#include "stdio.h"
#include "math.h"
#include "conio.h"
#define print

float fun(float x)
{  float f;
   f=x*x+1;
   return (f);

}

float interzone(float t0,float h,float *a,float *b)
{
 int m=0;
 float fai0,fai1,fai2,t1,t2;
  fai0=fun(t0);
  t2=t0+h;
  fai2=fun(t2);
     #ifdef print
     printf("fai0=%f fai2=%f\n",fai0,fai2);
     getch();
     #endif
         if(fai2>=fai0)
            {
             t1=t2;
             fai1=fai2;
             h=-h;
             t2=t0+h;
             fai2=fun(t2);

            }
   while((++m)<100&&(fai2<fai0))
     {

           t1=t0;
           fai1=fai0;
           t0=t2;
           fai0=fai2;
           h=2*h;
           t2=t0+h;
           fai2=fun(t2);
       #ifdef print
   printf("t0=%.4f t1=%.4f t2=%.4f h=%.4f f0=%.4f  f1=%.4f f2=%.4f\n",t0,t1,t2,h,fai0,fai1,fai2);
         getch();
       #endif
     }
      if(t1<t2){*a=t1;*b=t2;};
      if(t1>=t2){*a=t2;*b=t1;};
      return (m);
}
void main()
{ float t0=1,h=0.01,result,la,lb;
  result=interzone(t0,h,&la,&lb);
  printf("\nthe interzone is %f to %f and the times %f",la,lb,result);
  printf("\n");
  getch();
}

⌨️ 快捷键说明

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