⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frprmn.cpp

📁 VC++常用数据算法集,里面包含了大量的常用算法程序,很有用的哟!
💻 CPP
字号:
void frprmn(double p[],int n,double ftol,int& iter,double& fret)
{
    int j,its,itmax = 200;
    double eps = 0.0000000001;
    double g[551], h[51], xi[51];
    double fp = func2(p, n);
    dfunc(p, xi);
    for (j = 1; j<=n; j++)
	{
        g[j] = -xi[j];
        h[j] = g[j];
        xi[j] = h[j];
    }
    for (its = 1; its<=itmax; its++)
	{
        iter = its;
        linmin(p, xi, n, fret);
        if (2.0 * fabs(fret - fp)<=ftol*(fabs(fret)+fabs(fp)+eps))
		{
            break;
        }
        fp = func2(p, n);
        dfunc(p, xi);
        double gg = 0.0;
        double dgg = 0.0;
        for (j = 1; j<=n; j++)
		{
            gg = gg + g[j] * g[j];
            //dgg = dgg + xi(j) * xi(j)         //polak-ribiere 法
            dgg = dgg + (xi[j] + g[j]) * xi[j]; //fletcher-reeves 法
        }
        if (gg == 0.0)
		{
			break;
		}
        double gam = dgg / gg;
        for (j = 1; j<=n; j++)
		{
            g[j] = -xi[j];
            h[j] = g[j] + gam * h[j];
            xi[j] = h[j];
        }
    }
    if (iter > itmax)
	{
		cout<<"  frpr maximum iterations exceeded";
		cout<<endl;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -