高斯消元 笔记

高斯消元

高斯消元:解线性方程组

有 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<

相关推荐
吴梓穆17 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
V---scwantop---信18 小时前
英文字体:大胆都市街头Y2Y涂鸦风格品牌海报专辑封面服装字体 Chrome TM – Graffiti Font
笔记·字体
Moonnnn.18 小时前
运算放大器(四)滤波电路(滤波器)
笔记·学习·硬件工程
吴梓穆19 小时前
UE5学习笔记 FPS游戏制作37 蓝图函数库 自己定义公共方法
笔记·学习·ue5
吴梓穆19 小时前
UE5学习笔记 FPS游戏制作41 世界模式显示UI
笔记·学习·ue5
s_little_monster19 小时前
【Linux】进程信号的捕捉处理
linux·运维·服务器·经验分享·笔记·学习·学习方法
RedMery20 小时前
论文阅读笔记:Denoising Diffusion Implicit Models (4)
论文阅读·笔记
go_bai20 小时前
Linux环境基础开发工具——(2)vim
linux·开发语言·经验分享·笔记·vim·学习方法
吴梓穆21 小时前
UE5学习笔记 FPS游戏制作35 使用.csv配置文件
笔记·学习·ue5
100分题库小程序21 小时前
2025年机动车授权签字人考试判断题分享
经验分享·笔记