当前位置:文档之家› 数值分析报告

数值分析报告

MATLAB具有高效的数值计算以及符号计算功能,能使用户能够使用户从繁杂的数学运算分析中解脱出来;同时,MATLAB还具有完备的图形处理功能,实现计算结果和编程的可视化;具有友好的界面用户界面和接近数学表达式的自然化语言,更贴近使用者的思路;具有丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为用户提供了大量方便使用的处理工具。
附录
1.newton法计算程序
()
clc,clear
syms x
format long
y1=diff(log(x+sin(x)),x);%对原函数求导
y=log(x+sin(x));
z=input('input');
n=0;
xi=0;
while abs(xi-z)>=1e-8%设置精度
xi=z;
Y1=subs(y1,x,z);%计算函数值
1.000000000000000 0.000016935087808 0.000016933026655
当h=0.2时,
x yΔy
1.0e+03 *
0 0.001000000000000 0
0.000200000000000 0.005000000000000 0.004981684361111
0.000400000000000 0.025000000000000 0.024999664537372
3.3
从上面结果中可以看到,在h=0.1时,绝对误差在逐步变小,因此在这种情况下认为此方法是稳定的。当h=0.2时,绝对误差逐渐扩大,因此在h=0.2时,算法不稳定。
1)用标准的四阶Runge-Kutta算法计算常微分方程时,不同的步长对算法的稳定性有影响。不够稳定的步长下面的计算,误差会越来越大,结果失真严重。
2)从sinx=0的两种方法中可以看出,Newton-Steffensen迭代法明显快于Newton法,且Newton和Newton-Steffensen迭代法在单根附近没有较快的收敛速度,迭代法是否收敛,与初始近似值x0的好坏有重大关系,如在x0=1.6处得到的收敛解很大,这是因为f’(x)=cos(1.6 180/ ) ,很难说明此处的敛散性。
Columns 8 through 14
-18.1566-17.9069-11.0226 2.0284 19.8549 40.3626 61.0840
Columns 15 through 17
79.5688 93.7700 102.3677)
2.2
1)根据题目要求,多项式拟合通过MATLAB提供的polyfit()函数实现,并给出其对应规律的近似多项式。用次数分别为3,4,5,6的多项式进行拟合,根据所编程序,在MATLAB命令窗口输入拟合多项式次数,运行得到结果如下:
X0
NEWTON
Steffensen
迭代次数
收敛解
迭代次数
收敛解
第一问
0.1
6
0.510973429388569
9
0.510973429388569
1
6
0.510973429388569
4
0.510973429388569
1.5
不收敛
6
0.510973429388569
2
24
NaN + NaNi
10
《数值分析上机实习报告》
2015年12月

本次上机实习全部以MATLAB7.0软件作为运算环境进行方程组求解、数值积分、微分的求解。MATLAB(MATrixLABoratory)是1984年MathWork公司研发一种广泛应用于工程计算以及数值分析领域的新型高级语言。经过多年的发展与竞争已经成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率较高,深受广大科技工作者欢迎。
0.000600000000000 0.125000000000000 0.124999993855788
0.000800000000000 0.625000000000000 0.624999999887465
0.001000000000000 3.125000000000000 3.124999999997939
3
6.283185307179580
3
3
3.141592653589790
3
NaN
1.3
1)从Newton和Newton-Steffensen迭代法可以看出,Newton-Steffensen迭代法明显快于Newton法,从计算结果看出x=0.510973429388569为最终精确解,而x0=0.1和1时收敛速度较快,说明牛顿法与基于牛顿法Steffensen加速法在单根附近有较快的收敛速度,迭代法是否收敛,与初始近似值x0的好坏有重大关系。
利用题目中所给对照数据编程与所求多项式近似函数f(x)进行比对,运行MATLAB得到结果如下:
图2.5对照数据与近似函数对比
由图像可知参照数据基本上在六次多项式拟合得到的近似函数上。根据MATLAB程序得到最大相对计算误差为0.0146,说明拟合程度较好。
由2.6图可知,线性插值方法绘制出的曲线较为粗糙,三次样条插值方法与Hermite插值方法绘制出的曲线较为理想,但就精度而言本例样条插值方法略逊于三次Hermite插值方法。
MATLAB具有以下一些优势:(1)友好的工作平台和编程环境;(2)简单易用的程序语言;(3)强大的科学计算机数据处理能力;(4)出色的图形处理功能;(5)应用广泛的模块集合工具箱;(6)使用的程序接口和发布平台;(7)应用软件开发(包括用户界面)。
选用MATLAB作为本次上机实验的实验环境主要有以下原因:(1)MATLAB语言是的运算过程更加贴近于数学语言,运算过程方便学习相关内容的知识点一级公式等;(2)MATLAB的计算结果可以直接显示函数运算图像,直观清晰地分析计算结果;(3)MATLAB对于一些数值运算过程来说,直接提供了运算方法,比如,一些特殊的矩阵和一些特定的函数,可以直接在运算和程序过程中表达,这为计算的简洁化带来很大的帮助;(4)MATLAB语言的数据运算功能较为强大,充分满足计算精度。
图2.1三次多项式拟合结果示意图图2.2四次多项式拟合结果示意图
图2.3五次多项式拟合结果示意图图2.4六次多项式拟合结果示意图
2)插值多项式计算,通过MATLAB提供的interp1()函数来实现。就本例来讲拟分别采用线性插值、三次样条插值,以及三次Hermite插值方法进行曲线拟合,得到曲线如下所示:
Y=subs(y,x,z);
Y1=double(Y1);
Y=double(Y);
z=z-Y/Y1;
n=n+1;
if n>100%通过循环控制迭代步数
n=0;
z=0;
break;
end
end
n
double(z)
(2)
clc,clear
syms x
format long
y1=diff(sin(x),x);
当h=0.1时,
x yΔy
0 1.000000000000000 0
0.100000000000000 0.333333333333333 0.197998050096721
0.200000000000000 0.111111111111111 0.092795472222377
0.300000000000000 0.037037037037037 0.034558284860371
通过本次上机实践,我学习了一定的MATLAB语言技巧,对今后的科学研究有比较大的帮助。同时,掌握一门享有较高认可度的软件的使用方法是解决问题的一大有利武器。提高的对科学研究以及数学计算的热情。使用MATLAB语言可以很大程度上帮助我们解决繁杂的数值计算问题,得到理想的计算结果,同时可以保证较高计算精度和计算效率,极大地提高了工作效率。同时,MATLAB软件有优良的绘图功能,今后一定会继续挖掘其中的新内容,学习更加精髓的部分,并且熟练应用于解决实际问题和科学研究中。
Columns 8 through 14
4.3000 4.7000 5.1000 5.5000 5.9000 6.3000 6.7000
Columns 15 through 17
7.1000 7.5000 7.9000
yi =
Columns 1 through 7
42.1498 41.4620 35.1182 24.3852 11.2732 -1.7813-12.3006
1
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迭代法在相同精度下迭代结束。其迭代结果与迭代次数如下:
2
2.1
某过程涉及两变量x和y,拟分别用插值多项式和多项式拟合给出其对应规律的近似多项式,已知xi与yi之间的对应数据如下:
xi=1,2,3,4...........10
yi = 34.658840.3719 14.6448 -14.2721-13.3570 24.8234 75.2795
103.5743 97.4847 78.2392
0.510973429388569
4
相关主题