高斯消元 笔记

news/2024/12/22 2:54:22/

高斯消元

高斯消元:解线性方程组

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=fi1+fi2

系数矩阵

[ 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) (kR)

线性方程组的解的情况

如果一个线性方程组有至少两个解,那么它一定有无穷多个解

设两个解:

{ 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' \} {x1x1,x2x2,x3x3,...,xnxn} 也成立

所有情况: 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 + kr1(kR),让其他行第一列为 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 (n1)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

[ 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] 2001212112321202

[ 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] 20012101232202

(已成为阶梯型矩阵)

[ 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] 10021102161101

[ 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] 1000102761101

[ 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] 1000100012961

基础解系

三元一次方程在立体坐标系中,若三个未知数均有一个解,则在空间内呈点,若两个未知数有一个解,则在空间内呈线,若只有一个未知数有一个解,则在空间内呈平面

代码实现

P2455 [SDOI2006] 线性方程组

#include<bits/stdc++.h>
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<<endl;return 0;}}cout<<0<<endl;}else{for(int i=1;i<=n;i++){printf("x%d=%.2lf\n",i,a[i][n+1]);}}return 0;
}

http://www.ppmy.cn/news/1533772.html

相关文章

开源模型应用落地-qwen2.5-7b-instruct-LoRA微调-LLaMA-Factory-单机单卡-V100(十八)

一、前言 本篇文章将使用LLaMA-Factory去高效微调(命令和界面方式)QWen2.5系列模型,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 QWen2系列模型微调: 开源模型应用落地-qwen2-7b-instruct-LoRA微调-LLaMA-Factory-单机单…

Spring Boot 进阶-如何自定义SpringBoot日志配置?

在之前的文章中我们介绍了Spring Boot中的日志框架,并且也介绍了SpringBoot日志框架中日志级别的调整。这篇文章我们主要来介绍关于如何让日志框架更加符合我们自己的需求。那么首先我们就来看一下日志文件输出路径的配置。 如何指定日志文件的输出位置 在Spring Boot中日志是…

leetcode刷题day29|贪心算法Part03( 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列)

134. 加油站 思路&#xff1a; 暴力解法&#xff1a;for循环适合模拟从头到尾的遍历&#xff0c;while循环适合模拟环形遍历&#xff01;但是会超出leetcode的时间限制。 class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {for(int i0;i<gas.length…

CMU 10423 Generative AI:lec13/13.5(text-to-image models:三大类方法、评估标准、图像编辑原理)

1 文章目录 1 lec13和lec13.5概述2 Text-to-Image Generation 概念、主要方法、挑战、发展历程1. **基本概念**2. **主要技术方法**2.1. **生成对抗网络&#xff08;GAN&#xff09;**2.2. **自回归模型&#xff08;Autoregressive Models&#xff09;**2.3. **扩散模型&#x…

opencv-如何获取图像区域特定像素区域大小

需求 通过鼠标框选某个区域&#xff0c;返回这个区域的像素大小。 源码 # e:path\to\cal_rectangle_area.py import cv2 import numpy as np # 初始化变量 image cv2.imread(./vlcsnap-2024-09-25-10h51m27s007.png) if image is None: print("Error: Image cou…

自建RustDesk服务器:详细步骤与操作指南

在远程办公和协作日益普及的今天&#xff0c;远程桌面软件成为了不可或缺的工具。然而&#xff0c;许多知名的远程桌面软件&#xff0c;在免费使用一段时间后&#xff0c;会通过限制连接数量、时长或在特定网络环境下的可用性来促使用户付费升级&#xff0c;而且其会员非常昂贵…

《蓝桥杯算法入门》(C/C++、Java、Python三个版本)24年10月出版

推荐&#xff1a;《算法竞赛》&#xff0c;算法竞赛大全书&#xff0c;网购&#xff1a;京东 天猫  当当 文章目录 《蓝桥杯算法入门》内容简介本书读者对象作者简介联系与交流《蓝桥杯算法入门 C/C》版目录 《蓝桥杯算法入门 Java》版目录 《蓝桥杯算法入门 Python》版目录 …

通信工程学习:什么是TFTP简单文件传输协议

TFTP&#xff1a;简单文件传输协议 TFTP&#xff08;Trivial File Transfer Protocol&#xff0c;简单文件传输协议&#xff09;是一种轻量级的文件传输协议&#xff0c;主要用于在计算机网络中传输小型文件。以下是对TFTP的详细解释&#xff1a; 一、TFTP简单文件传输协议的定…