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

📄 ilut_main.cpp

📁 这是用于线性方程组求解的ILUT预处理算法的实现。在VC++编译通过。矩阵采用压缩稀疏行格式存储(CSR) 很容易移植到自己定义数值计算软件包中。经本人测试计算效率比Fortran写的高很多(比如与S
💻 CPP
字号:
#include"stdio.h"
#include"ilut.h"
int main()
{
	struct Distmatrix *dm;
	struct Preconmat *precon;
	struct Prepar *ipar;
	int i,j;
	dm=(struct Distmatrix *)malloc(sizeof(struct Distmatrix));
	precon=(struct Preconmat *)malloc(sizeof(struct Preconmat));
	ipar=(struct Prepar *)malloc(sizeof(struct Prepar));
	dm->dimension=4;
	dm->ma=(double **)malloc(4*sizeof(double));
	dm->ja=(int **)malloc(4*sizeof(int));
	dm->nnzrow=(int *)malloc(4*sizeof(int));
	for(i=0;i<4;i++)
	{
		dm->ma[i]=(double *)malloc(3*sizeof(double));
		dm->ja[i]=(int *)malloc(3*sizeof(int));
	}
	dm->ma[0][0]=4.0;
	dm->ma[0][1]=-1.0;
	dm->ma[0][2]=-1.0;
	dm->ma[1][0]=-1.0;
	dm->ma[1][1]=4.0;
	dm->ma[1][2]=-1.0;
	dm->ma[2][0]=-1.0;
	dm->ma[2][1]=4.0;
	dm->ma[2][2]=-1.0;
	dm->ma[3][0]=-1.0;
	dm->ma[3][1]=-1.0;
	dm->ma[3][2]=4.0;
	dm->ja[0][0]=0;
	dm->ja[0][1]=1;
	dm->ja[0][2]=3;
	dm->ja[1][0]=0;
	dm->ja[1][1]=1;
	dm->ja[1][2]=2;
	dm->ja[2][0]=1;
	dm->ja[2][1]=2;
	dm->ja[2][2]=3;
	dm->ja[3][0]=0;
	dm->ja[3][1]=2;
	dm->ja[3][2]=3;
	dm->nnzrow[0]=3;
	dm->nnzrow[1]=3;
	dm->nnzrow[2]=3;
	dm->nnzrow[3]=3;
	ipar->lfil=4;
	ipar->ufil=4;
	ipar->droptol=0;
	ilut(dm,precon,ipar);
	printf("The L part:\n");
	for(i=0;i<precon->L->dimension;i++)
	{
		for(j=0;j<precon->L->nnzrow[i];j++)
		{
			printf("The (%d,%d) entry is:%f\n",i,precon->L->ja[i][j],precon->L->ma[i][j]);
			if(i==3)
				printf("ind[3][%d]\n",precon->L->ja[i][j]);
		}

	}
	printf("\n\nThe U part:\n");
	for(i=0;i<precon->U->dimension;i++)
	{
		for(j=0;j<precon->U->nnzrow[i];j++)
			printf("The (%d,%d) entry is:%f\n",i,precon->U->ja[i][j],precon->U->ma[i][j]);
	}
	getchar();
	return 0;
}

⌨️ 快捷键说明

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