《数值分析上机实习报告》2015年12月目录目录............................................................................................................................2序言............................................................................................................................11Newton和Newton-Steffensen迭代法求解比较..................................................21.1计算题目......................................................................................................21.2计算过程与结果..........................................................................................21.3结果分析......................................................................................................22插值多项式和多项式拟合.....................................................................................32.1计算题目......................................................................................................32.2计算过程与结果..........................................................................................42.3结果分析......................................................................................................53四阶Runge-Kutta算法..........................................................................................63.1计算题目......................................................................................................63.2计算过程与结果..........................................................................................63.3结果分析......................................................................................................74总结.........................................................................................................................8附录ANewton和Newton-Steffensen迭代法求解程序.........................................9附录B插值多项式和多项式拟合程序..................................................................11附录C四阶Runge-Kutta算法...............................................................................12西南交通大学第1页序言本次上机实习全部以MATLAB7.0软件作为运算环境进行方程组求解、数值积分、微分的求解。MATLAB(MATrixLABoratory)是1984年MathWork公司研发一种广泛应用于工程计算以及数值分析领域的新型高级语言。经过多年的发展与竞争已经成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率较高,深受广大科技工作者欢迎。MATLAB具有高效的数值计算以及符号计算功能,能使用户能够使用户从繁杂的数学运算分析中解脱出来;同时,MATLAB还具有完备的图形处理功能,实现计算结果和编程的可视化;具有友好的界面用户界面和接近数学表达式的自然化语言,更贴近使用者的思路;具有丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为用户提供了大量方便使用的处理工具。MATLAB具有以下一些优势:(1)友好的工作平台和编程环境;(2)简单易用的程序语言;(3)强大的科学计算机数据处理能力;(4)出色的图形处理功能;(5)应用广泛的模块集合工具箱;(6)使用的程序接口和发布平台;(7)应用软件开发(包括用户界面)。选用MATLAB作为本次上机实验的实验环境主要有以下原因:(1)MATLAB语言是的运算过程更加贴近于数学语言,运算过程方便学习相关内容的知识点一级公式等;(2)MATLAB的计算结果可以直接显示函数运算图像,直观清晰地分析计算结果;(3)MATLAB对于一些数值运算过程来说,直接提供了运算方法,比如,一些特殊的矩阵和一些特定的函数,可以直接在运算和程序过程中表达,这为计算的简洁化带来很大的帮助;(4)MATLAB语言的数据运算功能较为强大,充分满足计算精度。西南交通大学第2页1Newton和Newton-Steffensen迭代法求解比较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.2计算过程与结果求方程ln(x+sinx)=0的解即求方程x+sinx=1的解。使用Newton法,令f(x)=x+sinx-1,则f’(x)=cosx+1,直至|xk+1-xk|10-8时,结束迭代。使用Newton-Steffensen迭代法在相同精度下迭代结束。其迭代结果与迭代次数如下:X0NEWTONSteffensen迭代次数收敛解迭代次数收敛解第一问0.160.51097342938856990.510973429388569160.51097342938856940.5109734293885691.5不收敛60.510973429388569224NaN+NaNi100.5109734293885694不收敛70.510973429388569第二问1504NaN1.473.1415926535898004-3.1415926535897901.6831.415926535897900625.1327412287183001.846.28318530717958036.283185307179580333.1415926535897903NaN1.3结果分析1)从Newton和Newton-Steffensen迭代法可以看出,Newton-Steffensen迭代法明显快于Newton法,从计算结果看出x=0.510973429388569为最终精确解,而x0=0.1和1时收敛速度较快,说明牛顿法与基于牛顿法Steffensen加速法在单根附近有较快的收敛速度,迭代法是否收敛,与初始近似值x0的好坏有重大关系。西南交通大学第3页2)从sinx=0的两种方法中可以看出,Newton-Steffensen迭代法明显快于Newton法,且Newton和Newton-Steffensen迭代法在单根附近没有较快的收敛速度,迭代法是否收敛,与初始近似值x0的好坏有重大关系,如在x0=1.6处得到的收敛解很大,这是因为f’(x)=cos(1.6×180/π)≈0,很难说明此处的敛散性。2插值多项式和多项式拟合2.1计算题目某过程涉及两变量x和y,拟分别用插值多项式和多项式拟合给出其对应规律的近似多项式,已知xi与yi之间的对应数据如下:xi=1,2,3,4...........10yi=34.658840.371914.6448-14.2721-13.357024.823475.2795103.574397.484778.23921)请用次数分别为3,4,5,6的多项式拟合并给出最好近似结果f(x)。2)请用插值多项式给出最好近似结果。(下列数据为另外的对照记录,它们可以作为近似函数的评价参考数据。xi=Columns1through71.50001.90002.30002.70003.10003.50003.9000Columns8through144.30004.70005.10005.50005.90006.30006.7000Columns15through177.10007.50007.9000yi=Columns1through742.149841.462035.118224.385211.2732-1.7813-12.3006Columns8through14-18.1566-17.9069-11.02262.028419.854940.362661.0840西南交通大学第4页Columns15through1779.568893.7700102.3677)2.2计算过程与结果1)根据题目要求,多项式拟合通过MATLAB提供的polyfit()函数实现,并给出其对应规律的近似多项式。用次数分别为3,4,5,6的多项式进行拟合,根据所编程序,在MATLAB命令窗口输入拟合多项式次数,运行得到结果如下:图2.1三次多项式拟合结果示意图图2.2四次多项式拟合结果示意图图2.3五次多项式拟合结果示意图图2.4六次多项式拟合结果示意图2)插值多项式计算,通过MATLAB提供的interp1()函数来实现。就本例来讲拟分别采用线性插值、三次样条插值,以及三次Hermite插值方法进行曲线拟合,得到曲线如下所示:西南交通大学第5页图2.6.不同插值方法拟合结果2.3结果分析由MATLAB运行结果可以直观地看出,六次多项式的拟合结果最好,此时由程序得到最好近似结果的函数表达式为:f(x)=0.01936*x^6-0.5408*x^5+5.114*x^4-16.9*x^3-0.867*x^2+66.38*x-18.7利用题目中所给对照数据编程与所求多项式近似函数f(x)进行比对,运行MATLAB得到结果如下:图2.5对照数据与近似函数对比由图像可知参照数据基本上在六次多项式拟合得到的近似函数上。根据MATLAB程序得到最大相对计算误差为0.0146,说明拟合程度较好。12345678-20020406080100120对照数据近似函数f(x)西南交通大学第6页由2.6图可知,线性插值方法绘制出的曲线较为粗糙,三次样条插值方法与Hermite插值方法绘制出的曲线较为理想,但就精度而言本例样条插值方法略逊于三次Hermite插值方法。3四阶Runge-Kutta算法3.1计算题目用Runge-Kutta4阶算法对初值问题