计算方法第一次报告

上传人:油条 文档编号:35275214 上传时间:2018-03-13 格式:PDF 页数:7 大小:399.53KB
返回 下载 相关 举报
计算方法第一次报告_第1页
第1页 / 共7页
计算方法第一次报告_第2页
第2页 / 共7页
计算方法第一次报告_第3页
第3页 / 共7页
计算方法第一次报告_第4页
第4页 / 共7页
计算方法第一次报告_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《计算方法第一次报告》由会员分享,可在线阅读,更多相关《计算方法第一次报告(7页珍藏版)》请在金锄头文库上搜索。

1、计算方法 第一次 上 机 报告 地球与空间科学学院 1300012622 顾舒杰 一 、题目 介绍 第二章 上机习题1 题 对 Runge 函数 (见(2.5.2) 式) , 利用下列条件做插值逼近, 并与 的 图像进行比较 。 (1 ) 用等距节点 = -5 + i , i = 0,1,2, , 10, 绘出它的10 次 Newton 插值多项式的图像; (2 ) 用节点 = 5 ,i = 0,1,2 ,20,绘出它的 20 次 Langrage 插值多项式的图像; (3 ) 用等距节点 = -5 + i ,i = 0,1,2 ,10 ,绘出它的分段线性 插值函数 的图像; (4 ) 用等距

2、节点 = -5 + i , i = 0,1,2, , 10, 绘出它的三次 Hermite 插值函数 的图像; (5 ) 用等距节点 = -5 + i ,i = 0,1,2 ,10 ,绘出它的三次 自然 样条插值函数 的图像。 二、实验原理 1. Newton 插值方法如下: n阶Newton 插值多项式为 ( )= 0+ 0, 1( 0)+ 0, 1, , ( 0)( 1)( 1), 其中 0, 1, 为差商, 0= ( 0). 2.Lagrange 插值方法如下: n阶Lagrange 插值多项式为 ( )= ( )( ) ( ) =0 其中, ( )=( 0)( 1)( ) 3. 线性分

3、段插值方法如下: ( , ( ) =0 4. 分段三次Hermite插值方法: ( )=( ( )+ ( ) =0 其中yi和mi指插值点的函数值和一阶导数值. ( )和 ( )由下式给 出 5. 三次样条插值方法:利用上述方法基函数 ( ), ( ),写出 ( )=( ( )+ ( ) =0 再使其满足 ( )二阶导数连续的条件,求解即可(过程见课本41-43 页)。 三 、解答 (1)代码( 牛顿插值函数) : function f = Newton(x,y,x0) syms t; if(length(x) = length(y) n = length(x); c(1:n) = 0.0;

4、return; end f = y(1); y1 = 0; l = 1; for(i=1:n-1) for(j=i+1:n) y1(j) = (y(j)-y(i)/(x(j)-x(i); end c(i) = y1(i+1); l = l*(t-x(i); f = f + c(i)*l; simplify(f); y = y1; if(i=n-1) if(nargin = 3) f = subs(f,t,x0); else f = collect(f); f = vpa(f, 6); end end end Command Window 指令: clf y = 1./(1+x.*x); xi

5、= -5:0.1:5; y_x=1./(1+xi.*xi); yi = Newton(x,y,xi); plot(xi,y_x,xi,yi,r-); 图像 : 图中蓝色 曲线为Runge 函数,红色为插值函数 。 (下同) 由 图中可以看出,随着|x|增大,插值函数逐渐偏离 R(x)。 (2)代码 : function f = Language(x,y,x0) syms t l; if(length(x) = length(y) n = length(x); else disp(x和y的维数不相等!); return; end p=sym(0); for (i=1:n) l=sym(y(i);

6、 for(k=1:i-1) l=l*(t-x(k)/(x(i)-x(k); end; for(k=i+1:n) l=l*(t-x(k)/(x(i)-x(k); end; p=p+l; end simplify(p); f = subs (p,t,x0); f = vpa(f,6); end Command Window 指令: clf %清空上一次 留下的图像 t = 0:1:20; x = 5.*cos(2.*t+1)./42).*3.14); y = 1./(1+x.*x); %计算 插值点 xi = -5:0.1:5; %用于画图的点 y_x=1./(1+xi.*xi); %原函数 值

7、yi = Langrage(x,y,xi); %插值函数 值 做出图像 : 说明 :由 图中可知, 随着|x|的增大,插值函数与 Runge 函数开始出 现 偏离并 有 增大 ,但相对于 Newton 插值函数仍然吻合地很好。 (3) 因为matlab 中有线性插值函数, 故直接调用,写出指令: clf %清空上一次留下的图像 x = -5:1:5; y = 1./(1+x.*x); %计算插值点 xi = -5:0.1:5; %用于画图的点 y_x=1./(1+xi.*xi); %原函数值 yi = interp1(x,y,xi,linear); %插值函数值 plot(xi,y_x,xi,

8、yi,r-); %画图 做出图像 : 说明 :由图中可以知道 ,随着|x|增大,线性插值函数与 Runge 函数 的偏差逐渐 减小,这一点与前两个函数有明显不同。 (4) 直接调用 三次Hermite 插值函数,写出指令: clf %清空上一次留下的图像 x = -5:1:5; y = 1./(1+x.*x); %计算插值点 xi = -5:0.1:5; %用于画图的点 y_x=1./(1+xi.*xi); %原函数值 yi = interp1(x,y,xi,pchip); %插值函数值 plot(xi,y_x,xi,yi,r-); %画图 说明 :该 图像与 原图像 吻合地很 好,只有 在(

9、-2,-1)( 1,2) 之间有 极小偏差 , 在 所示范围内 并未出现明显 Runge 现象。 (5) 直接调用matlab 三次自然 样条插值函数,写出指令: clf x = -5:1:5; y = 1./(1+x.*x); xi = -5:0.1:5; y_x=1./(1+xi.*xi); yi = interp1(x,y,xi,spline); plot(xi,y_x,xi,yi,r-); 做出图像 : 说明 :该 插值函数与 原函数基本吻合。 四 、实验结果分析 (1) Newton 插值,由图象可以看出插值函数 在|x|增大(比如大于2)的 情形下 眼中偏离原函数, 只能在0附近较

10、小的区间内符合Runge函数。这是因为Newton 或者Lagrange 插值多项式的数值稳定性很差,由于插值多项式次数较高(10 次),所以计算的舍入误差较大。 (2)Lagrange 插值。采用 非线性的插值节点选取方法, 使得图像在整体上与 原函 数 较为吻合 ,因此可知,选取插值节点的方法对于图像的拟合程度影响显著。 (3) 分段线性插值。 这种插 值方法相较后两种而言较为简单而且由图象可见其能 较好地逼近原函数, 但由图象可以看出本例中的插值函数图象为折线,在插值 节点不可微。 (4) 分段三次 Hermite 插值和三次自然样条插值。有图像可知 ,这两种方法对原 函数 均是 很好的拟合, 在 所示范围内均无明显偏差 。 这是因为这两种方法不仅用 到了插值节点的函数值,而且用到了他们的一 阶导数值,所以吻合程度 很好。 五 、讨论 在 本次上机实习中,通过 运用 matlab 对几种 上课讲过的插值函数 进行可视化的 研究,初步掌握了 matlab 的使用方法,同时又对上课的讲授内容有了 更为 清晰 的认识。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号