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 + -
显示快捷键?