#公式与实现# Jacobi迭代 Gauss-Seidel迭代
2015-12-08 14:55
453 查看
程序实现:
double MaxOfList(vector<double>x){ double max=x[0]; int n=x.size(); for(int i=0;i<n;i++) if(x[i]>max) max=x[i]; return max; } //雅可比迭代公式 void Jacobi(vector<vector<double> > A,vector<double> B,int n){ vector<double> X(n,0); vector<double> Y(n,0); vector<double> D(n,0); int k=0; //记录循环次数 do{ X=Y; for(int i=0;i<n;i++){ double sum=0; for(int j=0;j<n;j++){ if(i!=j) sum += A[i][j]*X[j]; } Y[i]=(B[i]-sum)/A[i][i]; cout<<left<<setw(8)<<Y[i]<<" "; } cout<<endl; k++; for(int a=0;a<n;a++){ D[a]=X[a]-Y[a]; } }while( MaxOfList(D)>0.00001 || MaxOfList(D)<-0.00001); return ; }
//高斯赛让德迭代公式 void GaussSeidel(vector<vector<double> > A,vector<double> B,int n){ vector<double> X(n,0); vector<double> Y(n,0); vector<double> D(n,0); int k=0; //记录循环次数 do{ Y=X; for(int i=0;i<n;i++){ double sum=0; for(int j=0;j<n;j++){ if(i!=j) sum += A[i][j]*X[j]; } X[i]=(B[i]-sum)/A[i][i]; cout<<left<<setw(8)<<X[i]<<" "; } cout<<endl; k++; for(int a=0;a<n;a++){ D[a]=X[a]-Y[a]; } }while( MaxOfList(D)>0.00001 || MaxOfList(D)<-0.00001); return ; }
对比
JacobiGauss-Seidel
对应程序实现中,只需用新生成的X值,直接覆写掉原来的X值即可,但是最后为了查看是否达到迭代精度,需要暂存一趟迭代的结果。
程序引用:
【数值分析】迭代法解方程:牛顿迭代法、Jacobi迭代法
/article/1353796.html
很好的讲义地址
华东师范大学 矩阵计算 讲义
http://math.ecnu.edu.cn/~jypan/Teaching/MatrixComp/index.html
另一个程序引用:
Jacobi迭代法的思想及C语言编程
http://wenku.baidu.com/link?url=hF1RZMfra4htZ33k6HY8rHXkEQ2hAZGREnOBUSB12zfChPPTJomCgd3pEcHhNNO69s4ahW3wUy6aI6ctB_6HXsLtNAMOF6bHAP6u-IvZVMW
Gauss-seidel迭代法的思想及C语言编程
http://wenku.baidu.com/link?url=QYNW-VS5YrLnbjaQH-LIwky7FIOv8GbcQpDq5NFNFQUATIgTDwW2ANSuKYQZ5RGtdSCWtm1SIqLGsAXc8zEKDSd-Bsca5UxcNiaMJz3gzGe
相关文章推荐
- 数据结构-C:二叉树的遍历
- c++
- Unix Systems Programming
- 二进制文件读取写入(一)
- 关于理论、模型与算法
- log4j日志之xml形式
- 杭电2066 一个人的旅行(最短路)(floyd)
- iOS 简单实现重新获取验证码并倒计时60秒
- weblogic下载地址
- HDU 5592——ZYB's Premutation——————【线段树单点更新、单点查询】
- error C2039: “SetDefaultDllDirectories”: 不是“`global namespace'”的成员
- Oracle 的 rownum 问题
- .JsonParseException: Invalid UTF-8 start byte 0xb2
- 网络爬虫基本工作流程和抓取策略
- 《计算机图形学与几何造型导论》读书笔记1
- petaPar培训文档
- 等参元的高斯积分详解
- 水平集函数具体实现
- 分片实验的实现
- 自由表面处理,表面张力的实现