IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 高斯消元法(Gauss Elimination) -> 正文阅读

[数据结构与算法]高斯消元法(Gauss Elimination)

是线性代数中的一个算法。
可用来求解线性方程组,可以求出矩阵的秩可逆方阵的逆矩阵

通过逐步消除未知数来将原始线性系统转化为另一个更简单的等价系统。

原理:用初等行变换将增广矩阵转换为行阶梯矩阵,然后回代求出方程解

顺序消去法:

将 Ax = b 按照从上至下、从左至右的顺序化为上三角方程组,中间过程不对矩阵进行交换。

过程
在这里插入图片描述
局限

  1. 每次运算时,必须保证对角线上的元素不为0(即运算中的分母不为0),否则算法无法继续进行。
  2. 即使不为0,但如果绝对值很小,由于第k次运算中在分母位置,因此除数会引起很大的误差,从而影响算法的稳定性。

列(全)主元消去法

列主元消去法

在第 k 步消元前,先找出 k 行下所有第 k 列元素最大的非零元素a[r,k],将第 r 行与第 k 行进行整行交换。

这样既不影响原方程的解,也可以将绝对值最大的a[r,k]作为主元,放在除数的位置上,尽可能减小引入误差。

全主元消去法

与列主元消去法类似,不过是从第 k 行第 k 列开始的右下角矩阵中所有元素中选取一个最大元素作为主元,同时交换 r 行与 c 列,从而保证稳定性。

const int N = 15;

int n;
double a[N][N], b[N][N];

void Gauss()
{
	//化成上三角矩阵
	for ( int r = 1, c = 1; r <= n; ++r, ++c )
	{	
		int t = r;
		for ( int i = r + 1; i <= n; ++i ) //找到主元
			if (fabs(b[i][c]) > fabs(b[t][c]))
				t = i;
			
		for ( int i = c; i <= n + 1; ++i )	//交换第 r 行和第 t 行元素
			swap(b[r][i], b[t][i]);
			
		for ( int i = n + 1; i >= c; --i )	//主元归一(第 r 行除以主元系数)
			b[r][i] /= b[r][c];
			
		for ( int i = r + 1; i <= n; ++i )	//消元(用该行把下面所有行的第c列消为0)
			for ( int j = n + 1; j >= c; --j )
				b[i][j] -= b[r][j] * b[i][c];
	}
	//化成行最简阶梯型矩阵
	for ( int i = n; i > 1; --i )
		for ( int j = i - 1; j >= 1; --j )
		{
			b[j][n + 1] -= b[i][n + 1] * b[j][i];
			b[j][i] = 0;
		}
}

signed main()
{
	scanf("%d", &n);
	for ( int i = 0; i <= n; ++i )
		for ( int j = 1; j <= n; ++j )
			scanf("%lf", &a[i][j]);

	//转化为线性方程组
	for ( int i = 1; i <= n; ++i )
		for ( int j = 1; j <= n; ++j )
		{
			b[i][j] = 2 * (a[i][j] - a[0][j]);
			b[i][n + 1] += a[i][j] * a[i][j] - a[0][j] * a[0][j];
		}
		
	Gauss();
	
	for ( int i = 1; i <= n; ++i )
		printf( "%.3lf ", b[i][n + 1]);
	return 0;
}


题:https://www.acwing.com/solution/content/48342/

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-05 21:57:54  更:2022-02-05 21:58:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:33:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码