首页 > 编程语言 > 详细

高斯消去法的实现(C++)

时间:2020-11-18 19:18:42      阅读:45      评论:0      收藏:0      [点我收藏+]

高斯消去法,其实就是利用初等变换把矩阵转换成上三角,便于求行列式,求逆,求线性方程组的解

其实核心代码特别短,如下

void elimination(double *matrix, int row, int column) {
    for (int i = 0; i < column - 1; i++) {
        for (int j = 0; j < row - 1 - i; j++) {
            double coef = *(matrix + (row - 1 - j)*column + i) / *(matrix + i * column + i);
            for (int k = 0; k < column; k++) {
                *(matrix + (row - 1 - j)*column + k) -= (coef*(*(matrix + i * column + k)));
            }
        }
    }
}

 

用主函数测试一下正确性

int main() {
    // double matrix[] = { 1,2,3,4,5,6,7,8,9 };
    double matrix[] = { 1,1,-1,2,1,0,1,-1,0 };
    int row = 3, column = 3;

    printf("------原矩阵------\n");
    // int i, j;
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < column; j++) {
            printf("%4lf ", *(matrix + i * row + j));
        }
        printf("\n");
    }

    elimination(matrix, row, column);

    printf("------结果------\n");
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < column; j++) {
            printf("%4lf ", *(matrix + i * row + j));
        }
        printf("\n");
    }
    return 0;
}

结果如下,显然正确

技术分享图片

技术分享图片

高斯消去法的实现(C++)

原文:https://www.cnblogs.com/zhaoke271828/p/14001337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!