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

📄 shoot.c

📁 Numerical Recipes 是国际公认的高水平的、关于数值计算的书
💻 C
字号:
void shoot(nvar,v,delv,n2,x1,x2,eps,h1,hmin,f,dv)
int nvar,n2;
float v[],delv[],x1,x2,eps,h1,hmin,f[],dv[];
{
	int nok,nbad,iv,i,*indx,*ivector();
	float sav,det,*y,**dfdv,**matrix(),*vector();
	void odeint(),ludcmp(),lubksb(),derivs(),rkqc(),
		free_matrix(),free_vector(),free_ivector();
	void load();	/* ANSI: void load(float,float *,float *); */
	void score();	/* ANSI: void score(float,float *,float *); */

	y=vector(1,nvar);
	indx=ivector(1,nvar);
	dfdv=matrix(1,n2,1,n2);
	load(x1,v,y);
	odeint(y,nvar,x1,x2,eps,h1,hmin,&nok,&nbad,derivs,rkqc);
	score(x2,y,f);
	for (iv=1;iv<=n2;iv++) {
		sav=v[iv];
		v[iv] += delv[iv];
		load(x1,v,y);
		odeint(y,nvar,x1,x2,eps,h1,hmin,&nok,&nbad,derivs,rkqc);
		score(x2,y,dv);
		for (i=1;i<=n2;i++)
			dfdv[i][iv]=(dv[i]-f[i])/delv[iv];
		v[iv]=sav;
	}
	for (iv=1;iv<=n2;iv++) dv[iv] = -f[iv];
	ludcmp(dfdv,n2,indx,&det);
	lubksb(dfdv,n2,indx,dv);
	for (iv=1;iv<=n2;iv++) v[iv] += dv[iv];
	free_matrix(dfdv,1,n2,1,n2);
	free_ivector(indx,1,nvar);
	free_vector(y,1,nvar);
}

⌨️ 快捷键说明

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