grad.c
来自「拟牛顿法求函数极小值」· C语言 代码 · 共 26 行
C
26 行
void grad(double (*pf)(double *x),int n,double *point,double *grad)
{
double h=1E-3;
int i;
double *temp;
temp=dvector(0,n-1);
for(i=0;i<n;i++)
{
temp[i]=point[i];
}
for(i=0;i<n;i++)
{
temp[i]+=0.5*h;
grad[i]=4*pf(temp)/(3*h);
temp[i]-=h;
grad[i]-=4*pf(temp)/(3*h);
temp[i]+=(3*h/2);
grad[i]-=(pf(temp)/(6*h));
temp[i]-=(2*h);
grad[i]+=(pf(temp)/(6*h));
point[i]=temp[i];
//printf("comput_grad:point=%f\n",point[i]);
//printf("comput_grad:grad=%f\n",grad[i]);
}
free_dvector(temp,0,n-1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?