高斯消元
算法流程(高斯 - 约旦消元法)
- 选择一个尚未被选择过的未知数作为主元,选择一个包含这个主元的方程。
- 将这个方程主元的系数化为 。
- 通过加减消元,消掉其他方程中的这个未知数。
- 重复以上步骤,直到把每一行都变成只有一项有系数。
板子
| const double eps = 1e-9; |
| |
| double Ans[maxN][maxN]; |
| int N; |
| |
| inline bool isZero(double A) { |
| return fabs(A) < eps; |
| } |
| |
| inline bool isGre(double A, double B) { |
| return fabs(A) > fabs(B); |
| } |
| inline void Gauss() { |
| for (int i = 1; i <= N; i++) { |
| if (Ans[i][i] == 0) { |
| printf("No Solution"); |
| return; |
| } |
| int nowLine = i; |
| for (int j = i + 1; j <= N; j++) { |
| if (isGre(Ans[j][i], Ans[nowLine][i])) swap(nowLine, j); |
| } |
| if (nowLine != i) { |
| for (int j = 1; j <= N + 1; j++) swap(Ans[i][j], Ans[nowLine][j]); |
| } |
| if (isZero(Ans[i][i])) continue; |
| for (int j = 1; j <= N; j++) { |
| if (i != j) { |
| double m = Ans[j][i] / Ans[i][i]; |
| for (int k = i + 1; k <= N + 1; k++) { |
| Ans[j][k] -= Ans[i][k] * m; |
| } |
| } |
| } |
| } |
| for (int i = 1; i <= N; i++) { |
| Ans[i][N + 1] /= Ans[i][i]; |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探