- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验五线性方程组-1240111118-武元甲
实验五线性方程组 一 实验目的 通过本课程的实习,学会编写全主元消去法的计算程序。掌握解线性方程组的最基本算法及其运用,进一步了解该解法的功能、优缺点,领会系数矩阵对解的影响。 二 实验内容 本实验将线性方程组的高斯-赛德尔迭代法和高斯列主元消去法实现为类CLinear_Equations,调用该类实现线性方程组的求解。该类结构如下 class CLinear_Equations { public: CLinear_Equations(void); CLinear_Equations(float **ppA,float *pB,int D); //向类中公有变量和指针传递数据 ~CLinear_Equations(void); float * Adjust(float * pX);//一步迭代 float * Gauss_Seidel(float * pX0,float e); float Distance_Vector(float * pX0, float * pX1);//计算两个向量之差的范数 int Search_Pricipal_Element(int Col);//寻找第Col列的主元 void Exchange(int Row1, int Row2);//交换第Row1行与第Row2行的元素 void Slash(int Row);//削去第Row列对角线以下的元素 float * Elimination(void);// 回代过程,返回值为最终解向量 float * Gaussian_Elimination(void); float **pp_A,*p_B; //分别存放系数矩阵、常数项向量 int m_D; //方程组的维数 }; 为了方便,使用二维动态数组。可调用下面的函数为二维指针分配动态存储空间和销毁空间。为了方便程序的移植和重复利用,可将这两个函数写在一个文件MatrixAllocate.h中。 templateclass T bool New(T **ppData,int H,int W) {//该函数为二维指针ppData分配动态存储空间 T *ppData1 = new T[W*H]; ppData=new T*[H]; for(int i=0;iH;i++) { ppData[i]=ppData1+i*W; } return true; } templateclass T bool Delete(T **ppData) {//该函数销毁二维指针ppData T *ppData1=ppData[0]; delete ppData1; delete ppData; ppData=NULL; return true; } 2.1 高斯-赛德尔迭代法 当时,该迭代过程停止。 首先,需要一个计算两个向量间距离的函数,用以判断迭代过程是否终止。 float CLinear_Equations::Distance_Vector(float * pX0, float * pX1) { } 然后,可将单步迭代编写为一个函数,以方便后面的编程 float * CLinear_Equations::Adjust(float * pX) {//参数存放,返回值为 } 最后,调用单步迭代函数Adjust,实现高斯-赛德尔迭代函数 float * CLinear_Equations::Gauss_Seidel(float * pX0,float e) {//返回值为最终解向量 } 2.2 高斯列主元消去法 高斯列主元削去法可分解为下面几步 选主元,即对于第Col列,选出该列主元所在的行Row(而不是获取主元的值); 行交换,即将第Row行与第Col行的所有元素互换; 列消元,即将第Col列的第Col+1行以下的元素消为0,并将第Col行、第Col列元素化为1; 从开始,逐步回代,求出解向量。 可以先将这些操作编写为函数 int CLinear_Equations::Search_Pricipal_Element(int Col) {//该函数选取数组pp_A第Col列的主元,返回主元所在的行标 } void CLinear_Equations::Exchange(int Row1, int Row2) {//该函数交换数组pp_A第Row1行和第Row2行的元素 } void CLinear_Equations::Slash(int Col) {//该函数消除数组pp_A第Col列中第Row行以下的元素 } float * CLinear_Equations
文档评论(0)