高丹计算方法高斯.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高丹计算方法高斯

对于高斯消去法、高斯列主元消去法、高斯全主元消去法的分析与实现 ——计算方法结业设计 高丹 高斯(Gauss)消元法 1.高斯消元法的基本思想 高斯(Gauss)消元法的基本思想是:按照线性方程组给定的方程和变量顺序进行消元,将线性方程组化为等价的上三角形方程组,然后再通过回代法求出此线性方程组的解。 例 用高斯消元法解方程组 解 第一次消元: ,得 第二次消元: ,得 最后,原方程组的解为 2高斯消元法的计算公式 用高斯消元法解阶线性方程组 设,则以乘以第1个方程加到第个方程,则方程组化为 第2次消元:设,则以乘以第个方程加到第个方程,则方程组化为 第n-2次消元后化为同解方程组: 第n-1次消元:设,则以乘以第个方程加到第个方程,则方程组化为 从原方程组化为上三角形方程组的过程,称为消元过程。求解上三角形方程组的过程,称为回代过程。 消的计算为 回代过程的计算公式为:   消元过程和回代过程一起,组成了解阶线性方程组的高斯消元法 高斯消元法可实行的条件是元素全不为零。 高斯消元法的总运算量为 消元的计算为 第k次消元设 以乘以第个方程加到第个方程 即:对的每个i 对,执行 注:用代替 回代过程如下: 根据最后一个方程直接可得 如此再解出,一般有 1.4高斯消去法程序: #include iostream #include vector #include fstream #include cmath #include iomanip #includestring using namespace std; class GS{ public: GS(string fn=string()) { if(fn.size()==0){ cout 请输入方程组系数增广矩阵文件名:; cinfn; } //fn文件名 ifstream fin(fn.c_str()); if(!fin) { throw fn+文件不存在!; } finN; A.resize(N+1); for(int i=0;iN+1;i++) A[i].resize(N+2); x.resize(N+1); for(int ii=1;ii=N;ii++) for(int j=1;j=N+1;j++) finA[ii][j]; } void print() { coutN阶endl; for(int i=1;i=N;i++){ for(int j=1;j=N+1;j++) coutfixedsetw(12) A[i][j] ; coutendl; } cout*************************endl; } void go() { for(int k=1;k=N-1;k++) { if((fabs(A[k][k])-1e-6)0) throw string(主元为0,失败!); for(int i=k+1;i=N;i++) { for(int j=k+1;j=N+1;j++) A[i][j]+=(-1)*A[i][k]/A[k][k] * A[k][j]; A[i][k]=0; } print(); } //回代 if(fabs(A[N][N])1e-6) throw string(主元为0,失败!); x[N]=A[N][N+1]/A[N][N]; for(int kk=N-1;kk=1;kk--) { double s=0.0; for(int j=k+1;j=N;j++) s=s+A[kk][j]*x[j]; x[k]=(A[kk][N+1]-s)/A[kk][kk]; } for(int i=1;i=N;i++) coutX[i]=x[i]endl; } private: int N; vectorvectordouble A; vectordouble x; }; int main() { try { GS f(); f.print(); f.go(); } catch(string s) { cout s; } catch(int n) { coutn; } return 0; } 2.高斯列主元消元法

文档评论(0)

zhanghc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档