高斯消元 学习笔记
2018-03-31 15:00
274 查看
高斯消元简介
高斯消元法,又叫高斯消去法,是用来求解线性方程组的算法,还可以用来求解逆矩阵,但一般很少用到,求解线性方程组的时间复杂度为O(n3)O(n3)什么是线性方程组?
形如:
⎧⎩⎨x−2y+3z=64x−5y+6z=127x−8y+10z=21{x−2y+3z=64x−5y+6z=127x−8y+10z=21
就是这样,各个方程关于未知量均为一次的方程组。
算法详解
思路
想一想我们以前解这种类型的方程组,都是要加减消元,求出其中一个未知数的值,然后再代回原式,求出其余未知数的解。高斯消元其实就是一个加减消元+回代的过程我们首先定义一个矩阵来表示这一个方程组
⎡⎣⎢147−2−5−8361061221⎤⎦⎥[1−2364−56127−81021]
矩阵前n列代表$n个方程中未知数的系数,最后一列代表,这一行方程的结果.我们用第二式子减去第一个式子乘以4的得到式子就只含有两个未知数,然后再用第三个式子减去第一个式子乘以7的值,又得到了一个只含有两个未知数的方程
我们就得到了如下的方程和矩阵
⎧⎩⎨x−2y+3z=63y−6z=−126y−11z=−21{x−2y+3z=63y−6z=−126y−11z=−21
⎡⎣⎢100−2363−6−116−12−21⎤⎦⎥[1−23603−6−1206−11−21]
然后对方程2进行除以3得到y−2z=−4y−2z=−4 然后把得到的新式子带入第一个式子和第三个式子,我们
就得到了新的式子
⎧⎩⎨x−z=−2y−2z=−4z=3{x−z=−2y−2z=−4z=3
⎡⎣⎢100010−1−21−2−43⎤⎦⎥[10−1−201−2−40013]
然后们把第三个式子带入就可以求出其余未知数的值
⎧⎩⎨x=1y=2z=3{x=1y=2z=3
代码
#include<bits/stdc++.h> #define MAXN 205 using namespace std; const double eps=1e-8; int n; double a[MAXN][MAXN],del; bool gauss() { for(int i=1;i<=n;i++) { int k=i; for(int j=i+1;j<=n;j++) if(fabs(a[j][i])>fabs(a[k][i])) k=j;//寻找当前求解的未知数系数最大的一个方程 if(fabs(del=a[k][i])<eps) return 0; for(int j=i;j<=n+1;j++) swap(a[i][j],a[k][j]);//把它提到当前这一行 for(int j=i;j<=n+1;j++) a[i][j]/=del;//把当前未知数的系数变为,见下面详解① for(k=1;k<=n;k++)//回代的过程 if(k!=i) { del=a[k][i]; for(int j=i;j<=n+1;j++) a[k][j]-=a[i][j]*del;//由于当前的未知数已经是一了,直接乘以方程中当前未知数的系数就可以 } } return 1; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n+1;j++) scanf("%lf",&a[i][j]); bool flag=gauss(); if(!flag) printf("No solution"); else for(int i=1;i<=n;i++) printf("%.2lf\n",a[i][n+1]); return 0; }
详解
①:就相当于把ax+by=cax+by=c转化为x+bay=cax+bay=ca代码提交地址高斯消元
相关文章推荐
- 高斯消元 & 线性基【学习笔记】
- 学习笔记----高斯消元(二)
- [学习笔记]高斯消元
- 学习笔记----高斯消元(一)
- 高斯消元学习笔记
- 用高斯消元解决一部分期望问题 学习笔记
- 高斯消元学习总结
- ACM学习历程—UESTC 1219 Ba Gua Zhen(dfs && 独立回路 && xor高斯消元)
- ACM学习历程—HDU 3949 XOR(xor高斯消元)
- 变分推断学习笔记(2)——一维高斯模型的例子
- Unity Shader 学习笔记(21) 模糊、高斯模糊
- 【Matlab学习笔记】【图像滤波去噪】高斯平滑滤波
- ACM学习历程—SGU 275 To xor or not to xor(xor高斯消元)
- UnityShader入门精要学习笔记(十八):均值模糊与高斯模糊
- 高斯消元学习
- 高斯-约当 (Gauss-Jordan) 消元法 [学习笔记]
- UnityShader入门精要学习笔记(十八):均值模糊与高斯模糊
- 【opencv学习笔记1】5种图像滤波辨析:方框、均值、高斯、中值、双边
- 高斯消元的学习
- [笔记]: 高斯消元