




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、# include<iostream># include<cmath># define MAXN 4using namespace std;void M(double eMAXN);void Jacobi(double aMAXNMAXN, double bMAXN, double TOL);void Gauss( double aMAXNMAXN, double bMAXN, double TOL);void SOR( double aMAXNMAXN, double bMAXN, double w, double TOL);int main()int i,j,cho
2、ice;double aMAXNMAXN, bMAXN,TOL,w;TOL=pow(10,-6);cout<<"t*"<<endl; cout<<"tt本程序运用三种方法解简单的线性方程组!"<<endl;cout<<"tt 线性方程组的阶数暂定为4阶!"<<endl;cout<<"tt 源程序中可以更改方程阶数!"<<endl;cout<<"tt 温馨提示:更改MAXN!"<<
3、;endl;cout<<"t*"<<endl<<endl;cout<<"请先输入有关该线性方程组的数据:"<<endl<<endl; cout<<"线性方程组的系数矩阵:"<<endl; for(i=0;i<MAXN;i+)for(j=0;j<MAXN;j+)cin>>aij; cout<<"线性方程的右端项:"<<endl;for(i=0;i<MAXN;i+)cin
4、>>bi;cout<<endl; cout<<"以下有三种方法可供选择:"<<endl;cout<<"1-Jacobi 2-Gauss seidl 3-SOR "<<endl;cout<<"请选择要运用的方法:"<<endl;cin>>choice; switch(choice)case 1:Jacobi(a,b,TOL);break;case 2:Gauss(a,b,TOL);break;case 3:cout<<
5、"请输入w的值:"cin>>w;SOR(a,b,w,TOL);break;default:cout<<"该线性方程组无法运用以上的三种方法求的解!"<<endl;break;return 0;void M(double eMAXN)for(int i=1;i<MAXN;i+)if(ei>e0)e0=ei;void Jacobi(double aMAXNMAXN,double bMAXN, double TOL)int i,j; /声明一个中间变量 double s=0;/第一步:对线性方程组的系数矩阵进行赋
6、值/右端项 以及初始向量的初始化double x0MAXN=0,0,0,0;double xMAXN;double eMAXN;/第二步:利用while循环进行求解do for( i=0;i<MAXN;i+) /中间插入的 for循环 该循环用来 模仿求和公式for(j=0;j<MAXN && j!=i;j+) s+=aij*x0j; /外层循环 用来 求新的解 xi=(bi-s)/aii;/求误差向量ei=fabs(xi-x0i); /调用 子函数取得 该误差向量中的 最大分量M(e); /进行判断 将符合条件的 解向量输出if(e0<TOL)for( i=
7、0;i<MAXN;i+)cout<<"x"<<i<<"="<<xi<<endl; /如果不满足条件 则更新 初始向量for(i=0;i<MAXN;i+)x0i=xi; /清空 中介值 ss=0;while(e0>TOL);void Gauss(double aMAXNMAXN, double bMAXN, double TOL) int i,j;double s=0,s1=0,s2=0;double x0MAXN=0,0,0,0;double xMAXN;double eMAX
8、N;dofor( i=0;i<MAXN;i+)/当i等于0 的时候 值是利用Jacobi 公式求出来的 if(i=0)for( j=1; j<MAXN;j+)s+=aij*x0j; xi=(bi-s)/aii; else /利用Gauss seidel 方法计算 求和公式for(j=0; j<MAXN&& j!=i; j+) if(j<i) s1+=aij*xj; else s2+=aij*x0j; s=s1+s2; xi=(bi-s)/aii; /误差向量的 计算 ei=fabs(xi-x0i); /求向量的 范式M(e);/判断是否满足条件 将满足条
9、件的 解向量输出if(e0<TOL) /利用for 循环输出for(i=0;i<MAXN;i+)cout<<"x"<<i<<"="<<xi<<endl; /否则 就更换 初始解向量的 值for(i=0;i<MAXN;i+)x0i=xi; /更新解向量的 值 s1=s2=s=0;while(e0>TOL);void SOR(double aMAXNMAXN, double bMAXN, double w,double TOL)int i,j;/中介值double s=0,s
10、1=0,s2=0;double x0MAXN=0,0,0,0;double xMAXN;double eMAXN; do /外层循环for( i=0;i<4;i+) /解向量 第一个分量的 值if(i=0)for(j=1; j<MAXN;j+)s+=aij*x0j;xi=(1-w)*x0i+w*(bi-s)/aii;else/其余分量是利用 SOR算法 实现的for(j=0;j<MAXN && j!=i; j+) /用的 新值if(j<i)s1+=aij*xj;/用旧值elses2+=aij*x0j; /中介值的改变s=s1+s2;xi=(1-w)*x0i+w*(bi-s)/aii; /误差向量 ei=fabs(xi-x0i);/求向量的 范式M(e); /判断是否满足条件 if(e0<TOL) /若满足条件 则就爱那个解向量求出for(i=0;i<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级上册语文知识抢答
- 人力资源公司工作总结
- 2024年四年级英语上册 Unit 5 Our School教学实录 陕旅版(三起)
- Module 7 Unit 1 There is a horse in this photo.(教学设计)-2024-2025外研版(三起)英语四年级上册
- 安防监控录像培训课件
- 呼吸机操作及保养
- 2025企业借款合同协议书范本(合同版本)
- 2024秋八年级英语上册 Unit 9 Can you come to my party Section A (1a-2d)教学实录(新版)人教新目标版
- Module2 Unit1 (教学设计)-2024-2025学年外研版英语八年级上册
- 2025外贸购销合同范本
- 销售话术900句顺口溜
- 工程量确认单范本
- 曲臂车安全协议模板
- 腰椎间盘的诊断证明书
- 英语精读与写作(一)知到章节答案智慧树2023年长春工程学院
- DB31 SW-Z 017-2021 上海市排水检测井图集
- 农业机械学育苗移栽机械
- 澳大利亚PSC检查经过
- 01-14江苏大学车辆工程考研复试真题答案
- TMYZX 001-2021 酿酒专用小麦原粮
- 2023年湖北国土资源职业学院高职单招(数学)试题库含答案解析
评论
0/150
提交评论