是线性代数中的一个算法。
可用来求解线性方程组,可以求出矩阵的秩可逆方阵的逆矩阵

通过逐步消除未知数来将原始线性系统转化为另一个更简单的等价系统。

原理:用初等行变换将增广矩阵转换为行阶梯矩阵,然后回代求出方程解

顺序消去法:

将 Ax = b 按照从上至下、从左至右的顺序化为上三角方程组,中间过程不对矩阵进行交换。

过程

局限

  1. 每次运算时,必须保证对角线上的元素不为0(即运算中的分母不为0),否则算法无法继续进行。
  2. 即使不为0,但如果绝对值很小,由于第k次运算中在分母位置,因此除数会引起很大的误差,从而影响算法的稳定性。

列(全)主元消去法

列主元消去法

在第 k 步消元前,先找出 k 行下所有第 k 列元素最大的非零元素a[r,k],将第 r 行与第 k 行进行整行交换。

这样既不影响原方程的解,也可以将绝对值最大的a[r,k]作为主元,放在除数的位置上,尽可能减小引入误差。

全主元消去法

与列主元消去法类似,不过是从第 k 行第 k 列开始的右下角矩阵中所有元素中选取一个最大元素作为主元,同时交换 r 行与 c 列,从而保证稳定性。

const int N = 15;int n;
double a[N][N], b[N][N];void Gauss()
{//化成上三角矩阵for ( int r = 1, c = 1; r <= n; ++r, ++c ){ int t = r;for ( int i = r + 1; i <= n; ++i ) //找到主元if (fabs(b[i][c]) > fabs(b[t][c]))t = i;for ( int i = c; i <= n + 1; ++i )  //交换第 r 行和第 t 行元素swap(b[r][i], b[t][i]);for ( int i = n + 1; i >= c; --i )    //主元归一(第 r 行除以主元系数)b[r][i] /= b[r][c];for ( int i = r + 1; i <= n; ++i ) //消元(用该行把下面所有行的第c列消为0)for ( int j = n + 1; j >= c; --j )b[i][j] -= b[r][j] * b[i][c];}//化成行最简阶梯型矩阵for ( int i = n; i > 1; --i )for ( int j = i - 1; j >= 1; --j ){b[j][n + 1] -= b[i][n + 1] * b[j][i];b[j][i] = 0;}
}signed main()
{scanf("%d", &n);for ( int i = 0; i <= n; ++i )for ( int j = 1; j <= n; ++j )scanf("%lf", &a[i][j]);//转化为线性方程组for ( int i = 1; i <= n; ++i )for ( int j = 1; j <= n; ++j ){b[i][j] = 2 * (a[i][j] - a[0][j]);b[i][n + 1] += a[i][j] * a[i][j] - a[0][j] * a[0][j];}Gauss();for ( int i = 1; i <= n; ++i )printf( "%.3lf ", b[i][n + 1]);return 0;
}

题:https://www.acwing.com/solution/content/48342/

高斯消元法(Gauss Elimination)相关推荐

  1. 高斯消元法java语言设计_高斯消元法(Gauss Elimination)【超详解模板】

    高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵. 高斯消元法的原理是: 若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程 ...

  2. C语言gauss elimination高斯消元法算法(附完整源码)

    gauss elimination算法 实现以下几个相关接口 实现gauss elimination算法的完整源码(定义,实现,main函数测试) 实现以下几个相关接口 void display(fl ...

  3. Gauss elimination Template

    Gauss elimination : #include <iostream> #include <cstdlib> #include <cstring> #inc ...

  4. Gauss Elimination算法分析与实现

    2019独角兽企业重金招聘Python工程师标准>>> 高斯消去法分为两个过程:第一步是前向消元(forward elimination),也就是将系数矩阵转化成上三角矩阵的过程:第 ...

  5. 高斯消元法 Gauss

    高斯消元法可以求线性方程组.本质上是暴力模拟手算的过程. { 3 x + 2 y + z = 10 5 x + y + 6 z = 25 2 x + 3 y + 4 z = 20 \left\{\be ...

  6. 【001】Visual Studio

    叨叨在前:后天我们有个期末考试,内容是关于专业的一些计算程序设计,现在我要做的就是在这大概一天半的时间里把几个程序过完加背完, 下面是我的流水记录相关问题,我发现这样记录,我学得快一点,不知道为啥. ...

  7. 线性代数学习之线性系统

    今天是最后一天上班,所以打酱油的时间充分,想着明天就要坐上爱心的突突车返乡了内心真是激动万分呀,既然要过大年了,基本上期间写博客的心思也应该跑得九霄云外了,所以安耐住激动的心必须年前搞一发,也提前预祝 ...

  8. 计算机数值方法:高斯消元法解线性方程组

    题目 用高斯消元法解下列线性方程组(要求按三位小数计算) 高斯消元法简介 高斯消元法(Gaussian elimination)是求解线性方阵组的一种算法,它也可用来求矩阵的秩,以及求可逆方阵的逆矩阵 ...

  9. ICPC2008哈尔滨-E-Gauss Elimination

    题目描述 Li Zhixiang have already been in "Friendship" ocean-going freighter for three months. ...

最新文章

  1. 邮件服务器SMTP概述
  2. 电脑桌面便签小工具_可以直接在桌面上显示内容的便签软件电脑版
  3. C++ Opengl 多重纹理源码
  4. SharePoint 2013技巧分享系列 - 同步Exchange显示高清用户照片
  5. airpods删除别人的配对_怎么不让别人连我的airpods
  6. Mr.J--HTTP学习笔记(二)-- URL详解
  7. 为何要搞 10 年?方舟编译器专家首次回应
  8. sql增加字段默认为0_OUP2.0:mysql乐观锁不生效
  9. androidx86 9.0下载_Surface pro 安装 android x86/chrome OS
  10. nginx企业级优化
  11. python中shelf对象_11.4. shelve — Python 对象持久化 — Python 2.7.18 文档
  12. 考试/shuai 学生的宿命啊
  13. java写满天繁星,描写满天繁星唯美句子
  14. Carboxyrhodamine 110-PEG4-DBCO,羧罗丹明110-PEG4-DBCO是一种荧光标记染料
  15. 中国压电材料取得突破性进展,未来B超机可折叠弯曲
  16. 小规模纳税人可以申请美元账户收款么?
  17. 深入学习JVM(中)
  18. PHP数组转字符串与PHP字符串转数组的相关方法解析
  19. 常见WEB漏洞问题危害及修复建议
  20. 解决360卸载之后遗留问题:windows defender无法开启

热门文章

  1. 用Python画只三脚猫,不忍直视!
  2. FF原董事长因部分管理问题卸任 贾跃亭底薪下调25%
  3. 从零开始搭建深度学习验证码识别模型
  4. 微信小程序中ajax同步请求方法
  5. 更改Jupyter Notebook打开的默认浏览器(切换到Edge为例)
  6. Linux命令 - passwd命令
  7. 数据库中视图和表的区别
  8. vue-quill-editor编辑器编辑之后的内容,在页面渲染时,没有居中、缩进、加粗、斜体等相关样式
  9. java计算机毕业设计雷士灯具管理系统源码+系统+mysql数据库+lw文档
  10. myeclipse中的工程修改名字后,在Tomcat的deploy location中的修改