xbanmul.c

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

C
53
字号
/* Driver for routine banmul */#include <stdio.h>#define NRANSI#include "nr.h"#include "nrutil.h"#define NP 7#define M1 2#define M2 1#define MP (M1+1+M2)int main(void){	unsigned long i,j,k;	float **a,**aa,*ax,*b,*x;	a=matrix(1,NP,1,MP);	aa=matrix(1,NP,1,NP);	ax=vector(1,NP);	b=vector(1,NP);	x=vector(1,NP);	for (i=1;i<=M1;i++) for (j=1;j<=NP;j++) a[j][i]=10.0*j+i;	/* Lower band */	for (i=1;i<=NP;i++) a[i][M1+1]=i;	/* Diagonal */	for (i=1;i<=M2;i++) for (j=1;j<=NP;j++) a[j][M1+1+i]=0.1*j+i;	/* Upper band */	for (i=1;i<=NP;i++) {		for (j=1;j<=NP;j++) {			k=i-M1-1;			if (j>=LMAX(1,1+k) && j<=LMIN(M1+M2+1+k,NP))			aa[i][j]=a[i][j-k];			else aa[i][j]=0.0;		}	}	for (i=1;i<=NP;i++) x[i]=i/10.0;	banmul(a,NP,M1,M2,x,b);	for (i=1;i<=NP;i++) {		for (ax[i]=0.0,j=1;j<=NP;j++) ax[i] += aa[i][j]*x[j];	}	printf("\tReference vector\tbanmul vector\n");	for (i=1;i<=NP;i++) printf("\t%12.4f\t%12.4f\n",ax[i],b[i]);	free_vector(x,1,NP);	free_vector(b,1,NP);	free_vector(ax,1,NP);	free_matrix(aa,1,NP,1,NP);	free_matrix(a,1,NP,1,MP);	return 0;}#undef NRANSI

⌨️ 快捷键说明

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