008.c

来自「无约束优化方法」· C语言 代码 · 共 28 行

C
28
字号
#include "math.h" 
#include "stdio.h" 
#define f(x) x*x+2*x+1 
double hj(double *a,double *b,double e,int *n) 
{ double x1,x2,s; 
if(fabs(*b-*a)<=e) 
s=f((*b+*a)/2); 
else 
{ x1=*a+0.382*(*b-*a); 
x2=*a+0.618*(*b-*a); 
if(f(x1)>f(x2)) 
*a=x1; 
else 
*b=x2; 
*n=*n+1; 
s=hj(a,b,e,n); 
} 
return s; 
} 
main() 
{ double s,a,b,e; 
int n=0; 
scanf("%lf %lf %lf",&a,&b,&e); 
s=hj(&a,&b,e,&n); 
printf("a=%lf,b=%lf,s=%lf,n=%d\n",a,b,s,n); 
} 

⌨️ 快捷键说明

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