数学建模实验报告(3)插值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学模型实验报告
——插值
专业:
姓名:李学号:
姓名:刘学号:
姓名:汪学号:
数学模型实验报告(插值)
一、 实验目的:
1、了解插值的基本内容。
2、掌握用数学软件包求解插值问题。
二、实验内容:
(一)一维插值
一、插值的定义 已知
n+1
个节点
,,1,0(),(n j y x j j =其中 j x 互不相同,不妨设
),10b x x x a n =<<<= 求
任一插值点 )(*j x x ≠处的插值.*
y
构造一个(相对简单的)函数
),(x f y =通过全部节点, 即 )
,1,0()(n j y x f j j ==再
用
)(x f 计算插值,即).(**x f y =
二、插值的方法
拉格朗日(Lagrange)插值
已知函数f (x )在n +1个点x 0,x 1,…,xn 处的函数值为 y 0,y 1,…,yn 。
求一n 次多项式函数Pn (x ),使其满足:
Pn (xi )=yi ,i =0,1,…,n .
解决此问题的拉格朗日插值多项式公式如下
∑=⋅=n
i i i n y x L x P 0
)()(
其中Li (x ) 为n 次多项式:
)
())(())(()
())(())(()(11101110n i i i i i i i n i i i x x x x x x x x x x x x x x x x x x x x x L ----------=
+-+-
称为拉格朗日插值基函数。
特别地:
两点一次(线性)插值多项式:
()10
100101
1y x x x x y x x x x x L --+--=
三点二次(抛物)插值多项式:
()()()()()()()()()()()()()2
120210121012002010212y x x x x x x x x y x x x x x x x x y x x x x x x x x x L -⋅--⋅-+-⋅--⋅-+-⋅--⋅-=
().,满足插值条件直接验证可知x L n
例
55,11
)(2
≤≤-+=
x x
x g 采用拉格朗日多项式插值:选取不同插值节点个数n +1,其中n 为插值多项式的次数,当n 分别取2,4,6,8,10时,绘出插值结果图形.
拉格朗日多项式插值的这种振荡现象叫 Runge 现象 解:
编写M 文件程序如下: m=101;
x=-5:10/(m-1):5; y=1./(1+x.^2);z=0*x;
plot(x,z,'r',x,y,'LineWidth',1.5), gtext('y=1/(1+x^2)'),pause n=3; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y1=lagr1(x0,y0,x); hold on ,
plot(x,y1,'b'),gtext('n=2'),
pause,hold off n=5; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y2=lagr1(x0,y0,x); hold on ,
plot(x,y2,'b:'),gtext('n=4'),
pause,hold off
n=7;
x0=-5:10/(n-1):5; y0=1./(1+x0.^2);
y3=lagr1(x0,y0,x);hold on , plot(x,y3,'r'),gtext('n=6'), pause,hold off n=9; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y4=lagr1(x0,y0,x);hold on ,
plot(x,y4,'r:'),gtext('n=8'),
pause,hold off n=11; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y5=lagr1(x0,y0,x);hold on , plot(x,y5,'m'),gtext('n=10')
分段线性插值
计算量与n 无关; n 越大,误差越小.
n n n x x x x g x L ≤≤=∞
→0),()(lim
例
66,11
)(2
≤≤-+=
x x
x g 用分段线性插值法求插值,并观察插值误差. 1. 在[-6,6]中平均选取5个点作插值 2. 在[-6,6]中平均选取11个点作插值 3. 在[-6,6]中平均选取21个点作插值 4. 在[-6,6]中平均选取41个点作插值 解:
编写M 文件程序如下:
x=linspace(-6,6,100); y=1./(x.^2+1);
x1=linspace(-6,6,5);%第三个参数表示插值点的个数,可分别改为11,21,41 y1=1./(x1.^2+1);
plot(x,y,x1,y1,x1,y1,'o','LineWidth',1.5), gtext('n=4'),
运行结果如下图:
结果分析:插值点越多越接近原函数
⎪⎪⎪⎪⎩
⎪⎪⎪⎪⎨⎧≤≤--≤≤--==+++---=∑其它,0,,)()
()(1
11
111
j j j j j j
j j j
j j n
j j j n x x x x x x x x x x x x x x x l x l y x L
三次样条插值
比分段线性插值更光滑。
在数学上,光滑程度的定量描述是:函数(曲线)的k 阶导数存在且连续,则称该曲线具有k 阶光滑性。
光滑性的阶次越高,则越光滑。
是否存在较低次的分段多项式达到较高阶光滑性的方法?三次样条插值就是一个很好的例子。
},1],,[),({)(1n i x x x x s x S i i i =∈=-
]
,[)()3),1,0()()2),1()()10223n i i i i i i i x x C x S n i y x S n i d x c x b x a x s ∈===+++=
)1,,1()()(),()(),()(111-=''='''='=⇒+++n i x s x s x s x s x s x s i i i i i i i i i i i i 自然边界条件)(0)()()40=''=''n x S x S )(,,,)4)3)2x S d c b a i i i i ⇒⇒
)()(lim x g x s =
g (x )为被插值函数。
例 66,11
)(2
≤≤-+=
x x x g 用三次样条插值选取11个基点计算插值(ych) 解:
编写M 文件程序如下:
x0=linspace(-5,5,11);
y0=1./(1+x0.^2); x=linspace(-5,5,100); y=interp1(x0,y0,x,'spline'); x1=linspace(-5,5,100); y1=1./(1+x1.^2);
plot(x1,y1,'k',x0,y0,'+',x,y,'r');
运行结果如右图:
用MATLAB 作插值计算
三、 用Matlab 解插值问题
一维插值函数:yi=interp1(x ,y ,xi ,'method')
yi xi :处的插值结果
x ,y :插值节点
xi :被插值点
'method':插值方法
注意:所有的插值方法都要求x 是单调的,并且xi 不能够超过x 的范围。
例:在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。
试估计每隔1/10小时的温度值。
解:
编写M 文件程序如下:
hours=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24]; h=1:0.1:12;
t=interp1(hours,temps,h,'spline'); plot(hours,temps,'+',h,t,hours,temp s,'r:')
xlabel('Hour'),ylabel('Degrees Celsius')
运行结果如右图:
例: 已知飞机下轮廓线上数据如下,求x 每改变0.1时的y 值。
X 0 3 5 7 9 11 12 13 14 15 Y
1.2
1.7
2.0
2.1
2.0
1.8
1.2
1.0
1.6
‘nearest’ :最邻近插值 ‘linear’ : 线性插值; ‘spline’ : 三次样条插值; ‘cubic’ : 立方插值。
缺省时: 分段线性插值。
解:
编写M文件程序如下:
x0=[0 3 5 7 9 11 12 13 14 15 ];
y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 ]; x=0:0.1:15;
y1=lagr1(x0,y0,x);
y2=interp1(x0,y0,x);
y3=interp1(x0,y0,x,'spline');
subplot(3,1,1)
plot(x0,y0,'k+',x,y1,'r')
grid
title('lagrange')
subplot(3,1,2)
plot(x0,y0,'k+',x,y2,'r') grid
title('piecewise linear') subplot(3,1,3)
plot(x0,y0,'k+',x,y3,'r') grid
title('spline')
运行结果如右图:-20
20
lagrange
051015
piecewise linear
051015
spline。