高斯消元算法实现
一、目的与用途
高斯消元是求解如下所示含有m个未知数、m个方程的方程组的算法。解题的目的是求出同时满足所有方程的变元的值:
(1)
原理
(1)式所示的方程用矩阵可以表示为:
其中
,,
若将A、B写为:
则,通过高斯消元可以化简方程组,其步骤如下:
寻找主元素
寻找C阵中第一列中最大的元素ai1,即主元素所在的行。
处理主元素行
将第i行与第一行互换。
清零主元素列
将第一行所有元素都除以主元素,即将主元素变为1如下所示:
接下来将第一列中从第二行到第m行的所有元素清零变为:
对非零行重复以上步骤,并将主元素所在列的非主元素所在行的所有元素清零,最后C阵变为:
第M+1列,即最后一列就是所求得的解。
流程图
算法的流程图为:
开始
打印程序信息
读入方程系数
打印方程组
高斯消元
打印消元后的方程组
打印答案
结束
程序说明
源程序包含三个文件:、、
辅助文件为:
可执行程序为:
其中辅助文件中存放的是要解的方程组的方程个数和系数。在程序运行时要读取这个文件。若要计算不同的方程组,只需更改此文件中的数据即可。
本程序还自定义了一个库,。""、""、""、""、 ""、"",声明的函数有:
void banner(void);
void bye(void);
void fatal(string format);
void fbanner(stream sout);
void hold(void);
这几个函数均在中定义。
附:(1)
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#define NAME "作者:XXX"
#define CLASS "版本号:"
#define string char*
#define stream FILE*
void banner(void);
void bye(void);
void fatal(string format);
void fbanner(stream sout);
void hold(void);
(2)源代码文件清单
#include ""
void when( char date[], char hour[] )
{
time_t now; // Integer encoding of date and time.
string nowstring; // Date and time in a readable form.
now = time( NULL ); // Get date and time from the system.
nowstring =
高斯消元算法实现目的与用途 来自淘豆网www.taodocs.com转载请标明出处.