最新版最优化黄金分割法C语言程序

#include
#include
void main()
#define f(t) (k1*t*t+k2*t+k3)
{
double f,f1,f2,x,a,a1,b,b1,e,k1,k2,k3,u;
printf("请输入二次项系数k1=");
scanf("%lf",&k1);
printf("请输入一次项系数k2=");
scanf("%lf",&k2);
printf("请输入常数项k3=");
scanf("%lf",&k3);
printf("请输入搜索区间左端点a=");
scanf("%lf",&a);
printf("请输入搜索区间右端点b=");
scanf("%lf",&b);
printf("请输入搜索精度e=");
scanf("%lf",&e);
u=0.618;
do
{
a1=b-u*(b-a);
f1=f(a1);
b1=a+u*(b-a);
f2=f(b1);
if(f1{
b=b1;
}
else
{
a=a1;
}

}while(b-a>=e);
x=0.5*(a+b);
f=k1*x*x+k2*x+k3;
printf("\n黄金分割法终了区间[a,b]:");
printf("\na=%lf,b=%lf",a,b);
printf("\n最佳步长近视值x及其对应的函数值f:");
printf("\nx=%lf,f=%lf",x,f);
}

相关文档
最新文档