exer1.c

来自「利用LU分解来求方程的解」· C语言 代码 · 共 71 行

C
71
字号
#include "math.h"
#include "head.c"
#include "create1.c"
#include "powerMtd.c"
#include "rePowMtd.c"

main()
{
	double A[C_M][C_N];
	double u1[Matrix_N],u2[Matrix_N];
	double y[Matrix_N];
	double R_max,R_min;
	int i,j;
	double temp,temp1,R_i;

	FILE *fp;

	fp=fopen("exec1.txt","w");

	createMatrix_1(&A);

	R_max=powerMethod(&A,u1);
	fprintf(fp,"按模最大特征值为:%-20.12e\n",R_max);
	fprintf(fp,"相应的特征向量的前20个分量为:\n");
	for (i=0;i<20 ;i++ ) 
	{
		fprintf(fp,"%d:%-20.12e",i+1,u1[i]);
		if ((i%4)==3) fprintf(fp,"\n");
	}
	fprintf(fp,"\n");
	fprintf(fp,"相应的特征向量的最后20个分量为:\n");
	for (i=(Matrix_N-20);i<Matrix_N ;i++ )
	{
		fprintf(fp,"%d:%-20.12e",i+1,u1[i]);	
		if ((i%4)==0) fprintf(fp,"\n");
	}

	fprintf(fp,"\n");

	R_min=rePowMethod(&A,u2,y,0);
	
	fprintf(fp,"按模最小特征值为:%-20.12e\n",R_min);
	fprintf(fp,"相应的特征向量的前20个分量为:\n");
	for (i=0;i<20 ;i++ ) 
	{
		fprintf(fp,"%d:%-20.12e",i+1,u2[i]);
		if ((i%4)==3) fprintf(fp,"\n");
	}
	fprintf(fp,"\n");
	fprintf(fp,"相应的特征向量的最后20个分量为:\n");
	for (i=(Matrix_N-20);i<Matrix_N ;i++ )
	{
		fprintf(fp,"%d:%-20.12e",i+1,u2[i]);	
		if ((i%4)==0) fprintf(fp,"\n");
	}
	
	/*	第二小题	*/
	fprintf(fp,"\n/*	第二小题	*/\n");
	temp=(R_max-R_min)/40;
	for (i=1;i<40 ;i++ )
	{printf("%d\n",i);
		temp1=R_min+i*temp;
		R_i=rePowMethod(&A,u2,y,temp1);
		fprintf(fp,"与数u[%d](%-18.12e)最接近的特征值为:%-20.12e\n",i,temp1,R_i+temp1);
	}
	/*	第三小题	*/

	fprintf(fp,"\n/*	第三小题	*/\n");
	fprintf(fp,"A的条件数cond(A)_2是:%-20.12e-\n",fabs(R_max/R_min));
	fclose(fp);
}

⌨️ 快捷键说明

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