初等变换法求解线性方程组

本文介绍了如何通过初等行变换将增广矩阵转化为简化阶梯型矩阵来求解线性方程组。详细阐述了具体步骤,包括枚举列、找到最大绝对值、行交换和归一化等操作,并给出了C++实现的函数细节。讨论了完美阶梯型矩阵和不完美阶梯型矩阵的解的情况,以及如何判断方程组的解的存在性和唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初等变换:通过初等行(列同理)变换把增广矩阵变为简化阶梯型矩阵线性方程组求解算法

  •   具体步骤:
  1. 枚举每一列,找到枚举的当前列绝对值最大数的所在行
  2. 将该行换到最上面一行(第r行)
  3. 将该行第一个数(该行第c列元素)消成1
  4. 将该行第一个元素(该行第c列元素)下面的所有非零元素消成0
  5. 重复上面的操作,直到枚举到最后一列,把矩阵消成简化阶梯型矩阵

目录

1.初等变换基本操作

2.具体函数实现

枚举每一列

找到枚举当前列绝对值最大的数的所在行 (ps:fabs函数:求绝对值函数)

将绝对值最大的所在行换到最上面一行(第r行)

将该行第一个数消成1

将该行第一个元素(该行第c列元素)下面的所有非零元素消成0

整体代码


1.初等变换基本操作

       复习:

  • 用一个非零的数乘某一行
  • 把其中一行的若干倍加到另一行上
  • 交换两行的位置

在函数实现的时候无形之中会用到如上的三条操作,以下就不再证明。

2.具体函数实现

枚举每一列

for (c = 0, r = 0; c < n; c++)

找到枚举当前列绝对值最大的数的所在行 (ps:fabs函数:求绝对值函数)

int t = r;
	for (int i = r + 1; i < n; i++)
		if (fabs(a[t][c]) < fabs(a[i][c]))
			t = i;

如果该列全为0,continue直接让c++(跳过这一列,开始处理下一列)

ps:由于浮点数加减乘除时候会有精度问题,所以这里认定:如果浮点数 < eps(eps是一个很小的数,其值为1e-6),就认为该浮点数的值为0

< eps 代表 == 0 ,> eps 代表 非零


                
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值