本帖最后由 hkhkdyx 于 2015-12-8 23:17 编辑
/* Created by mazirong */ /*2015-12-8 */ 首先插入一张用ptc mathcad直接运算矩阵的图片 1 高斯消去法 1.1 基本思想及计算过程 高斯(Gauss)消去法是解线性方程组最常用的方法之一,它的基本思想是通过逐步消元,把方程组化为系数矩阵为三角形矩阵的同解方程组,然后用回代法解此三角形方程组得原方程组的解。 为便于叙述,先以一个三阶线性方程组为例来说明高斯消去法的基本思想。 把方程(IV)乘()后加到方程(I)上去,把方程(IV)乘()后加到方程(II)上去,把方程(IV)乘()后加到方程(III)上去,即可消去方程(I)、(II)、(III)中的x1,得同解方程组 将方程(III)乘()后加于方程(II),将方程(III)乘()后加于方程(I),得同解方程组: 将方程(II)乘()后加于方程(I),得同解方程组: 由回代公式(3.5)得,x3 = 1,x2 = 1,x1 = 1。
1.2 编程思路 高斯消元法解线性方程组,算法很简单,但过程很复杂,我在网上几乎没看到过正确的高斯消元法C程序,有程序也是没有注释,看起来非常费力。于是我硬着头皮自己来写,花了1天时间终于完工了。以求如下行列式为例详解编程思路: 1.把第1行进行优化(优化成第1行第1列元素为1的行列式),然后用来与第2至第4行的第1列元素消为0,如图1: 图1 2.保持第1行不变。对图一中第2行元素进行优化(优化成第2行第2列元素为1的行列式),然后用来与第3行至第4行的第2列元素消为0,如图2: 图2 3.保持前2行不变。对图二中第3行元素进行优化(优化成第3行第3列元素为1的行列式),然后用来与第4行的第3列元素消为0,如图3: 图3 4.保持前3行不变。对图三中第4行元素进行优化(优化成第4行第4列元素为1的行列),如图四: 图4 5.通过回代分别求出x1、x2、x3、x4的值,如图5: 图5 1.3 具体实现过程 由于我的电脑上没有安装Visual Studio,于是使用单片机来实现,通过将程序烧录到单片机中,然后将运算的数据结果通过串口发送给上位机打印输出。运行效果如图6: 如图6 程序主要有3个文件组成:gs_elim.h,gs_elim.c,main.c。程序不限于平台,稍稍修改就能移植到其他开发环境中。
|