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

📄 xamebsa.c

📁 适合大型数值计算代码 现在网络上已经找不到了 购买需要20$
💻 C
字号:
/* Driver for routine amebsa */#include <stdio.h>#define NRANSI#include "nr.h"#include "nrutil.h"#define NP 4#define MP 5#define FTOL 1.0E-6#define N 4#define RAD 0.3#define AUG 2.0long idum=(-64);float tfunk(float p[]){	int j;	float q,r,sumd=0.0,sumr=0.0;	static float wid[N+1]={0.0,1.0,3.0,10.0,30.0};	for (j=1;j<=N;j++) {		q=p[j]*wid[j];		r=(float)(q >= 0 ? (int)(q+0.5) : -(int)(0.5-q));		sumr += q*q;		sumd += (q-r)*(q-r);	}	return 1+sumr*(1+(sumd > RAD*RAD ? AUG : AUG*sumd/(RAD*RAD)));}int main(void){	int i,iiter,iter,j,jiter,ndim=NP,nit;	float temptr,yb,ybb;	float **p,*x,*y,*pb;	static float xoff[NP+1]={0.0,10.0,10.0,10.0,10.0};	p=matrix(1,MP,1,NP);	x=vector(1,NP);	y=vector(1,MP);	pb=vector(1,NP);	for (i=1;i<=MP;i++)		for (j=1;j<=NP;j++) p[i][j]=0.0;	for (;;) {		for (j=2;j<=MP;j++) p[j][j-1]=1.0;		for (i=1;i<=MP;i++) {			for (j=1;j<=NP;j++) x[j]=(p[i][j] += xoff[j]);			y[i]=tfunk(x);		}		yb=1.0e30;		printf("Input t, iiter:\n");		if (scanf("%f %d",&temptr,&iiter) == EOF) break;		ybb=1.0e30;		nit=0;		for (jiter=1;jiter<=100;jiter++) {			iter=iiter;			temptr *= 0.8;			amebsa(p,y,ndim,pb,&yb,FTOL,tfunk,&iter,temptr);			nit += iiter-iter;			if (yb < ybb) {				ybb=yb;				printf("%6d %10.3e ",nit,temptr);				for (j=1;j<=NP;j++) printf("%10.5f ",pb[j]);				printf("%15.7e\n",yb);			}			if (iter > 0) break;		}		printf("Vertices of final 3-D simplex and\n");		printf("float values at the vertices:\n");		printf("%3s %10s %12s %12s %14s\n\n",			"i","x[i]","y[i]","z[i]","function");		for (i=1;i<=MP;i++) {			printf("%3d ",i);			for (j=1;j<=NP;j++) printf("%12.6f ",p[i][j]);			printf("%15.7e\n",y[i]);		}		printf("%3d ",99);		for (j=1;j<=NP;j++) printf("%12.6f ",pb[j]);		printf("%15.7e\n",yb);	}	free_vector(pb,1,NP);	free_vector(y,1,MP);	free_vector(x,1,NP);	free_matrix(p,1,MP,1,NP);	printf("Normal completion\n");	return 0;}#undef NRANSI

⌨️ 快捷键说明

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