mrqcof.c

来自「适合大型数值计算代码 现在网络上已经找不到了 购买需要20$」· C语言 代码 · 共 39 行

C
39
字号
#define NRANSI#include "nrutil.h"void mrqcof(float x[], float y[], float sig[], int ndata, float a[], int ia[],	int ma, float **alpha, float beta[], float *chisq,	void (*funcs)(float, float [], float *, float [], int)){	int i,j,k,l,m,mfit=0;	float ymod,wt,sig2i,dy,*dyda;	dyda=vector(1,ma);	for (j=1;j<=ma;j++)		if (ia[j]) mfit++;	for (j=1;j<=mfit;j++) {		for (k=1;k<=j;k++) alpha[j][k]=0.0;		beta[j]=0.0;	}	*chisq=0.0;	for (i=1;i<=ndata;i++) {		(*funcs)(x[i],a,&ymod,dyda,ma);		sig2i=1.0/(sig[i]*sig[i]);		dy=y[i]-ymod;		for (j=0,l=1;l<=ma;l++) {			if (ia[l]) {				wt=dyda[l]*sig2i;				for (j++,k=0,m=1;m<=l;m++)					if (ia[m]) alpha[j][++k] += wt*dyda[m];				beta[j] += dy*wt;			}		}		*chisq += dy*dy*sig2i;	}	for (j=2;j<=mfit;j++)		for (k=1;k<j;k++) alpha[k][j]=alpha[j][k];	free_vector(dyda,1,ma);}#undef NRANSI

⌨️ 快捷键说明

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