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

📄 svdfit.c

📁 适合大型数值计算代码 现在网络上已经找不到了 购买需要20$
💻 C
字号:
#define NRANSI#include "nrutil.h"#define TOL 1.0e-5void svdfit(float x[], float y[], float sig[], int ndata, float a[], int ma,	float **u, float **v, float w[], float *chisq,	void (*funcs)(float, float [], int)){	void svbksb(float **u, float w[], float **v, int m, int n, float b[],		float x[]);	void svdcmp(float **a, int m, int n, float w[], float **v);	int j,i;	float wmax,tmp,thresh,sum,*b,*afunc;	b=vector(1,ndata);	afunc=vector(1,ma);	for (i=1;i<=ndata;i++) {		(*funcs)(x[i],afunc,ma);		tmp=1.0/sig[i];		for (j=1;j<=ma;j++) u[i][j]=afunc[j]*tmp;		b[i]=y[i]*tmp;	}	svdcmp(u,ndata,ma,w,v);	wmax=0.0;	for (j=1;j<=ma;j++)		if (w[j] > wmax) wmax=w[j];	thresh=TOL*wmax;	for (j=1;j<=ma;j++)		if (w[j] < thresh) w[j]=0.0;	svbksb(u,w,v,ndata,ma,b,a);	*chisq=0.0;	for (i=1;i<=ndata;i++) {		(*funcs)(x[i],afunc,ma);		for (sum=0.0,j=1;j<=ma;j++) sum += a[j]*afunc[j];		*chisq += (tmp=(y[i]-sum)/sig[i],tmp*tmp);	}	free_vector(afunc,1,ma);	free_vector(b,1,ndata);}#undef TOL#undef NRANSI

⌨️ 快捷键说明

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