高斯消元 笔记

高斯消元

高斯消元:解线性方程组

有 n n n 个未知数: x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn

a 1 1 x 1 1 + a 1 2 x 1 2 + . . . + a 1 n x 1 n = b 1 a_{1_1}x_{1_1}+a_{1_2}x_{1_2}+...+a_{1_n}x_{1_n}=b_1 a11x11+a12x12+...+a1nx1n=b1

a 2 1 x 2 1 + a 2 2 x 2 2 + . . . + a 2 n x 2 n = b 2 a_{2_1}x_{2_1}+a_{2_2}x_{2_2}+...+a_{2_n}x_{2_n}=b_2 a21x21+a22x22+...+a2nx2n=b2

. . . . . . ...... ......

次数为 1 1 1

e . g . e.g. e.g. 斐波那契数列 : f i = f i − 1 + f i − 2 f_i=f_{i-1}+f_{i-2} fi=fi−1+fi−2

系数矩阵

a 1 1 a 1 2 a 1 3 . . . a 1 n a 2 1 a 2 2 a 2 3 . . . a 2 n a 3 1 a 3 2 a 3 3 . . . a 3 n . . . . . . . . . . . . . . . a n 1 a n 2 a n 3 . . . a n n \] \\left\[ \\begin{matrix} a_{1_1} \& a_{1_2} \& a_{1_3} \& ... \& a_{1_n} \\\\ a_{2_1} \& a_{2_2} \& a_{2_3} \& ... \& a_{2_n} \\\\ a_{3_1} \& a_{3_2} \& a_{3_3} \& ... \& a_{3_n} \\\\ ... \& ... \& ... \& ... \& ... \\\\ a_{n_1} \& a_{n_2} \& a_{n_3} \& ... \& a_{n_n} \\end{matrix} \\right\] a11a21a31...an1a12a22a32...an2a13a23a33...an3...............a1na2na3n...ann ##### 增广矩阵 \[ a 1 1 a 1 2 a 1 3 . . . a 1 n b 1 a 2 1 a 2 2 a 2 3 . . . a 2 n b 2 a 3 1 a 3 2 a 3 3 . . . a 3 n b 3 . . . . . . . . . . . . . . . . . . a n 1 a n 2 a n 3 . . . a n n b n \] \\left\[ \\begin{matrix} a_{1_1} \& a_{1_2} \& a_{1_3} \& ... \& a_{1_n} \& b_1\\\\ a_{2_1} \& a_{2_2} \& a_{2_3} \& ... \& a_{2_n} \& b_2\\\\ a_{3_1} \& a_{3_2} \& a_{3_3} \& ... \& a_{3_n} \& b_3\\\\ ... \& ... \& ... \& ... \& ... \& ... \\\\ a_{n_1} \& a_{n_2} \& a_{n_3} \& ... \& a_{n_n} \& b_n \\end{matrix} \\right\] a11a21a31...an1a12a22a32...an2a13a23a33...an3...............a1na2na3n...annb1b2b3...bn ##### 初等行变换: 1.交换两行 2.把某一行 × k ( k ≠ 0 ) \\times\~k\~(k ≠ 0) × k (k=0) 3.把某一行的 k k k 倍加到另一行上 ( k ∈ R ) (k\\in \\R) (k∈R) #### 线性方程组的解的情况 ##### 如果一个线性方程组有至少两个解,那么它一定有无穷多个解 设两个解: { x 1 , x 2 , x 3 , . . . , x n } \\{ x_1,x_2,x_3,...,x_n \\} {x1,x2,x3,...,xn} { x 1 ′ , x 2 ′ , x 3 ′ , . . . , x n ′ } \\{ x_1',x_2',x_3',...,x_n' \\} {x1′,x2′,x3′,...,xn′} 则: { x 1 − x 1 ′ , x 2 − x 2 ′ , x 3 − x 3 ′ , . . . , x n − x n ′ } \\{ x_1-x_1',x_2-x_2',x_3-x_3',...,x_n-x_n' \\} {x1−x1′,x2−x2′,x3−x3′,...,xn−xn′} 也成立 ##### 所有情况: 0 0 0 个解 , 1 1 1 个解 ,无穷多个解 #### 阶梯型矩阵 每一行第一个不是 0 0 0 的数在上一行第一个不是 0 0 0 的数的严格右侧 ##### e . g . e.g. e.g. \[ 2 5 3 4 0 0 1 1 0 1 0 0 0 2 0 0 0 0 0 3 \] \\left\[ \\begin{matrix} 2 \& 5 \& 3 \& 4 \& 0 \\\\ 0 \& 1 \& 1 \& 0 \& 1 \\\\ 0 \& 0 \& 0 \& 2 \& 0 \\\\ 0 \& 0 \& 0 \& 0 \& 3 \\end{matrix} \\right\] 20005100310040200103 对于任意一个矩阵,我们在使用初等行变换的基础上,一列一列地将矩阵转换成阶梯型矩阵 如果 a 1 , 1 a_{1,1} a1,1 不是 0 0 0,让 r 2 + k ⋅ r 1 ( k ∈ R ) r_2\~+\~k\\cdot r_1(k\\in \\R) r2 + k⋅r1(k∈R),让其他行第一列为 0 0 0 同理,向下每一行如此处理 若 a 1 , 1 a_{1,1} a1,1 是 0 0 0,向下寻找第一个第一列不是 0 0 0 的第一行与矩阵第一行交换使其成为新的第一行进行上述操作 若这一列所有行均为 0 0 0,那么将这一列忽略掉 第一行处理完之后将剩下的部分 ( ( n − 1 ) 2 (n-1)\^2 (n−1)2 的矩阵)当成新的矩阵继续如此操作 ##### 方程有解 阶梯型矩阵中最后一个含 0 0 0 的直角不在最后一列,方程有解 e . g . e.g. e.g. \[ 2 0 5 2 0 1 4 3 0 0 2 1 \] \\left\[ \\begin{matrix} 2 \& 0 \& 5 \& 2 \\\\ 0 \& 1 \& 4 \& 3 \\\\ 0 \& 0 \& 2 \& 1 \\end{matrix} \\right\] 200010542231 ##### 方程无解 反之,无解: \[ 2 0 5 2 0 2 1 0 0 0 5 3 0 0 0 1 \] \\left\[ \\begin{matrix} 2 \& 0 \& 5 \& 2 \\\\ 0 \& 2 \& 1 \& 0 \\\\ 0 \& 0 \& 5 \& 3 \\\\ 0 \& 0 \& 0 \& 1 \\end{matrix} \\right\] 2000020051502031 ##### 方程无穷多解 某一行含 0 0 0 直角未连续出现,成为断层: \[ 2 0 5 2 0 2 1 0 0 0 0 3 0 0 0 1 \] \\left\[ \\begin{matrix} 2 \& 0 \& 5 \& 2 \\\\ 0 \& 2 \& 1 \& 0 \\\\ 0 \& 0 \& 0 \& 3 \\\\ 0 \& 0 \& 0 \& 1 \\end{matrix} \\right\] 2000020051002031 #### 简化阶梯型矩阵 满足下列三个条件的矩阵称为简化阶梯型矩阵: 1.它是一个阶梯形矩阵 2.非零行首元素均为 1 1 1 3.首元素所在列其他元素均为 0 0 0 ##### 将矩阵转换为简化阶梯型矩阵 e . g . e.g. e.g. \[ 2 1 1 2 1 0 2 1 3 1 1 5 \] \\left\[ \\begin{matrix} 2 \& 1 \& 1 \& 2 \\\\ 1 \& 0 \& 2 \& 1 \\\\ 3 \& 1 \& 1 \& 5 \\end{matrix} \\right\] 213101121215 1. \[ 2 1 1 2 0 − 1 2 3 2 0 0 − 1 2 − 1 2 2 \] \\left\[ \\begin{matrix} 2 \& 1 \& 1 \& 2 \\\\ 0 \& -\\frac{1}{2} \& \\frac{3}{2} \& 0 \\\\ 0 \& -\\frac{1}{2} \& -\\frac{1}{2} \& 2 \\end{matrix} \\right\] 2001−21−21123−21202 2. \[ 2 1 1 2 0 − 1 2 3 2 0 0 0 − 2 2 \] \\left\[ \\begin{matrix} 2 \& 1 \& 1 \& 2 \\\\ 0 \& -\\frac{1}{2} \& \\frac{3}{2} \& 0 \\\\ 0 \& 0 \& -2 \& 2 \\end{matrix} \\right\] 2001−210123−2202 (已成为阶梯型矩阵) 3. \[ 1 1 2 1 2 1 0 1 − 6 0 0 0 1 − 1 \] \\left\[ \\begin{matrix} 1 \& \\frac{1}{2} \& \\frac{1}{2} \& 1 \\\\ 0 \& 1 \& -6 \& 0 \\\\ 0 \& 0 \& 1 \& -1 \\end{matrix} \\right\] 100211021−6110−1 4. \[ 1 0 7 2 1 0 1 − 6 0 0 0 1 − 1 \] \\left\[ \\begin{matrix} 1 \& 0 \& \\frac{7}{2} \& 1 \\\\ 0 \& 1 \& -6 \& 0 \\\\ 0 \& 0 \& 1 \& -1 \\end{matrix} \\right\] 10001027−6110−1 5. \[ 1 0 0 9 2 0 1 0 − 6 0 0 1 − 1 \] \\left\[ \\begin{matrix} 1 \& 0 \& 0 \& \\frac{9}{2} \\\\ 0 \& 1 \& 0 \& -6 \\\\ 0 \& 0 \& 1 \& -1 \\end{matrix} \\right\] 10001000129−6−1 ##### 基础解系 三元一次方程在立体坐标系中,若三个未知数均有一个解,则在空间内呈点,若两个未知数有一个解,则在空间内呈线,若只有一个未知数有一个解,则在空间内呈平面 #### 代码实现 [P2455 \[SDOI2006\] 线性方程组](https://www.luogu.com.cn/problem/P2455) ```cpp #include using namespace std; int n,p=1; double a[105][105],eps=1e-6; int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n+1;j++){ cin>>a[i][j]; } } for(int z=1;z<=n;z++){ int flag=0; for(int i=p;i<=n;i++){ if(fabs(a[i][z])>eps){ flag=i; break; } } if(flag==0){ continue; } for(int i=1;i<=n+1;i++){ swap(a[flag][i],a[p][i]); } for(int i=n+1;i>=z;i--){ a[p][i]/=a[p][z]; } for(int i=1;i<=n;i++){ if(i!=p){ double x=a[i][z]; for(int j=1;j<=n+1;j++){ a[i][j]-=a[p][j]*x; } } } p++; } if(p<=n){ for(int i=p;i<=n;i++){ if(fabs(a[i][n+1])>eps){ cout<<-1<

相关推荐
星星火柴93615 分钟前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
Cx330❀3 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
小幽余生不加糖3 小时前
电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
人工智能·笔记·学习·音视频
..过云雨4 小时前
01.【数据结构-C语言】数据结构概念&算法效率(时间复杂度和空间复杂度)
c语言·数据结构·笔记·学习
岑梓铭5 小时前
考研408《计算机组成原理》复习笔记,第五章(3)——CPU的【数据通路】
笔记·考研·408·计算机组成原理·计组
Blossom.11811 小时前
把 AI 推理塞进「 8 位 MCU 」——0.5 KB RAM 跑通关键词唤醒的魔幻之旅
人工智能·笔记·单片机·嵌入式硬件·深度学习·机器学习·搜索引擎
草莓熊Lotso11 小时前
《吃透 C++ 类和对象(中):const 成员函数与取地址运算符重载解析》
c语言·开发语言·c++·笔记·其他
玖別ԅ(¯﹃¯ԅ)13 小时前
PID学习笔记6-倒立摆的实现
笔记·stm32·单片机
想学全栈的菜鸟阿董14 小时前
Django5个人笔记
笔记
ZZHow102419 小时前
JavaWeb开发_Day05
java·笔记·web