迭代法求方程组实现

迭代法求方程组实现

ID:41387115

大小:84.31 KB

页数:12页

时间:2019-08-23

迭代法求方程组实现_第1页
迭代法求方程组实现_第2页
迭代法求方程组实现_第3页
迭代法求方程组实现_第4页
迭代法求方程组实现_第5页
资源描述:

《迭代法求方程组实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、方程组迭代法实现在数值分析课程中,有许多诸如迭代之类的计算方法,可以非常有效通过求迭代近似解决许多无法求,或很难求精确解的问题。但这类方法往往有着非常巨人的计算暈,并不适合通过人力自行解决,所以我便打算自己编写一个程序,可以实现三种求方程组解的迭代法。另外,由于SOR法会有寻找最佳的w值的需求,所以也一并实现了寻找SOR法的最佳w。在编写程序之前,应对三种方法的迭代过程充分了解。雅可比迭代法:<唇说(一讣"厂-讣+勺)_。23兀3__a2nXn+E)(〃)一%"厂色2兀2-annXn+bn)高斯■赛徳尔法:

2、*+】)=丄(—知乜⑷_知尢广)41~aXna)+/)兀2(如)={_(_§內(3)―住®⑷a2nXnk)+b2)(/V)々丫伙+1)_门r(*)w/j+lA/+l-ainXnk)+2)SOR法:X(z乂X⑹+于根据以上的迭代法的思想,设计了程序,运行界面如下:**方程组迭代法求解程序********对于形如:5*xl+3*x2=78*xl+2*x2=3请按537823的形式输入方程组,主对角线上元素须不为0请输入你选择的迭代方式:输入1选择雅可比迭代法输入2选择高斯-赛徳尔法输入3选择SOR法1你选择

3、了雅可比法请输入方程组个数n:2请按示例方式输入方程组121011方程组输入完成,请输入迭代初始值00请输入精度(无穷范数):0.01结巣为.-L0000001.000000迭代次数为:3操作完成请输入你选择的迭代方式:输入1选择雅可比迭代法输入2选择高斯-赛徳尔法输入3选择SOR法妳入0结束程斥2你选择了高斯-赛徳尔法请输入方程组个数n:3请按示例方式输入方程组8-3220411-133631236方程组输入完成,请输入迭代初始值000请输入精度(无穷范数):o.0001结果为:3.0000021.999

4、9990.999999迭代次数为:操作完成请输入你选择的迭代方式:输入1选择雅可比迭代法输入2选择高斯-赛徳尔法输入3选择SOR法输入0结束程序3你选择了SOR法请输入方程组个数n:3请按示例方式输入方程组521-12-142202-3103方程组输入完成,请输入迭代初始值000请输入精度(无穷范数):0.0001系统自动匹配最佳W值,请输入1自行输入W值,请输入1匹配到最佳的W值为:0.885000驱为:-4.0000382.9999972.000007迭代次数为:8操作完成请输入你选择的迭代方式:输入1

5、选择雅可比迭代法输入2选择高斯-赛徳尔法输入3选择SOR法输入0结束程序3你选择了SOR法请输入方程组个数n:3请按示例方式输入方程组521-12-142202-3103方稈组输入完成,请输入迭代初始值000请输入精度(无穷范数):0.0001系统自动匹配最住W值,请输入1自行输入W值,请输入2请输入SOR法的w:0.9结果为■-4.0000262.9999882.000004迭代次数为:8操作完成请输入你选择的迭代方式:输入1选择雅町比迭代法输入2选择高斯-赛徳尔法输入3选择SOR法编入0结束程序该程序在

6、使用过程中对用户进行引导,用户可自行选择方法,并输入方程组,程序为用户提供解答,并给出迭代次数。如图所示,其中高斯赛德尔法输入了课本第六章的例题中1.2式,而SOR法则是课本第六章习题的第八题,并且还发现课本第八题的答案有误,经我人工检验后,上述程序中的解才是正确答案。在下面附录上另附代码。反思:该程序并没有直接检验迭代的收敛性,而只是在迭代次数过多的情况下而未结朿的情况下判断其不收敛,缺少严谨性,可以在迭代性的收敛证明上继续改进。而SOR法的最佳w值也仅仅只是确保到达所需精度的迭代次数为次数为最小,而非真

7、正意义上迭代速度最快的wc即仅仅只是保证次数最小的一个可行w值。另外由于吋间原因和技术上的不足,无法做出更具有用户体验的界面,原意是做成类似小程序或是网页等可视化形式而非dos命令行界面,在用户体验上可以继续改进。附录实现代码如下,为.cpp文件,可在编译器上编译后直接使用:#includedoubleabsolutefdoublea){讦(avO)return-a;elsereturna;}voidjacobi(doubleA[][101],doublex[],doubleb[]Jntn

8、,doubleq){inti,j;doubleoldx[100];//x(k)doublenewx[100];//x(k+l)for(i=0;ivn;i++){oldx[i]=x[i];〃赋予初始值}doublemaxdeta=0;for(i=0;ivn;i++){newx[i]=b[i];for(j=O;j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。