高斯列主元消去法——C实现

1. 高斯消去法算法原理

消去法是求解线性方程组的一种方法,它对增广矩阵进行初等行变换得到一个可回代求解的矩阵,然后再进行回代求得一组解向量。
高斯列主元法在使用初等行变换消元之前增加了选主元的过程。为减小计算机计算过程中的舍入误差,选取绝对值大的数作为主元素,再使用初等行变换将方程组转化为一个同解的上三角方程组,最后通过回代法求解该三角形方程组。
例:
方程组的系数矩阵为:
           
等式右端的常数列向量为:
             在这里插入图片描述
那么这个方程组的增广矩阵就是:
        在这里插入图片描述
高斯列主元消去法第一步先选主元,即第一列中绝对值最大数所在的行,将这一行和第一行交换:
        在这里插入图片描述
再以第一行作为工具行处理以下几行:
        在这里插入图片描述
重复该步骤,直到把系数矩阵化成一个下三角矩阵全0的矩阵:
        在这里插入图片描述
这样就可以进行回代求解了。

高斯列主元法的优势在于它有一个选主元的过程,这样做可以避免程序在进行消去操作时选取的主元素为0的情况,也减小了计算的舍入误差,从而提高了程序的普适性和结果的准确性。
2.高斯消去法的C++代码

从以上的讲解中中我们可以知道,高斯消去法需要输入一个系数矩阵和一个常数列向量,并且系数矩阵应该是方阵,系数矩阵的行数和常数列向量的行数相等,最后返回一个行数相等的解向量。
那么函数格式就可以这样写:

matrix* magauss(matrix *A, matrix *b)

传入两个matrix类型的指针,返回值为一个matrix类型的指针,关于矩阵的定义,请参照博客:矩阵的相关操作——C++实现
再根据算法原理和输入要求,编写主程序:

//高斯列主元法
matrix* magauss(matrix *A, matrix *b) {
   
	int row = A->row;
	int col = A->col;
	assert(row == col);
	assert(row == b->
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值