admin 管理员组

文章数量: 1086019


2024年3月29日发(作者:padding默认值)

题目一:多项式插值

某气象观测站在8:00(AM)开始每隔10分钟对天气作如下观测,用三次

多项式插值函数(Newton)逼近如下曲线,插值节点数据如上表,并求出9点

30分该地区的温度(x=10)。

x

y

1

2

3

4

5

6

7

8

二、数学原理

假设有n+1个不同的节点及函数在节点上的值(x

0

,y

0

),……(x

n

,y

n

),

插值多项式有如下形式:

P(

0

(

((xx

1

)

((xx

n

n

x)

1

x-x

0

2

x-x

0

n

x-x

0

)(xx

1

(1)

(y

i

其中系数

i

(i=0,1,2……n)为特定系数,可由插值样条

P

n

x

i

(i=0,1,2……n)确定。

根据均差的定义,把x看成[a,b]上的一点,可得

f(x)= f(

x

0

)+f[

x

0

,x

1

](

x-x

0

f[x,

x

0

]= f[

x

0

,x

1

]+f[x,

x

0

,x

1

] (

x-x

1

……

f[x,

x

0

,…x

n-1

]= f[x,

x

0

,…x

n

]+ f[x,

x

0

,…x

n

](x-x

n

)

综合以上式子,把后一式代入前一式,可得到:

f(x)= f[

x

0

]+f[

x

0

,x

1

](

x-x

0

)+ f[

x

0

,x

1

,x

2

](

x-x

0

)(

x-x

1

)+

…+ f[x,

x

0

,…x

n

](

x-x

0

)…(x-x

n-1

)+ f[x,

x

0

,…x

n

,

x

]

n

= N

n

1

x)

(x)+

R(

n

x)

其中

N

n

(x)= f[

x

0

]+f[

x

0

,x

1

](

x-x

0

)+ f[

x

0

,x

1

,x

2

](

x-x

0

)(

x-x

1

+

…+ f[x,

x

0

,…x

n

](

x-x

0

)…(x-x

n-1

)

(2)

R(

n

x)

= f(x)- N

n

(x)= f[x,

x

0

,…x

n

,

x

]

n

1

x)

(3)

n

=(

x-x

0

)…(x-x

n

)

1

x)

Newton插值的系数

i

(i=0,1,2……n)可以用差商表示。一般有

k

f

(4)

[

x

0

,x

1

x

k

] (k=0,1,2,……,n )

f(x

i

把(4)代入(1)得到满足插值条件N

(i=0,1,2,……n)的

n

x

i

n次Newton插值多项式

N

n

(x)=f(

x

0

)+f[

x

0

,x

1

](

x-x

1

)+f[

x

0

,x

1

,x

2

](

x-x

1

)(

x-x

2

+……+f[

x

0

,x

1

x

n

](

x-x

1

)(

x-x

2

)…(

x-x

n-1

).

其中插值余项为:

1

f

n

x)f(x)-N(x)

n

R(

n1

x)

(n1)!

介于

x

0

,x

1

x

k

之间。

三、程序设计

function [y,A,C,L]=newdscg(X,Y,x,M)

% y为对应x的值,A为差商表,C为多项式系数,L为多项式

% X为给定节点,Y为节点值,x为待求节点

n=length(X); m=length(x); % n为X的长度

for t=1:m

z=x(t); A=zeros(n,n);A(:,1)=Y';

s=; p=; q1=; c1=;

for j=2:n

for i=j:n

A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1));

end

q1=abs(q1*(z-X(j-1)));c1=c1*j;

end

C=A(n,n);q1=abs(q1*(z-X(n)));

for k=(n-1):-1:1

C=conv(C,poly(X(k)));

d=length(C);C(d)=C(d)+A(k,k);

end

y(k)= polyval(C, z); %输出y值

end

L(k,:)=poly2sym(C); %输出多项式

>> syms M,X=[1,3,5,7];Y=[,,,];x=10;

>> [y,A,C,L]=newdscg(X,Y,x,M)

y =

A =

0 0 0

0 0

0

C =

L =

- x^3/480 - (19*x^2)/160 + (697*x)/480 + 3387/160

四、结果分析和讨论

对于不超过三次的插值多项式,x如果选取1,3,5,7这三个点能够得到较好

的三次插值多项式L=^^2++。当x=10时,也即9点30分时的温度为度,结果分

析知此值应是偏小的。对于选取不同的插值节点,能够得到不同的插值多项式,

误差也不尽相同。

五、完成题目的体会与收获

对于牛顿插值法有了更深的了解,合理选择插值节点很重要。加深了对其原

理的认识,学会了牛顿插值法的matlab编程,对matlab计算方法更加熟悉。通

过完成这道题使我受益匪浅。


本文标签: 插值 节点 得到 每隔