注册 登录
编程论坛 数据结构与算法

高斯消去法求上三角矩阵

令狐少侠56 发布于 2016-03-03 14:31, 3597 次点击
感觉没错啊,可结果最后一个元素却不对
程序代码:
#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") ;
    }
}

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
4 回复
#2
令狐少侠562016-03-03 14:50
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2016-3-3 14:52编辑过]

#3
令狐少侠562016-03-03 15:08
知道哪里错了,原来是数据类型错了,计算的时候会出现小数
程序代码:
#include<stdio.h>

int main()
{
    int i,j,k ;
    int n ;
    float 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("%f" , &a[i][j]);

    //建立增广矩阵
    printf("请输入方程组右边的值\n");
    for(i=1; i<=n ; i++)
    {
        scanf("%f" , &b[i]) ;
        a[i][n+1] = b[i] ;
    }
   
    //输出增广矩阵
    for(i=1 ; i<=n ; i++)
    {
        for(j=1 ; j<=n+1 ; j++)
            printf("%3.2f\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("%3.2f\t",a[i][j]) ;
      
        printf("\n") ;
    }
}
#4
诸葛欧阳2016-03-09 11:52
线性代数都忘完了😱
#5
令狐少侠562016-03-10 13:43
回复 4楼 诸葛欧阳
这个不用线代的,会解方程就行。。。
1