黄金分割法程序
#include
#include
#define f(t) (8*pow(t,3)-2*pow(t,2)-7*t+3)
#define eps pow(10,-6)
void sb(double *a,double *b)
{
double t0,t1,t,h,alpha,f0,f1;
int k=0;
printf("请输入初始点t0=");
scanf("%lf",&t0);
printf("\n请输入初始 步长h=");
scanf("%lf",&h);
printf("\n请输入加步系数alpha(需大于1)=");
scanf("%lf",&alpha);
f0=f(t0);
t1=t0+h;
f1=f(t1);
while(1)
{
printf("\nf1=%lf,f2=%lf,t0=%lf,t=%lf,h=%lf,k=%d",f0,f1,t0,t1,h,k); if(f1
{
h=alpha*h;
t=t0;
t0=t1;
f0=f1;
k++;
}
else
{
if(k==0)
{h=-h;t=t1;}
else
{
*a=t
*b=t>t1?t:t1;
break;
}
}
t1=t0+h;
f1=f(t1);
}
}