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

📄 mrqcof.cpp

📁 提供了几种数据拟合的c++代码:1 直线拟合(FIT);2 线性最小二乘法((LFIT, COVSRT), (SVDFIT, SVDVAR)(oddity), (FPOLY, FLEG)(exampl
💻 CPP
字号:
void mrqcof(double x[], double y[], double sig[], int ndata, double a[],
			int ma, int lista[], int mfit, double alpha[], double beta[],
			int nalp, double& chisq)
{
	int i,j,k;
	double wt,ymod,sig2i,dy;
    double  dyda[21];
    for (j = 1; j<=mfit; j++)
	{
        for (k = 1; k<=j; k++)
		{
            alpha[(j-1)*nalp+k] = 0.0;
        }
        beta[j] = 0.0;
    }
    chisq = 0.0;
    for (i = 1; i<=ndata; i++)
	{
        fgauss(x[i], a, ymod, dyda, ma);
        sig2i = 1.0 / (sig[i] * sig[i]);
        dy = y[i] - ymod;
		for (j = 1; j<=mfit; j++)
		{
            wt = dyda[lista[j]] * sig2i;
			for (k = 1; k<=j; k++)
			{
                alpha[(j-1)*nalp+k] = alpha[(j-1)*nalp+k] + wt * dyda[lista[k]];
            }
            beta[j] = beta[j] + dy * wt;
        }
        chisq = chisq + dy * dy * sig2i;
    }
    for (j = 2; j<=mfit; j++)
	{
        for (k = 1; k<=j - 1; k++)
		{
            alpha[(k-1)*nalp+j] = alpha[(j-1)*nalp+k];
        }
    }
}

⌨️ 快捷键说明

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