




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#includeusing namespace std; #define kk 50 /定义最大方程元数int n,i,c,j,ll,hh,gg,mm;double Akkkk,xkkkk,bkk,ykk,akk,zkk,m,nn,d,e=1,w,fff ;void main()cout*endl;cout*本程序可以用雅可比迭代法,塞德尔迭代法,逐次超松弛法求解线性方程组*endl;cout*endl;/*数据的输入*/*bb:*/cout输入的方程元数n;cout请输入方程系数矩阵:endl;for(i=0;in;i+) for(j=0;jAij;cout请输入右边向量:endl;for(i=0;ibi;cout输入你想要的迭代精度(建议1e-5以上)!fff;cout输入最大迭代次数(建议300次以上)!mm;/*判断是否对角占优*/ for(i=0;in;i+)/ / for(j=0;jd)/ / cout该方程不对角占优,迭代不收敛endl;/ cout是否继续?是(0),否(1)hh;/ if(hh!=1)/ goto bb;/ else exit(1);/ / /*计算出迭代矩阵*for(i=0;in;i+) bi=bi/Aii; for(j=0;jn;j+) if(i=j) xii=0; else xij=-Aij/Aii; /*输出迭代矩阵*cout计算出迭代矩阵为:endl;for(i=0;in;i+) for(j=0;jn;j+) coutxij ; coutbi ; coutendl; /*迭代方法的选择*cout请你选择迭代方法!endl;coutendl;coutendl;cout选用雅可比迭代法,请输入(1)!endl;coutendl;coutendl;cout选用塞德尔迭代法,请输入(2)!endl;coutendl;coutendl;cout选用逐次超松弛法,请输入(3)!endl;coutendl;coutll;/*赋迭代初值*cout输入迭代初值endl;for(i=0;iyi;int f=1;switch(ll)case 1:goto cc; break;case 2:goto aa; break;case 3:goto dd;/*雅可比迭代法* cc:cout ; for(i=1;in+1;i+) coutXi ;cout精度;coutendl;cout迭代初值为: ;coutsetiosflags(ios:fixed); for(i=0;in;i+) coutyi ; coutfff) for(i=0;in;i+) zi=yi; for(i=0;in;i+) nn=0; for(j=0;je) e=fabs(zi-yi); if(i=0) coutsetiosflags(ios:fixed); cout第setw(3)setprecision(3)f+次迭代 ; coutsetiosflags(ios:fixed); coutsetw(8)setprecision(8)yi ; coute; coutmm) cout迭代次数大于mm次endl; cout认为方程发散,迭代不收敛endl; exit(1); coutendl; coutendl; cout方程迭代了f-1次,达到你所要求的精度fffendl; cout最后结果为:endl; coutendl; for(i=0;in;i+) coutXi+1=yi; coutendl; exit(1);/*塞德尔迭代法*aa:cout ; for(i=1;in+1;i+) coutXi ;cout精度;coutendl;cout迭代初值为: ;coutsetiosflags(ios:fixed); for(i=0;in;i+) coutyi ; coutfff) for(i=0;in;i+) zi=yi; nn=0; for(j=0;je) e=fabs(zi-yi); if(i=0) coutsetiosflags(ios:fixed); cout第setw(3)setprecision(3)f+次迭代 ; coutsetiosflags(ios:fixed); coutsetw(8)setprecision(8)yi ; coute; coutmm) cout迭代次数大于mm次endl; cout认为方程发散,迭代不收敛endl; exit(1); coutendl; coutendl; cout方程迭代了f-1次,达到你所要求的精度fffendl; cout最后结果为:endl; coutendl; for(i=0;in;i+) coutXi+1=yi; coutendl; exit(1);/*逐次超松弛法*dd: cout输入加速因子W(0W2):w;/*if(w2)|(w0) cout输入错误!加速因子W(0W2):endl; cout请重新输入:w;if(w=2) cout输入错误!加速因子W(0W2):endl; cout请重新输入:w;if(w=0) cout输入错误!加速因子W(0W2):endl; cout请重新输入:w;cout ; for(i=1;in+1;i+) coutXi ;cout精度;coutendl;cout迭代初值为: ;coutsetiosflags(ios:fixed); for(i=0;in;i+) coutyi ; coutfff) for(i=0;in;i+) zi=yi; nn=0; for(j=0;je) e=fabs(zi-yi); if(i=0) coutsetiosflags(ios:fixed); cout第setw(3)setprecision(3)f+次迭代 ; coutsetiosflags(ios:fixed); coutsetw(8)setprecision(8)yi ; coute; coutmm) cout迭代次数大于mm次endl; cout认为方程发散,迭代不收敛endl; exit(1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论