高斯消去法求上三角矩阵

我就照着书写的怎么就错了,求告知。
#include<stdio.h>

int main()
{
	int i,j,k ;
	int n ;
	int a[100][101] , b[100];

	printf("请输入矩阵阶数\n");
	scanf("%d",&n) ;

	//输入系数矩阵
	printf("请输入系数矩阵\n");
	for(i=1 ; i<=n ; i++)
		for(j=1 ; j<=n ; j++)
			scanf("%d" , &a[i][j]);

	//建立增广矩阵
	printf("请输入方程组右边的值\n");
	for(i=1; i<=n ; i++)
	{
		scanf("%d" , &b[i]) ;
		a[i][n+1] = b[i] ;
	}
	
	//输出增广矩阵
	for(i=1 ; i<=n ; i++)
	{
		for(j=1 ; j<=n+1 ; j++)
			printf("%d\t" , a[i][j]);
		printf("\n");
	}
	printf("\n");

	//高斯消去
	for(i=1 ; i<=n-1 ; i++ )
		for(j=i+1 ; j<=n ; j++)
			for(k=n+1 ; k>=i ; k--)
				a[j][k] = a[j][k] - a[i][k] * a[j][i] /a[i][i] ;

	//输出消去后的上三角矩阵
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=n+1; j++)
	 	printf("%d\t",a[i][j]) ;
	  
		printf("\n") ;
	}
}
这里应该会有a[3][4]=a[3][4]-a[2][4]*a[3][2]/a[2][2]的啊,然后运行结果a[3][4]却不对。



全部评论
找到出错原因了,原来是精度问题。
点赞 回复 分享
发布于 2016-03-03 15:09

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务