- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C实验报告高斯消元法
高斯肖元法C++上机实验报告
学生姓名: 学 号: 专业班级:
实验类型: 综合
一 实验项目名称
全选主元高斯消去法解线性方程组
二 实验原理
设有n元线性方程组(考虑便于C++程序数组表示,方程的下标从0开始),
写为矩阵形式为Ax=b,其中A为线性方程组的系数矩阵,x为列向量,是方程组的解,b也是列向量.
一般来讲,可以假定矩阵A是非奇异阵。(n阶矩阵A的行列式不为零,即 |A|≠0,则称A为非奇异矩阵 , ,
将系数矩阵A和向量b放在一起,形成增广矩阵B:
全选主元消去就在矩阵B上进行,整个过程分为如下两个步骤:
第一步:消去过程。
对于k从0开始到n-2结束,进行以下三步。
首先,从系数矩阵A的k行k列开始的子矩阵中选取绝对值最大的元素作为主元素。例如:
然后交换B的第k行与第行,第k列与第列,这样,这个子矩阵中具有最大绝对值的元素被交换到
最后进行消去计算:
第二步,回带过程:
三 代码的实现
整个程序分为5个独立文件,Matrix.h文件中包括矩阵类Matrix的定义,Matrix.cpp文件中包括该类成员函数的实现,LinearEqu.h文件中包括线性方程组类LinearEqu的定义,LinearEqu.cpp文件中包括该类的成员函数实现文件;7-9.cpp文件包括程序的主函数,主函数中定义了一个类LinearEqu的对象,通过这个对象求解一个四元线性方程组。
//Matrix.h文件一,定义一个CMatrix类
#ifndef _MATRIX_H
#define _MATRIX_H
class CMatrix //定义CMatrix基类
{
public: //外部接口
CMatrix(int size=2); //构造函数
~CMatrix(); //析构函数
void setMatrix(const double*values); //矩阵赋初值
void printMatrix() const; //显示矩阵
int getsize() const{return size;} //得到矩阵大小
double element(int i,int j){return elements[i*size+j];}
double element(int i,int j)const{return elements[i*size+j];}
private: //保护数据成员
int size; //定义矩阵的大小
double*elements; //矩阵存放数组首地址
};
#endif //_MATRIX_H
//LinearEqu.h 文件二,CLinearEqu类定义
#ifndef _LINEAR_EQU_H
#define _LINEAR_EQU_H
#include Matrix.h
class CLinearEqu:public CMatrix //公有派生类CLinearEqu定义
{
public: //外部接口
CLinearEqu (int size=2); //构造函数
~CLinearEqu(); //析构函数
void setLinearEqu(const double*a,const double*b); //方程赋值
bool solve(); //全选住院高斯消去法求解方程
void printLinearEqu()const; //显示方程
void printSolution()const; //显示方程的解
private: //私有数据
double*sums; //方程右端项
double*solution; //方程的解
};
#endif //_LINEAR_EQU_H
经过公有派生,LinearEqu类获得了除构造函数、析构函数之外的Matrix
文档评论(0)