【模板】高斯消元法

高斯消元

  • 用于解 nn 次方程组。

算法流程(高斯 - 约旦消元法)

  1. 选择一个尚未被选择过的未知数作为主元,选择一个包含这个主元的方程。
  2. 将这个方程主元的系数化为 1
  3. 通过加减消元,消掉其他方程中的这个未知数。
  4. 重复以上步骤,直到把每一行都变成只有一项有系数。

板子

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) { //如果某一项系数为 0 则表示 x 可取任意值
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];
}
}
posted @   Burnling  阅读(249)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示