一维搜索黄金分割法二次插值法
#include
#include
#include
double f(double);
double golden_split(double(*)(),double,double);/*黄金分割法*/ double rcczf(double(*)(),double[],double[],double); /*二次插值法*/ void jtf(double(*)(),double,double *,double *,double *);/*进退法*/ void jtf(double(*objf)(),double a0,double *h0,double *a,double *y) {
double h;
a[0]=a0;
h=*h0;
a[1]=a[0]+h,y[1]=objf(a[1]);
if(y[1]>y[0])
{
h=-h;
a[2]=a[0],y[2]=y[0];
a[0]=a[1],y[0]=y[1];
a[1]=a[2],y[1]=y[2];
}
a[2]=a[1]+h;
y[2]=objf(a[2]);