西南交通大学研究生数值分析作业
- 格式:doc
- 大小:178.00 KB
- 文档页数:13
数值分析上机报告
指导教师:赵海良
班级:
姓名:
学号:
电话:
2011年12月
序
随着计算机技术的迅速发展,数值分析在工程技术领域中的应用越来越广泛,并且成为数学与计算机之间的桥梁。要解决工程问题,往往需要处理很多数学模型,不仅要研究各种数学问题的数值解法,同时也要分析所用的数值解法在理论上的合理性,如解法所产生的误差能否满足精度要求:解法是否稳定、是否收敛及熟练的速度等。
由于工程实际中所遇到的数学模型求解过程迭代次数很多,计算量很大,所以需要借助如MATLAB,C++,VB,JA V A的辅助软件来解决,得到一个满足误差限的解。本文所计算题目,均采用C++编程。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格,在实际工程中得到了广泛应用,对解决一些小型数学迭代问题,C++软件精度已满足相应的精度。
本文使用C++对牛顿法、牛顿-Steffensen法对方程求解,对雅格比法、高斯-赛德尔迭代法求解方程组迭代求解,对Ru n ge-Kutt a 4阶算法进行编程,并通过实例求解验证了其可行性,并使用不同方法对计算进行比较,得出不同方法的收敛性与迭代次数的多少,比较不同方法之间的优缺性,比较各种方法的精确度和解的收敛速度。
目录
第一章牛顿法和牛顿-Steffensen法迭代求解的比较 (1)
1.1 计算题目 (1)
1.2 计算过程和结果 (1)
1.3 结果分析 (2)
第二章 Jacobi迭代法与Causs-Seidel迭代法迭代求解的比较 (2)
2.1 计算题目 (2)
2.2 计算过程与结果 (2)
2.3 结果分析 (3)
第三章 Ru n ge-Kutt a 4阶算法中不同步长对稳定区间的作用 (4)
3.1 计算题目 (4)
3.2 计算过程与结果 (4)
3.3 结果分析 (4)
总结 (5)
附件 (6)
附件 1(1.1第一问牛顿法) (6)
附件 2(1.1第一问牛顿-Steffensen法) (6)
附件 3(1.1第二问牛顿法) (6)
附件 4(1.1第二问牛顿-Steffensen法) (7)
附件 5(2.1 Jacobi迭代法) (7)
附件 6(2.1Causs-Seidel迭代法) (8)
附件 7(3.1 Ru n ge-Kutt a 4阶算法) (9)
第一章 牛顿法和牛顿-Steffensen 法迭代求解的比较
1.1 计算题目
分别用牛顿法,及基于牛顿算法下的Steffensen 加速法
(1) 求ln(x +sin x )=0的根。初值x0分别取0.1, 1,1.5, 2, 4进行计算。 (2) 求sin x =0的根。初值x0分别取1,1.4,1.6, 1.8,3进行计算。 分析其中遇到的现象与问题。
1.2计算过程和结果
1.对方程ln(x +sin x )=0,其导数有些复杂,我们可以对其进行变形,即求解x+sinx=1的解。使用牛顿法,令1sin )(-+=x x x f ,则x x f cos 1)(+=',直至
51101||-+⨯<-k k x x 时,结束迭代;然后再使用基于牛顿法的Steffensen 加速法进行计算,直至51101||-+⨯<-k k x x 时,结束迭代。其迭代结果与迭代次数如下表所示(注N1为牛顿法迭代次数,N2为基于牛顿法Steffensen 加速法迭代次数):
2.对方程sin x =0,使用牛顿法时,令x x f sin )(=,使用牛顿法计算,直至
51101||-+⨯<-k k x x 时,结束迭代;然后依据Steffensen 加速法进行编程计算,直至51101||-+⨯<-k k x x 时,结束迭代。其迭代结果与迭代次数如下表所示:
1.3结果分析
(1)从牛顿与Steffensen 加速法可以看出,牛顿—Steffensen 加速法迭代速度明显快于牛顿加速法,从计算结果可以看出,x=0.510973处取得精确值,而在x0=0.1,1处收敛速度较快,说明牛顿法与基于牛顿法Steffensen 加速法在单根附近有较快的收敛速度,迭代法是否收敛,与初始近似值x0的好坏很有关系。 (2)从sinx=0使用两种方法可以看出,Steffensen 加速法迭代速度明显快于牛顿加速法,且牛顿法和基于牛顿法Steffensen 加速法在单根附近有较快的收敛速度,迭代法是否收敛,与初始近似值x0的好坏很有关系,如在x0=1.6处,得到的收敛解很大,这是因为0)/1806.1cos()6.1(≈⨯='πf ,很难说明f(x)在此处是否发散或者是否收敛。
第二章 Jacobi 迭代法与Causs-Seidel 迭代法迭代求解的比较
2.1计算题目
用雅格比法与高斯-赛德尔迭代法解下列方程组Ax =b ,研究其收敛性,上 机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。
(1)A 行分别为A 1=[6,2,-1],A 2=[1,4,-2],A 3=[-3,1,4]; b 1=[-3,2,4]T , b 2=[100,-200,345]T ,
(2) A 行分别为A 1=[1,0,8,0.8],A 2=[0.8,1,0.8],A 3=[0.8,0.8,1];
b 1=[3,2,1] T , b 2=[5,0,-10]T ,
(3)A 行分别为A 1=[1,3],A 2=[-7,1];b =[4,6]T ,
2.2计算过程与结果
1.采用C++进行编程,分别采用用雅格比法与高斯-赛德尔迭代法对问题(1)进行迭代,x0= [0,0,0]T 为初始值。