数值分析上机实践_第1页
数值分析上机实践_第2页
数值分析上机实践_第3页
数值分析上机实践_第4页
数值分析上机实践_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、分别用牛顿法,及牛顿-Steffensen法 (1) 求ln(x+sinx)=0的根。初值x0分别取0.1, 1,1.5, 2, 4进行计算。(2) 求sinx=0的根。初值x0分别取1,1.4,1.6, 1.8,3进行计算。分析其中遇到的现象与问题。(1)、newton法(1)、对应M文件为newton1如下:function x=newton1(x0) x=x0-(x0+sin(x0)*log(x0+sin(x0)/(1+cos(x0);while (x-x0>0)|(x-x0<0) x0=x; x=x0-(x0+sin(x0)*log(x0+sin(x0)/(1+cos(

2、x0);end>> newton1(0.1)ans = 0.5110>> newton1(1)ans = 0.51101.5、2.4作为初值不适合,计算结果出现复数。 (2)对应M文件为newton2如下:function x=newton2(x0) x=x0-sin(x0)/cos(x0);while (x-x0>0)|(x-x0<0) x0=x; x=x0-sin(x0)/cos(x0);end>> newton2(1)ans = 0>> newton2(1.4)ans = 3.1416>> newton2(1.6)a

3、ns = 31.4159>> newton2(1.8)ans = 6.2832>> newton2(3)ans = 3.1416>> newton2(3.3)ans = 3.1416>> newton2(3.9)ans = 3.1416 初始值取值不同,有可能造成迭代公式发散。计算不出正确值,或是计算得出错误的值。(2)、newton-steffensen加速法(1)、对应的M文件为NS111如下:function x=NS111(x0)y0=x0-(x0+sin(x0)*log(x0+sin(x0)/(1+cos(x0);z0=y0-(y0+s

4、in(y0)*log(y0+sin(y0)/(1+cos(y0);x=x0-(y0-x0)*(y0-z0)/(z0-2*y0+x0);while (abs(x-x0)>0.00001) x0=x;y0=x0-(x0+sin(x0)*log(x0+sin(x0)/(1+cos(x0);z0=y0-(y0+sin(y0)*log(y0+sin(y0)/(1+cos(y0); x=x0-(y0-x0)*(y0-z0)/(z0-2*y0+x0);endx=x0 >> NS111(0.1)x = -10.7295 - 3.1908ians = -10.7295 - 3.1908i>

5、;> NS111(1)x = 0.5140ans = 0.5140>> NS111(1.5)x = 0.5140 - 0.0000ians = 0.5140 - 0.0000i>> NS111(2.4)x = 2.9105e+002 -4.0048e-001ians = 2.9105e+002 -4.0048e-001i (2)、对应M文件为NS2如下:function x=NS2(x0)y0=x0-sin(x0)/cos(x0);z0=y0-sin(y0)/cos(y0);x=x0-(y0-x0)*(y0-z0)/(z0-2*y0+x0);while (abs(

6、x-x0)>0.00001) x0=x;y0=x0-sin(x0)/cos(x0);z0=y0-sin(y0)/cos(y0); x=x0-(y0-x0)*(y0-z0)/(z0-2*y0+x0);end x=x0 >> NS2(1)x = 0.0311ans = 0.0311>> NS2(1.4)x = -0.0311ans = -0.0311>> NS2(1.6)x = 3.1727ans = 3.1727>> NS2(1.8)x = 9.3937ans = 9.3937>> NS2(3)x = 3.1105ans = 3.

7、1105>> NS2(3.3)x = 3.1727ans = 3.1727两种算法算出的X值有略微的差别,说明两者的计算精度不同.2 松弛因子对SOR法收敛速度的影响。用SOR法求解方程组Ax=b,其中要求程序中不存系数矩阵A,分别对不同的阶数取w=1.1, 1.2, .,1.9进行迭代,记录近似解x(k)达到|x(k)-x(k-1)|<10-6时所用的迭代次数k,观察松弛因子对收敛速度的影响,并观察当w<=0或w>=2会有什么影响?解:本题的主要目的为分析松弛因子对收敛速度的影响,在编写程序是需要输出迭代次数,程序能够接受不同的松弛因子w,而且可以算出方程的解.

8、 本题方程组很特殊,无论是几阶,其解都是1. 而且无论是几阶,都可以将SOR迭代公式写成下式 : (1in)xik=xik-1-w4-3+4xik-1-xi+1k-1 i=1 xik=xik-1-w4-2-xi-1k+4xik-1-xi+1k-1 2in-1xik=xik-1-w4-3+4xik-1-xi-1k i=n 使用上式不难编出程序,本程序可以输入方程阶数和w值,可以求出迭代次数和解向量,程序的初始值设置为0向量,程序中设置迭代终止条件|x(k+1)-x(k)|1<10-6 ,本程序只适于上式,不具普遍性.由于本题方程组很特殊,所以程序既没有存系数矩阵,也没有用向量存系

9、数.源代码见附录A .表8 迭代次数计算汇总 方程阶数 W567891.1991011121.212121314141.314151616171.414151616171.525252525251.632323334341.745454747461.871737375741.9151151151153155从上面的结果可以看出,对于本方程组,随着w的增大,大大地降低了迭代速度,方程阶数的提高也有增大迭代次数的趋势.下面分析w<=0 的情况.还是取5到9阶的方程,w分别取为-0.1 -0.5 -1.0 -2.0 四个值,结果均不收敛.下面分析w>=2 的情况. 还是取5到9阶的方程,

10、w分别取为2.0 2.1 2.5 3 四个值,结果均不收敛.从书上的理论可知,SOR迭代法收敛的一个必要条件是0<w<2 ,程序验算的结果证明了这个理论.总结与分析1. SOR迭代法的关键还是写出收敛的迭代格式,C+程序只负责迭代计算.2. 从本题来看w取为1.1时迭代速度最快,取为1.9时收敛速度最慢.3. SOR方法是求解大型稀疏矩阵方程组的有效方法之一,如果遇到系数矩阵是稀疏矩阵,那么应该想到这种方法.4. 对本题这种三对角方程组,追赶法更加适宜. SOR迭代法程序(C+)#include<iostream>#include<cmath>#includ

11、e<iomanip>#include<vector>using namespace std;double norm1(const vector<double>& v1,const vector<double>& v2)int i;double ans=0.0;for(i=0;i<=v1.size()-1;i+)ans+=fabs(v1i-v2i);return ans;int main()int i,n,js=0;double w;cin>>n;cin>>w;vector<double> x1(n),x2(n);fill(x1.begin(),x1.end(),0.0);fill(x2.begin(),x2.end(),0.0);while(1)x20+=(-(w/4)*(-3-x21+4*x20);for(i=1;i<=x2.size()-2;i+)x2i+=(-(w/4)*(-2-x2i-1+4*x2i-x2i+1);x2x2.size()-1+=(-(w/4)*(-3+4*x2x2.size()-1-x2x2.size()-2);js+;if(norm1(x1,x2)<1e-6) break;else x1=x2;cout<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论