《求解关灯游戏》源码分析之三:9*9 矩阵的消元过程
在求解过程中,逆矩阵的获得是个难点。在网上找了些资料,没看明白。而那段代码也不长,索性打印一下日志分析一下。
分析时,数据量当然要小些。2*2 的矩阵,常量矩阵是 4*4 阶,常量矩阵和逆矩阵是相同的。索性就分析一下 3*3 阶的。
分析结果如下:
消元的目的,是将常量矩阵转换成单位矩阵。同时,对一个单位矩阵做相同的操作。这样,
常量矩阵转换成单位矩阵时,单位矩阵就变成了逆矩阵了。
将常量矩阵转换成单位矩阵即,将
110100000
111010000
011001000
100110100
010111010
001011001
000100110
000010111
000001011
转换成
100000000
010000000
001000000
000100000
000010000
000001000
000000100
000000010
000000001
=======================
消元过程
110100000
111010000
011001000
100110100
010111010
001011001
000100110
000010111
000001011
485 i:0 j:0
不换行
消元(将第0列的 1 消去,第0行的不消)
110100000
001110000
011001000
010010100
010111010
001011001
000100110
000010111
000001011
485 i:1 j:2
第一行和第2行进行交换行(目的是让 i=1;j=1 位置的数据变为1)
110100000
011001000
001110000
010010100
010111010
001011001
000100110
000010111
000001011
消元(将第1列的 1 消去,第1行的不消)
101101000
011001000
001110000
001011100
001110010
001011001
000100110
000010111
000001011
485 i:2 j:2
不换行
消元
100011000
010111000
001110000
000101100
000000010
000101001
000100110
000010111
000001011
485 i:3 j:3
不换行
消元
100011000
010010100
001011100
000101100
000000010
000000101
000001010
000010111
000001011
485 i:4 j:7
交换行
100011000
010010100
001011100
000101100
000010111
000000101
000001010
000000010
000001011
消元
100001111
010000011
001001011
000101100
000010111
000000101
000001010
000000010
000001011
485 i:5 j:6
100001111
010000011
001001011
000101100
000010111
000001010
000000101
000000010
000001011
消元
100000101
010000011
001000001
000100110
000010111
000001010
000000101
000000010
000000001
485 i:6 j:6
不换行
消元
100000000
010000011
001000001
000100011
000010010
000001010
000000101
000000010
000000001
485 i:7 j:7
不换行
消元
100000000
010000001
001000001
000100001
000010000
000001000
000000101
000000010
000000001
485 i:8 j:8
不换行
消元
100000000
010000000
001000000
000100000
000010000
000001000
000000100
000000010
000000001
分享到:
相关推荐
- **矩阵表示:** 高斯消元过程中可以利用矩阵的概念来简化运算过程。 - **步骤详解:** 包括前向消元(将矩阵转化为行阶梯形)、后向代入(求解变量值)。 **1.3 高斯-若尔当消元法(Gauss–Jordan Method)** - *...
《求解关灯游戏》源码分析之二 在编程世界中,关灯游戏(Lights Out)是一款经典的逻辑游戏,它的目标是通过点击一个5x5的网格中的按钮,使得所有的灯都熄灭。每当你点击一个按钮时,它会改变自身的状态(开或关)...
2. **回代求解**:从上三角矩阵的最后一个方程开始,逐步向前代入已知的变量值,求解未知数。 #### 三、MATLAB 实现 ##### 3.1 MATLAB 代码解读 ```matlab function x = gauss(A, n) for k = 1:n-1 for i = k+1:n...
在数值分析领域,病态矩阵是指那些条件数很大或者矩阵元素分布不均匀,导致计算过程中易引入误差的矩阵。Hilbert矩阵就是一种典型的病态矩阵,它在数学和科学计算中有重要的研究价值。本项目将探讨如何使用不同的...
给出的代码实现了高斯消去法的整个过程,包括前向消元和回代求解两个阶段。 1. **输入处理:** - 通过 `scanf` 函数读取系数矩阵 \(A\) 和常数向量 \(b\)。 - 打印输入的原始数据。 2. **前向消元:** - 使用...
- 如果在某次消元过程中发现主元为零或接近于零,即 \(|d| + 1.0 == 1.0\),则认为系数矩阵奇异,无法求解方程组。此时函数返回 0,并输出 “fail”。 5. **示例代码:** - 给出了一个具体的例子,使用 4×4 系数...
特殊方程组的求解** 针对特定类型的线性方程组,如对称正定矩阵、三对角矩阵等,有专门的高效求解方法。 - **案例1:** 求解一般线性方程组 - **案例2:** 求解特殊类型线性方程组 **3. 方程组的条件数与稳定性...
通过对并行计算课程中的算法报告进行分析,我们不仅了解了Strassen算法的基本原理和实现过程,还学习了如何通过分治法有效地解决矩阵乘法这一问题。这种高效的算法设计方法不仅在学术研究中有重要价值,在实际应用中...
南京邮电大学作为一所以信息技术为特色的高等院校,在数值分析的教学过程中强调理论与实践相结合,特别是对于研究生阶段的学习,更加强调对高级数值方法的理解和应用能力。 #### 详细知识点解析: 1. **线性方程组...
1. **增广矩阵与高斯消元法**:解决线性方程组的一种基本方法是通过构建增广矩阵并进行高斯消元来求解。 2. **线性方程组的解的性质**:根据系数矩阵的秩与增广矩阵的秩,可以判断方程组有无解以及解的情况(唯一解...
对于三阶行列式,公式涉及三条主对角线与次对角线元素的乘积之和与差。 - **计算**:直接应用公式计算,例如题目中的(1)、(2)、(3)和(4)展示了行列式的直接计算方法。 - **性质**:行列式的值可以用来判断方阵是否...
三、计算过程: 1. 使用 ode45 函数来求解微分方程组 2. 计算电流和电磁转矩的变化过程 3. 使用 plot 函数来绘制电流和电磁转矩的变化图形 四、结果分析: * 电流和电磁转矩的变化过程 * 计算结果的正确性验证 ...
5. **线性方程组求解**: - **求解特解**:`A\B`(左除)用于求解线性方程组Ax=B的解。 - **最小二乘解**:对于超定系统(方程多于未知数),`A\B`提供最小二乘近似解。 6. **矩阵的相似对角化**: - **相似对角...
- **矩阵运算**:熟悉矩阵的加减、乘法以及逆矩阵的计算方法。 - **特征值与特征向量**:理解特征值和特征向量的概念及其在计算机科学中的应用,例如图像处理中的SVD分解。 3. **概率论与数理统计**: - **随机...
- **矩阵求解线性方程组**:通过高斯消元、克拉默法则等方法解决线性方程组。 5. **运行与测试**: 在C++中,我们通常会创建一个Matrix类,包含构造函数、析构函数、成员函数(如add、subtract、multiply等)来...
矩阵可以表示线性方程组的系数,通过高斯消元、克拉默法则等方法求解方程组。 8. **特征值与特征向量**:对于矩阵A,如果存在非零向量v使得Av=λv,那么λ是A的特征值,v是对应的特征向量。特征值和特征向量在量子...
- **LU分解:**是高斯消元法的一种变形,它可以将一个矩阵分解为下三角矩阵L和上三角矩阵U的乘积,这种方法在多次求解相同系数矩阵的不同常数项时更加高效。 - **迭代法:**与直接法(如高斯消元法)不同,迭代法...
矩阵求导涉及对矩阵、向量、以及标量函数进行微分的过程。尽管对于初学者来说,矩阵求导的概念可能难以掌握,但它在优化问题、概率模型推导、深度学习模型参数更新等方面有着极其重要的应用。 矩阵求导的实质是对...