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

📄 rtsafe.c

📁 适合大型数值计算代码 现在网络上已经找不到了 购买需要20$
💻 C
字号:
#include <math.h>#define MAXIT 100float rtsafe(void (*funcd)(float, float *, float *), float x1, float x2,	float xacc){	void nrerror(char error_text[]);	int j;	float df,dx,dxold,f,fh,fl;	float temp,xh,xl,rts;	(*funcd)(x1,&fl,&df);	(*funcd)(x2,&fh,&df);	if ((fl > 0.0 && fh > 0.0) || (fl < 0.0 && fh < 0.0))		nrerror("Root must be bracketed in rtsafe");	if (fl == 0.0) return x1;	if (fh == 0.0) return x2;	if (fl < 0.0) {		xl=x1;		xh=x2;	} else {		xh=x1;		xl=x2;	}	rts=0.5*(x1+x2);	dxold=fabs(x2-x1);	dx=dxold;	(*funcd)(rts,&f,&df);	for (j=1;j<=MAXIT;j++) {		if ((((rts-xh)*df-f)*((rts-xl)*df-f) >= 0.0)			|| (fabs(2.0*f) > fabs(dxold*df))) {			dxold=dx;			dx=0.5*(xh-xl);			rts=xl+dx;			if (xl == rts) return rts;		} else {			dxold=dx;			dx=f/df;			temp=rts;			rts -= dx;			if (temp == rts) return rts;		}		if (fabs(dx) < xacc) return rts;		(*funcd)(rts,&f,&df);		if (f < 0.0)			xl=rts;		else			xh=rts;	}	nrerror("Maximum number of iterations exceeded in rtsafe");	return 0.0;}#undef MAXIT

⌨️ 快捷键说明

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