高斯消元 主要用于求线性方程组,也可以求矩阵的秩、矩阵的逆
时间复杂度为 O(n3)
思想:初中解方程的加减消元,最后得到类似 kx=b ,然后逐一往回带,求出其他的未知数
解方程#
⎧⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪⎩3x+2y+z=6 ①2x+2y+2z=4 ②4x−2y−2z=2 ③
消 x
① 式除以 3,然后让 ② - 2 * ①,③ - 4 * ① 得到
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩x+23y+13z=2 ④23y+34z=0 ⑤−143y−103z=−6 ⑥
然后让 ⑤ 除以 23, 然后让 ⑥ - ⑤ * (−143)
得到
⎧⎪⎨⎪⎩y+2z=0 ⑦ 183z=−6 ⑧
由 ⑧ 得 z=−1
然后再把 z=1 代入 ⑦ 得到 y=2
然后把 z=1,y=2 代入 ④ 得到 x=1
矩阵运算消元#
把上面的柿子的系数放在矩阵中
⎡⎢
⎢
⎢
⎢⎣xyzval321622244−2−22⎤⎥
⎥
⎥
⎥⎦
左边是系数,右边是结果
然后再这个矩阵中进行上述操作
消去 x
⎡⎢
⎢
⎢
⎢
⎢
⎢⎣xyzval1231320234300−143−103−6⎤⎥
⎥
⎥
⎥
⎥
⎥⎦
消去 y
⎡⎢
⎢
⎢
⎢
⎢⎣xyzval123132012000183−6⎤⎥
⎥
⎥
⎥
⎥⎦
解得
⎡⎢⎣12−1⎤⎥⎦
判断解得情况#
- 无解:若有一行系数全是 0,且 val 不为 0,那么方程无解
⎡⎢
⎢
⎢
⎢
⎢⎣xyzval1231320120000−7⎤⎥
⎥
⎥
⎥
⎥⎦
⎡⎢
⎢
⎢
⎢
⎢⎣xyzval12313200000000⎤⎥
⎥
⎥
⎥
⎥⎦
优点:可以判断无解,有无数解情况
缺点:需要回代
高斯-约当消元
高斯消元是执行到第 i 个方程 xk 去消后面的 xk , 而约当消元是同时消掉前面的 xk
初始形式:
⎡⎢
⎢
⎢
⎢⎣xyzval321622244−2−22⎤⎥
⎥
⎥
⎥⎦
最终形式
⎡⎢
⎢
⎢
⎢⎣xyzval100?010?001?⎤⎥
⎥
⎥
⎥⎦
呈对角线形式
优点:省掉了回代过程
缺点:只能判断是否有唯一解,不能判断是否有解
P3389 【模板】高斯消元法
code
写在最后#
鸣谢Alex_McAvoy 提供栗子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话