logo资料库

数值分析插值法实验报告.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
成都信息工程大学计算机学院 数值分析实验报告 插值法实验 姓 学 班 名: 号: 级: 完成日期: 任课教师: 张健 2015051122 计算机应用 152 班 2018 年 3 月 21 日 陈俊副教授 1
实验一 插值法实验 一、 实验目的 1.用 多 项 式 插 值 法 问 题 进 行 模 拟 和 预 测 ; 2 比 较 用 不 同 次 数 的 插 值 多 项 式 对 问 题 进 行 预 测 的 效 果 ; 3 根 据 (2)中 比 较 的 结 果 说 明 用 多 项 式 插 值 对 问 题 进 行 预 测 的 局 限 性 。 二、 实验题目 1.用表 1-1 中的世界人口统计数值估计 1980 年的人口 表 1-1 年 1960 1970 1990 2000 人口 3 039 585 530 3 707 475 887 5 281 653 820 6 079 603 571 要求: (a) 采用经过 1970 和 1990 年估计值的直线; (b) 经过 1960 年、1970 年以及 1990 年估计值的抛物线; (c) 经过全部 4 个数据点的三次曲线。 并分别与 1980 年的人口估计值 4 452 584 592 进行比较。 2. 世界石油产量以每天百万桶计,如表 1-2 所示。估计 2010 年的石油产量。 (a) 采用线性插值; (b) 采用经过全部数据点的 9 次多项式。 在这个例子里,哪个 2010 年石油产量的估计值是更合理。你以为插值多项式是数据的好 模型吗?请解释之. 年 1994 1995 1996 1997 1998 表 1-2 桶/天(×106) 67.052 68.008 69.803 72.024 73.400 年 1999 2000 2001 2002 2003 桶/天(×106) 72.063 74.669 74.487 74.065 76.777 三、 实验原理 1. 拉 格 朗 日 插 值 在 实 际应 用 中 ,一 般 采用 基 函 数 法 来构 造 插 值 函数 。将n次 拉 格朗 日 插 值 多 项式 2
用 ( ) nL x 来 记。设 ( ) L x n  ( ) l x y 0 0  ( ) l x y 1 1   ( ) l x y n n 待 定 的n次 多 项式 。 ,其 中 0 l x ( ) , ( ) , l x 1 ( ) l x , n 是 由 于 ( ) nL x 要 满 足插 值 条 件 ( L x i n 1 j 0 j ( l x i     ) j )  y i ( i   0,1, , n ) , 自 然地 求   i i ( i , j  0,1,  , n ) , , , , x , x , x x 1  1 i  ( A x x 显 然 , 0 1 i  ( ) l x i  是 ( ) )  il x 的 零 点, 于 是 x x  1 i 由 于 这一 多 项 式 已 经是n次 的 ,这 里 的 A 为 待 定常 数 。 利 用 条件 ( l x  , 可 得 i ) 1   (  n )( )( x i  x 0 x x  x 1  i ) (  x  x n ) 1  A  ( x i  x 0 )( x i  x 1 )  ( x i  1 x i )( x i  x i 1  )  ( x i  x n ) 1  于 是 ( ) l x i  ( x i )( x x x  0 )( x x  0 i   ) ( x x  1 ) ( x x  1 i   ( x i x i 1  1  ) )( x )( x i x  1 i  x  i 1  (  )  x  ( x i ) x n x  n ) (1)在 计 算机 上 构 造 拉 格朗 日 插 值 多 项式 , 采 用 以 下式 子 进 行 编 程 ( ) l x i  n x   x i j j 0  i  x j x j ( i  0 ,1,  , n ) ( ) L x n (2)Lagrange插 值 法 计 算 的程 序 框 图 n   i  0 ( ) l x y i i 3
输入xi,yi,x, N k=0,y=0 t =1 t  j  x  x  k , 0,  Y x j x k j * t N  1, k  1,  N y= y+t*yk k=k+1 k>N Y 输出y N 2. 牛 顿 插 值 学 生 补 充 牛 顿 插 值 法 原 理 和 流 程 图 (或 者 方 法 伪 代 码 ) function c = newtoninterp(xi,yi) n = length(xi); for i = 1:n for j = 1:n t(i,j) = 0; end end for j = 1:n t(j,1) = yi(j); end for i = 2:n 4
for j = i:n t(j,i) = (t(j,i -1) - t(j - 1,i - 1))/(xi(j) - xi(j - i + 1)); end end for i = 1:n c(i) = t(i,i); end end 四、 实验内容与结果 实验题目 1 (1) 程序代码: function v = Lagrange(x,y,u) n = length(x); v = zeros(size(u)); for k = 1:n w = ones(size(u)); for j = [1:k-1 k+1:n] w = (u - x(j))./(x(k) - x(j)).*w; end v = v + w * y(k); end end x=[1960,1970,1990,2000]; y=[3039585530,3707475887,5281653820,6079603571]; xi=1980 poly=LagrangePoly(x,y) 5
yi=subs(poly,'t',xi) plot(x,y,'o',xi,yi,'*'); plot(x,y,'o',xi,yi,'*',x,y); (2) 计算结果、图与分析 图 1 分析:如图 1,得到了 1980 年的人口数量,大约为 4.5 亿,与所给的数据趋势大致 拟合,就具有很好的参考价值。说明说选择的方法是在大体上是正确的。 实验题目 2 (1) 程序代码 x=1994:1:2003 xi=2004:1:2010 y=[67.052,68.008,69.803,72.024,73.400,72.063,74.669,74.487,74.065,76.777] yi=Lagrange(x,y,xi) 6
plot(x,y,'o',xi,yi,'*'); (2) 计算结果、图与分析 图 2 分析:如图 2 所示,得到的数据急剧的下降,并且出现了负值,这是不正确的,这 说明了在这道题的背景下,选用拉格朗日的插值是不合理的,应该改选其他的插值 方法来解决问题。 7
分享到:
收藏