1、线性方程组

2、高斯消元法

步骤1:通过一系列的加减消元,得到类似 kx=b 的式子,求得最后一个未知量的结果
步骤2:然后逐一回代求解整个 x 向量

以下列方程为例:

第一次加减消元,用第1式子消去后面所有的x得到:

第一次加减消元,用第2个式子消去后面所有的y得到:

这样就完成了高斯消元的步骤1,形成了一个倒三角形的形状,接下来主意回代即可。

3、用矩阵表示高斯消元

(1)消元过程:

(2)无解: 当消元完毕后,发现有一行系数都为 0,但是常数项不为 0,此时无解
例如:
(3)多解: 当消元完毕后,发现有多行系数、常数项均为 0,此时多解,有几行为全为 0,就有几个自由元,即变量的值可以任取,有无数种情况可以满足给出的方程组
例如: ,此时自由元为2个

4、例题:Luogu3389,高斯消元模板


思路:

  • 首先我们用第一列中(所有的x中)系数最大的来消其他两个式子。我们将这个选中的系数置为1。(由于最多也只能用double型存储,所以必然会有精度误差。但如果我们每次都选用最大系数的来消掉其他系数,就可以最大程度地来减小误差。)
  • 在置为1之后,我们用这个式子去消其他的式子。那么在最后,我们只需要将这个矩阵的最右下角(也就是最后一个元的实际值)不断回带即可。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 110;
const double eps=1e-7;int n; double a[maxn][maxn], ans[maxn];
int Gauss(){//1. 用第i个式子消去第i个系数,求得倒三角for(int i = 1; i <= n; i++){//找第i列中系数最大的式子并交换int r = i;for(int j=i+1; j<=n; j++){if(abs(a[r][i])<abs(a[j][i]))r=j;}if(i!=r)swap(a[i],a[r]);//如果下面的都是0,则存在多解.(n-i+1)为自由元个数if(abs(a[i][i])<eps)return 0;//用这个式子去消自己和其他的式子double div = a[i][i];for(int j = i; j <= n+1; j++)a[i][j] /= div;for(int j = i+1; j <= n; j++){div = a[j][i];for(int k = i; k <= n+1; k++)a[j][k] -= a[i][k]*div;}}//2. 回代求答案值ans[n] = a[n][n+1];for(int i = n-1; i >= 1; i--){ans[i] = a[i][n+1];for(int j = i+1; j <= n; j++)ans[i] -= a[i][j]*ans[j];}return 1;
}int main(){cin>>n;for(int i = 1; i <= n; i++)for(int j = 1; j <= n+1; j++)cin>>a[i][j];int ok = Gauss();if(ok==1){for(int i = 1; i <= n; i++)printf("%.2lf\n",ans[i]);}else{printf("No Solution\n");}return 0;
}

【Luogu 3389】【模板】高斯消元法(用高斯消元求解线性方程组)相关推荐

  1. 矩阵树 Matrix-Tree 定理实现模板(高斯消元求解行列式)

    大佬1博客:https://www.cnblogs.com/zj75211/p/8039443.html 大佬2博客:https://www.cnblogs.com/yangsongyi/p/1069 ...

  2. [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题

    [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算 ...

  3. 第三十四章 数论——高斯消元解线性方程组

    第三十四章 数论--高斯消元解线性方程组 一.高斯消元 1.线性方程组 2.高斯消元步骤 (1)数学知识铺垫 增广矩阵和阶梯矩阵 初等变换 (2)高斯消元步骤 二.代码模板 1.问题: 2.代码 一. ...

  4. 高斯消元 AcWing 883. 高斯消元解线性方程组

    高斯消元 AcWing 883. 高斯消元解线性方程组 原题链接 AcWing 883. 高斯消元解线性方程组 算法标签 线性代数 高斯消元 思路 代码 #include<bits/stdc++ ...

  5. 洛谷 - P4783 【模板】矩阵求逆(高斯消元求逆矩阵)

    题目链接:点击查看 题目大意:给出一个 n * n 的矩阵,求出其逆矩阵,mod 为 1e9 + 7,若不存在输出 No Solution 题目分析:囤个模板,原理就是,初始时在原矩阵右侧设置一个单位 ...

  6. AcWing 883. 高斯消元解线性方程组(高斯消元模板)

    先出裸的模板: #include<bits/stdc++.h>using namespace std; const int N = 110; typedef double db; db a ...

  7. 高斯消元解线性方程组(浮点高斯消元模板)

    题目连接 https://www.acwing.com/problem/content/885/ 思路 高斯消元的思路如下: 1.我们从上到下,从左到右开始消元,对于每一行我们只保留当前[i,i]行的 ...

  8. 矩阵与高斯消元【矩阵乘法,高斯消元求线性方程组,求行列式】 全网最详,附例题与姊妹篇 一万三千字详解

    (详解)矩阵快速幂详解与常见转移矩阵的构造_秦小咩的博客-CSDN博客_矩阵快速幂转移矩阵 目录 矩阵乘法 矩阵快速幂 伪代码模板 例题一 例题2 例题三 例题四 高斯消元 整形高斯消元 浮点型高斯消 ...

  9. AcWing 883. 高斯消元解线性方程组 (高斯消元)

    题目链接 : 点击查看 题目描述 : 输入一个包含 n 个方程 n 个未知数的线性方程组. 方程组中的系数为实数. 求解这个方程组. 下图为一个包含 m 个方程 n 个未知数的线性方程组示例: 输入输 ...

最新文章

  1. 步步为营-55-js练习
  2. java cxf服务端代码_【JAVA】 cxf 生成 webservice 服务端代码
  3. 号称最安全的苹果TEE被黑客攻破了,怎么办?
  4. 9、创建索引(CREATE INDEX)
  5. 【转载】突然觉得今年的时间过得太快了,不知不觉中还剩下四个多月就步入2017年了,回首一下,好像什么都还没做呢。...
  6. pandas之数据结构
  7. 不要把异常当做业务逻辑,这性能可能你无法承受
  8. apache derby_Apache Derby数据库用户和权限
  9. 使用ANTLR4,用于代码镜像和基于Web的DSL的Primefaces扩展
  10. 李迟2022年3月工作生活总结
  11. 如何更好地玩转 GitHub?
  12. 【NA】函数最佳逼近(三)切比雪夫多项式
  13. 爱普生传真服务器网页,爱普生传真机如何发传真 爱普生传真机快速发传真技巧【详解】...
  14. 天池大数据竞赛——资金流入流出预测赛后感想
  15. 罗马数字转换python_Python简单实现阿拉伯数字和罗马数字的互相转换
  16. 企业邮件服务器哪个好?常用邮箱客户端是哪个?
  17. win10安装php8.0
  18. 吃鸡空投掉落射线检测,粒子系统产生红色信号烟
  19. Secret Milking Machine POJ - 2455
  20. zabbix(三)--更改zabbix-server的端口

热门文章

  1. numpy 辨异(四)—— np.repeat 与 np.tile
  2. 推理集 —— 特殊的时间
  3. 排列组合的思考、组合数的推广和拓展
  4. 绘图神器 —— Graphviz dot 语言介绍
  5. hive 操作(二)——使用 mysql 作为 hive 的metastore
  6. numpy 常用api(一)
  7. opencv已知相机投影及内参求外参_一步步用c++实现相机标定(张氏标定法)
  8. seo代码优化工具_谁是「南京SEO」搜索引擎网站关键词排名优化专家
  9. 零基础学python图文版-Day2 怎么学 Python?
  10. python自学要多久-python从入门到精通需要多久?你需要先明白这两个点