文档库 最新最全的文档下载
当前位置:文档库 › 分段线性插值函数的编程实现

分段线性插值函数的编程实现

分段线性插值函数的编程实现
分段线性插值函数的编程实现

1 问题的提出

对2

1

()1f x x

=

+在(-5,5)上进行分段线性插值,取不同节点个数n ,得到不同分段线性插值函数.

虽然MATLAB 里有直接分段线性插值的函数,但为了对分段插值算法有更明确的理解,编写该程序是有必要的.

需要解决的问题:

1、 由已知数据节点编写程序,实现分段线性插值函数,从而能由所编函数得到非节点的函数值.

2、 比较用不同节点数所得插值函数与真实函数的误差,从而得出节点数与插值效果的关系.

2 理论基础

分段线性插值适用于计算简单、光滑性要求不高的插值问题,且其整体逼近

)(x f 的效果较好.

从几何意义上看,分段线性插值就是用折线近似代替曲线错误!未找到引用源。.

设在区间[a,b]上取n+1个点

.a 110b x x x x n n =<<<<=-

函数)(x f 在上述节点处的函数值为

)(y i i x f =

,,2,1,0)(n i = 于是得到n+1个点

).

,

(,

),

,

(,

,

1

1

0n

n

y

x

y

x

y

x

连接相邻两点错误!未找到引用源。和)

,

(

1

1+

+i

i

y

x,

,

2,1,0)

(n

i

=,得一折线函数)

(x

?,若满足:

(1))

(x

?在[a,b]上连续;

(2)错误!未找到引用源。)

,

,2,1,0

(n

i

=;

(3))

(x

?在每个小区间错误!未找到引用源。上是线性函数,

则称折线函数)

(x

?为分段线性插值函数.

模型一:

由分段线性插值函数的定义可知,)

(x

?在每个小区间错误!未找到引用源。上可表为

,

)

(

1

1

1

1

+

+

+

+

-

-

+

-

-

=

i

i

i

i

i

i

i

i y

x

x

x

x

y

x

x

x

x

x

?

错误!未找到引用源。)1-

,

,2,1,0

(n

i

=.

)

(x

?是一分段函数,若用基函数表示,只需对1

,

,2,1,0-

=n

i 令

?

?

?

?

?

?

?

?

?

=

-

-

=

-

-

=

+

+

+

-

-

-

,其他

略去

略去

)

(

,

)

(

,

)

(

1

1

1

1

1

1

n

i

x

x

x

x

x

x

x

i

x

x

x

x

x

x

x

x

l

i

i

i

i

i

i

i

i

i

i

i

显然,()

i

l x是分段的线性连续函数,且满足

?

?

?

=

=

k

i

k

i

x

l

k

i,0

,1

)

(

于是

=

=

n

i

i

i

x

l y

x

),

(

)

(?b

x

a≤

模型二:

首先确定间隔序列i ,使得:

1+≤≤i i x x x

第二个量是局部变量s ,其定义为 :

i x x s -=

最后一个量是一阶均差

i

i i

i i x x y y --=

++11δ

则插值基函数可表示为

i i i

i i

i k i s y x x y y x x y x L δ+=---+=++11)

()(

截断误差为:

))((2

1)(1'

'1i i x x x x f x R --=

-)(ξ []i i x x x ,1-∈ 若,)(2''M x f ≤错误!未找到引用源。,[]b a x ,∈令1--=i i i x x h 当[]i i x x x ,1-∈时

22114

1)(41))((i i i i i h x x x x x x =-≤

---- 从而错误!未找到引用源。222

1

218181)()(h M h M x P x f ≤≤- i n

i h h ≤≤=1m a x 当0→h 时有)()(1x f x P →即)(1x P 收敛于()f x 。

3 编程过程

1、模型一: 用MATLAB 分别建立m 文件:

(1)原函数fd1.m

(2)分段线性插值函数fd2.m

(3)比较不同节点数所得分段线性插值函数的插值效果fd3.m

2、选取插值节点数为偶数

在MATLAB窗口中执行:fd3 n=2的数据见附录,图像如下:

n=8的图如下:

-5-4-3-2-1012345

0.5

1

x

y

原函数(实线)-插值函数(虚线)

-5-4-3-2-101234

5 -1

-0.5

x

R

x

误差分析

-5-4-3-2-1012345

0.5

1

x

y

原函数(实线)-插值函数(虚线)

-5-4-3-2-101234

5 -0.4

-0.2

0.2

0.4

x

R

x

误差分析

n=20的图

-5-4-3-2-1012345

0.5

1

x

y

原函数(实线)-插值函数(虚线)

-5-4-3-2-10

12345 -0.1

-0.05

0.05

0.1

x

R

x

误差分析

3、模型二:用MATLAB分别建立m文件:

(1)分段插值函数fd22

(2)插值效果比较函数fd32(选取插值节点数为奇数)

源程序(参见附录).

在MATLAB窗口中执行:fd32

得下图:上图为不同节点数插值函数图像与原函数图像,下图为误差图像:

-5

-4-3-2-1012345

00.20.40.60.81-5

-4-3-2-1012345

-0.2

0.2

0.4

0.6

n=3n=5n=7n=9n=11

n=3n=5n=7n=9n=11

3、 由上所有的图可看出,由于原函数是偶函数,等距节点所得插值函数有很强对称性,下任取节点, 编写程序fd33.m ,得图.

上图为不同节点数插值函数图像与原函数图像,下图为误差图像:

-5-4

-3

-2

-1

1

2

3

4

5

00.20.40.60.81-5

-4-3-2-1012345

-1-0.5

0.5

n=3n=5n=7n=9n=11

n=3n=5n=7n=9n=11

4、 比较不同节点所得插值函数与被插函数误差的平方和,程序模板为d1.m 得下图:

红星由fd32得奇数节点误差平方和,绿星加圈由fd3得偶数节点误差平方和,圈由f33得随机节点误差平方和,数据见附录.

0510152025

20

40

60

80

100

120

140

n节点数

e

4 结果分析

1、不同插值节点数所得的分段线性插值函数,在节点处与原函数的函数值一定相同.

2、所得的分段线性插值函数在原函数斜率绝对值变化大的地方,与原函数的误差比较大.

3、由误差平方和e,插值节点个数越多,e有减小的趋势,最后趋于0.只考虑奇数或偶数个节点,则随节点数增加e严格减小.

4、随机生成的节点不如等距节点使插值效果好.

5 结论

插值节点个数越多,分段线性插值函数与原函数误差平方和有减小趋势,插值效果越好.

参考文献

[1] 李庆杨,王能超.数值分析.(第4版)[M].武汉:华中科技大学出版社,2006:

13-24.

[2] 肖筱南,赵来军.现代数值计算方法.[M].北京:北京大学出版社,2003:

146-149.

[3] 吴勃英,王德明.数值分析原理.[M].北京:科学出版社,2003:132-134.

[4] 刘卫国编.MATLAB程序设计教程.[M].北京:中国水利水电出版社,2001:

1-180.

[5] 蔺小林,蒋耀林.现代数值分析.[M].北京:国防工业出版社,2004:184-186.

附录

程序如下:

% fd1.m线性插值原函数

function y=fd1(x)

y=1./(1+x.^2);

% fd2.m 分段线性插值函数

function yi=fd2(x,y,xi)

n=length(x);

m=length(y);

if n~=m

error('X和Y向量的长度必须相同');

return;

end

for k=1:n-1

if abs(x(k)-x(k+1))

return;

end

if x(k)<=xi&xi<=x(k+1) % 保证x(k) < xi < x(k+1)

temp=x(k)-x(k+1);

yi=(xi-x(k+1))/temp*y(k)+(xi-x(k))/(-temp)*y(k+1)

return;

end

end

% fd3.m 比较插值效果

a=-5;

b=5;

n=input('请输入分端节点数:');

if n<=0

error('你输入的数据有误!');

break;

end

h=(b-a)/(n-1); % 求节点

x=a:h:b;

y=fd1(x);

xx=a:0.1:b; % 用分段线性插值函数求非节点函数值yyi=fd1(xx);

m1=length(xx);

z=zeros(1,m1);

for k1=1:m1

z(k1)=fd2(x,y,xx(k1));

end

w=z-yyi; % 计算误差

subplot(2,1,1);plot(x,y,'o',xx,yyi,'-',x,y,'k:');%插值图像xlabel('x');

ylabel('y');

title('原函数(实线)-插值函数(虚线)');

hold on

subplot(2,1,2);plot(xx,w,'k:'); % 误差的图像

xlabel('x');

ylabel('R(x)');

title('误差分析');

hold on

xx=xx';

yyi=yyi';

z=z';

w=w';

% fd22.m 分段线性插值函数

function v=fd22(x,y,u)

delta=diff(y)./diff(x);

n=length(x);

k=ones(size(u));

for j=2:n-1

k(x(j)<=u)=j;

end

s=u-x(k);

v=y(k)+s.*delta(k);

% fd32.m同时画不同节点的插值函数图像和误差图像

clear

close

t=[-5:0.01:5];

a=['k' 'g' 'r' 'c' 'm'];

for i=1:5

n=2*i+1;

x=linspace(-5,5,n); %把区间[-5 5]分为(n-1)份,算插值节点

y=fd1(x);

p=fd22(x,y,t);p=p'; %计算以(x,y)为插值点的插值函数在t处的各个值y1=fd1(t);y1=y1';

e=p-y1; %计算误差

subplot(2,1,1);plot(x,y,a(i));hold on; %画出插值函数图像及误差图像subplot(2,1,2);plot(t,e,a(i));hold on;

end

subplot(2,1,1);

legend('n=3','n=5','n=7','n=9','n=11')

subplot(2,1,2);

legend('n=3','n=5','n=7','n=9','n=11')

subplot(2,1,1);

fplot(@fd1,[-5 5],'k'); %画出原函数图像

hold off

%fd33.m 插值节点非等分区间获得

close

t=[-5:0.01:5];

a=['k' 'g' 'r' 'c' 'm'];

for i=1:5

n=2*i+1;

x=[-5 rand(1,n-2)*10-5 5]; %得(-5,5)上的n维随机向量

x=sort(x);

y=fd1(x);

p=fd22(x,y,t);p=p';

y1=fd1(t);y1=y1';

e=p-y1;

subplot(2,1,1);plot(x,y,a(i));hold on;

subplot(2,1,2);plot(t,e,a(i));hold on;

end

subplot(2,1,1);

legend('n=3','n=5','n=7','n=9','n=11')

subplot(2,1,2);

legend('n=3','n=5','n=7','n=9','n=11')

subplot(2,1,1);

fplot(@fd1,[-5 5],'k');

hold off

%fd1.m 比较不同节点数误差平方和

clear

t=[-5:0.01:5];a=[];b=[];

for i=1:10

n=2*i; %n=2*i+1则是奇数节点

x=linspace(-5,5,n)

y=fd1(x);

p=fd22(x,y,t);

y1=fd1(t);

e=p-y1;

e=e*e';

a=[a e];

b=[b n];

end

plot(b,a,'go')

xlabel('n节点数')

ylabel('e误差平方和')

hold on

n=2的数据:

X Y YI(原函数)W -5.0000 0.0385 0.0385 0

-4.9000 0.0400 0.0577 -0.0177

-4.8000 0.0416 0.0769 -0.0353

-4.7000 0.0433 0.0962 -0.0528

-4.6000 0.0451 0.1154 -0.0703

-4.5000 0.0471 0.1346 -0.0876

-4.4000 0.0491 0.1538 -0.1047

-4.3000 0.0513 0.1731 -0.1218

-4.2000 0.0536 0.1923 -0.1387

-4.1000 0.0561 0.2115 -0.1554

-4.0000 0.0588 0.2308 -0.1719

-3.9000 0.0617 0.2500 -0.1883

-3.8000 0.0648 0.2692 -0.2045

-3.7000 0.0681 0.2885 -0.2204

-3.6000 0.0716 0.3077 -0.2361

-3.5000 0.0755 0.3269 -0.2515

-3.4000 0.0796 0.3462 -0.2665

-3.3000 0.0841 0.3654 -0.2813

-3.2000 0.0890 0.3846 -0.2956

-3.1000 0.0943 0.4038 -0.3096

-3.0000 0.1000 0.4231 -0.3231

-2.9000 0.1063 0.4423 -0.336

-2.8000 0.1131 0.4615 -0.3484 -2.7000 0.1206 0.4808 -0.3601 -2.6000 0.1289 0.5000 -0.3711 -2.5000 0.1379 0.5192 -0.3813 -2.4000 0.1479 0.5385 -0.3905 -2.3000 0.1590 0.5577 -0.3987 -2.2000 0.1712 0.5769 -0.4057 -2.1000 0.1848 0.5962 -0.4113 -2.0000 0.2000 0.6154 -0.4154 -1.9000 0.2169 0.6346 -0.4177 -1.8000 0.2358 0.6538 -0.418 -1.7000 0.2571 0.6731 -0.416 -1.6000 0.2809 0.6923 -0.4114 -1.5000 0.3077 0.7115 -0.4038 -1.4000 0.3378 0.7308 -0.3929 -1.3000 0.3717 0.7500 -0.3783 -1.2000 0.4098 0.7692 -0.3594 -1.1000 0.4525 0.7885 -0.336 -1.0000 0.5000 0.8077 -0.3077 -0.9000 0.5525 0.8269 -0.2744 -0.8000 0.6098 0.8462 -0.2364 -0.7000 0.6711 0.8654 -0.1942 -0.6000 0.7353 0.8846 -0.1493 -0.5000 0.8000 0.9038 -0.1038 -0.4000 0.8621 0.9231 -0.061 -0.3000 0.9174 0.9423 -0.0249 -0.2000 0.9615 0.9615 0

-0.1000 0.9901 0.9808 0.0093

0 1.0000 1.0000 0 0.1000 0.9901 0.9808 0.0093 0.2000 0.9615 0.9615 0 0.3000 0.9174 0.9423 -0.0249 0.4000 0.8621 0.9231 -0.061 0.5000 0.8000 0.9038 -0.1038 0.6000 0.7353 0.8846 -0.1493 0.7000 0.6711 0.8654 -0.1942 0.8000 0.6098 0.8462 -0.2364

0.9000 0.5525 0.8269 -0.2744

1.0000 0.5000 0.8077 -0.3077 1.1000 0.4525 0.7885 -0.336 1.2000 0.4098 0.7692 -0.3594 1.3000 0.3717 0.7500 -0.3783 1.4000 0.3378 0.7308 -0.3929 1.5000 0.3077 0.7115 -0.4038 1.6000 0.2809 0.6923 -0.4114 1.7000 0.2571 0.6731 -0.416 1.8000 0.2358 0.6538 -0.418 1.9000 0.2169 0.6346 -0.4177

2.0000 0.2000 0.6154 -0.4154

2.1000 0.1848 0.5962 -0.4113

2.2000 0.1712 0.5769 -0.4057

2.3000 0.1590 0.5577 -0.3987

2.4000 0.1479 0.5385 -0.3905

2.5000 0.1379 0.5192 -0.3813

2.6000 0.1289 0.5000 -0.3711

2.7000 0.1206 0.4808 -0.3601

2.8000 0.1131 0.4615 -0.3484

2.9000 0.1063 0.4423 -0.336

3.0000 0.1000 0.4231 -0.3231

3.1000 0.0943 0.4038 -0.3096

3.2000 0.0890 0.3846 -0.2956

3.3000 0.0841 0.3654 -0.2813

3.4000 0.0796 0.3462 -0.2665

3.5000 0.0755 0.3269 -0.2515

3.6000 0.0716 0.3077 -0.2361

3.7000 0.0681 0.2885 -0.2204

3.8000 0.0648 0.2692 -0.2045

3.9000 0.0617 0.2500 -0.1883

4.0000 0.0588 0.2308 -0.1719

4.1000 0.0561 0.2115 -0.1554

4.2000 0.0536 0.1923 -0.1387

4.3000 0.0513 0.1731 -0.1218

4.4000 0.0491 0.1538 -0.1047

4.5000 0.0471 0.1346 -0.0876

4.6000 0.0451 0.1154 -0.0703

4.7000 0.0433 0.0962 -0.0528

4.8000 0.0416 0.0769 -0.0353

4.9000 0.0400 0.0577 -0.0177

5.0000 0.0385 0.0385 0

n 2 3 4 5 6 7

误差平方

136.9209 79.1689 63.334 6.9775 23.7384 0.8329 和

n 8 9 10 11 12 13 14 误差平方

9.0015 0.5726 3.6152 0.572 1.5676 0.4648 0.7472

n 15 16 17 18 19 20 21 误差平方

0.3366 0.3945 0.2327 0.2291 0.1593 0.1438 0.1101

分段线性插值法

《数值分析》实验报告 实验序号:实验五 实验名称: 分段线性插值法 1、 实验目的: 随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易 带来剧烈的震荡,带来数值的不稳定(Runge 现象)。为了既要增加插值的节点,减小插值 的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段 线性插值。 2、 实验内容: 求一个函数?(x )用来近似函数f (x ),用分段线性插值的方法来求解近似函数?(x ) 并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210和相应的函数 值n y y y ,...,,10,求一个插值函数)(x ?,满足以下条件: (1) ),...,2,1,0()(n j y x j j ==?; (2) )(x ?在每一个小区间[1,+j j x x ]上是线性函数。 对于给定函数11-,2511)(2≤≤+= x x x f 。在区间[]11-,上画出f (x )和分段线性插值函数)(x ?的函数图像。 1. 分段线性插值的算法思想: 分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j ,然后再 作它们的线性组合。分段线性插值基函数的特点是在对应的插值节点上函数值取 1,其它节点上函数值取0。插值基函数如下:

?????≤≤--=其它 ,0,)(101010x x x x x x x x l ???????????≤<--≤≤--=+++---其它 ,0,,)(11 1111j j j j j j j j j j j x x x x x x x x x x x x x x x l ?? ???≤≤--=---其它 ,0,)(111n n n n n n x x x x x x x x l 设在节点a ≤x0

lagrange插值分段线性插值matlab代码

Lagrange插值: x=0:3; y=[-5,-6,-1,16]; n=length(x); syms q; for k=1:n fenmu=1; p=1; for j=1:n if(j~=k) fenmu=fenmu*(x(k)-x(j)) p=conv(p,poly(x(j))) end end c(k,:)=p*y(k)/fenmu end a=zeros(1,n); for i=1:n for j=1:n a(i)=a(i)+c(j,i) end end 输出结果: fenmu = -1 p = 1 -1 fenmu = 2 p = 1 -3 2 fenmu = -6 p = 1 -6 11 -6 c = 0.8333 -5.0000 9.1667 -5.0000 fenmu = 1 p = 1 0 fenmu =

-1 p = 1 - 2 0 fenmu = 2 p = 1 -5 6 0 c = 0.8333 -5.0000 9.1667 -5.0000 -3.0000 15.0000 -18.0000 0 fenmu = 2 p = 1 0 fenmu = 2 p = 1 -1 0 fenmu = -2 p = 1 -4 3 0 c = 0.8333 -5.0000 9.1667 -5.0000 -3.0000 15.0000 -18.0000 0 0.5000 -2.0000 1.5000 0 fenmu = 3 p = 1 0 fenmu = 6 p = 1 -1 0 fenmu = 6 p = 1 -3 2 0 c = 0.8333 -5.0000 9.1667 -5.0000 -3.0000 15.0000 -18.0000 0 0.5000 -2.0000 1.5000 0 2.6667 -8.0000 5.3333 0 a =

分段线性插值法

《数值分析》实验报告 实验序号:实验五 实验名称: 分段线性插值法 1、 实验目的: 随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Runge 现象)。为了既要增加插值的节点,减小插值的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段线性插值。 2、 实验内容: 求一个函数?(x )用来近似函数f (x ),用分段线性插值的方法来求解近似函数?(x )并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210和相应的函数值n y y y ,...,,10,求一个插值函数)(x ?,满足以下条件: (1) ),...,2,1,0()(n j y x j j ==?; (2) )(x ?在每一个小区间[1,+j j x x ]上是线性函数。 对于给定函数11-,2511)(2≤≤+= x x x f 。在区间[]11-,上画出f (x )和分段线性插值函数)(x ?的函数图像。 1. 分段线性插值的算法思想: 分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j ,然后再 作它们的线性组合。分段线性插值基函数的特点是在对应的插值节点上函数值取 1,其它节点上函数值取0。插值基函数如下: 设在节点a ≤x0

插值算法与matlab代码

Matlab中插值函数汇总和使用说明 MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method') 其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量,'method'表示采用的插值方法,MA TLAB提供的插值方法有几种:'method'是最邻近插值,'linear'线性插值;'spline'三次样条插值;'cubic'立方插值.缺省时表示线性插值 注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。 例如:在一天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为12,9,9,10,18 ,24,28,27,25,20,18,15,13, 推测中午12点(即13点)时的温度. x=0:2:24; y=[12 9 9 10 18 24 28 27 25 20 18 15 13]; a=13; y1=interp1(x,y,a,'spline') 结果为:27.8725 若要得到一天24小时的温度曲线,则: xi=0:1/3600:24; yi=interp1(x,y,xi, 'spline'); plot(x,y,'o' ,xi,yi) 命令1 interp1 功能一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。 x:原始数据点 Y:原始数据点

xi:插值点 Yi:插值点 格式 (1)yi = interp1(x,Y,xi) 返回插值向量yi,每一元素对应于参量xi,同时由向量x 与Y 的内插值决定。参量x 指定数据Y 的点。 若Y 为一矩阵,则按Y 的每列计算。yi 是阶数为length(xi)*size(Y,2)的输出矩阵。 (2)yi = interp1(Y,xi) 假定x=1:N,其中N 为向量Y 的长度,或者为矩阵Y 的行数。 (3)yi = interp1(x,Y,xi,method) 用指定的算法计算插值: ’nearest’:最近邻点插值,直接完成计算; ’linear’:线性插值(缺省方式),直接完成计算; ’spline’:三次样条函数插值。对于该方法,命令interp1 调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函数。命令spline 用它们执行三次样条函数插值; ’pchip’:分段三次Hermite 插值。对于该方法,命令interp1 调用函数pchip,用于对向量x 与y 执行分段三次内插值。该方法保留单调性与数据的外形; ’cubic’:与’pchip’操作相同; ’v5cubic’:在MATLAB 5.0 中的三次插值。 对于超出x 范围的xi 的分量,使用方法’nearest’、’linear’、’v5cubic’的插值算法,相应地将返回NaN。对其他的方法,interp1 将对超出的分量执行外插值算法。 (4)yi = interp1(x,Y,xi,method,'extrap') 对于超出x 范围的xi 中的分量将执行特殊的外插值法extrap。 (5)yi = interp1(x,Y,xi,method,extrapval) 确定超出x 范围的xi 中的分量的外插值extrapval,其值通常取NaN 或0。 例1 1. 2.>>x = 0:10; y = x.*sin(x); 3.>>xx = 0:.25:10; yy = interp1(x,y,xx); 4.>>plot(x,y,'kd',xx,yy) 复制代码 例2 1. 2.>> year = 1900:10:2010; 3.>> product = [75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505 4.249.633 256.344 267.893 ]; 5.>>p1995 = interp1(year,product,1995) 6.>>x = 1900:1:2010; 7.>>y = interp1(year,product,x,'pchip'); 8.>>plot(year,product,'o',x,y) 复制代码 插值结果为: 1.

插值法习题及解答

一、填空题: 1. 满足()a a f x x =,()b b f x x =,()c c f x x =的拉格朗日插值余项为 。 答:()() ()()()3! a b c f R x x x x x x x ξ'''=--- 2.已知函数()f x 的函数值()()()()()0,2,3,5,6f f f f f ,以及均差如下 ()()()()()00,0,24,0,2,35,0,2,3,51,0,2,3,5,60f f f f f ===== 那么由这些数据构造的牛顿插值多项式的最高次幂的系数是 答: 1 二、选择题 1. 通过点()()0011,,,x y x y 的拉格朗日插值基函数()()01,l x l x 满足( ) A .()00l x =0,()110l x = B . ()00l x =0,()111l x = C .()00l x =1,()110l x = D . ()00l x =1,()111l x = 答:D 2.. 已知等距节点的插值型求积公式 ()()35 2 k k k f x dx A f x =≈∑?,那么3 k k A ==∑( ) A .1 B. 2 C. 3 D. 4 答:C 3.过点(x 0,y 0), (x 1,y 1),…,(x 5,y 5)的插值多项式P(x)是( )次的多项式。 (A). 6 (B).5 (C).4 (D).3. 答:B 三、证明题 1. 设 f (x) = (x-1) (x-2) .证明对任意的x 有: f [1, 2, x)]= 1 证明:f [1, 2] = [f (1) – f (2)]/ (1 – 2) = [0 – 0]/ (-1) = 0, 对任意的x 有 F[2, x] = [f (2) – f (x)]/ (2 – x) = [0 – (x-1) (x-2)]/ (2 – x) = (x-1), 所以 f [1, 2, x] = [f (1, 2) - f (2, x)]/ (1 – x) = [0 - (x-1)]/ (1 – x) = 1 2.设 在 上具有二阶连续导数,且 ,求证:

几种常用的插值方法

几种常用的插值方法 数学系 信息与计算科学1班 李平 指导老师:唐振先 摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。 引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。 一.任意阶多项式插值: 1.用单项式基本插值公式进行多项式插值: 多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1,它是一个单项式基本函数X 0,X 1…X n-1的集合来定义多项式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。 虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x ) =011011()()()() ()()()() i i n i i i i i i n x x x x x x x x x x x x x x x x -+-+--------L L L L ,其中i=0,… n.容易看出n 次多项式L i (x )满足L i (x )=1,(i=j );L i (x )=0,(i ≠j ),其中

考察分段线性插值

《数值分析》课程设计 题目考察分段线性插值 学生黄立健丁威程发林 指导教师郭阁阳

天津工程师范学院 课程设计任务书 数理系数学班学生黄立健丁威程发林 课程设计课题: 考察分段线性插值 一、课程设计工作日自 2009 年 6 月 22 日至 2009 年 6 月 28 日 二、同组学生:黄立健丁威程发林 三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、完成时 间、主要参考资料等): 【来源与意义】 本课题来源于教材第二章插值法,目的是从几何意义掌握分段线性插值的思想,加深对其的理解以及掌握用计算机与Matlab解决相关问题的能力。 【基本要求】 要求自编程序;掌握编程思想,学会一门编程语言;报告要有较强的理论分析;有较强说服力的数据表或图像;对结果进行分析;给出相应结论;鼓励创新; 【参考资料】 1.数值分析,李庆扬,王能超,易大义,2001,清华大学出版社(第四版)。 2.数值方法,关治,陆金甫,2006,清华大学出版社。 3.数值分析与实验学习指导,蔡大用,2001,清华大学出版社。 4.数值分析与实验,薛毅,2005,北京工业大学出版社。 指导教师签字:教研室主任签字:

天津工程师范学院 课程设计评审表系班学生

一、 问题提出: 题目:对2 1 ()1f x x = +在【-5,5】上进行分段线性插值,取不同节点个数n ,得到不同分段线性插值函数。(要求:自编程序,报告有数据表、图像、分析、结论。) 二、 理论基础: 通过学习构造插值公式的方法,以及分析了它们的余项知道了在实际应用插值函数作近似计算时,我们总是希望插值公式余项的绝对值小一些,即使得逼近的精度良好。从插值公式余项表达式()n R x 看,似乎提高插值多项式的次数便可达到 目的,但实际上会产生一称为Runge 现象的畸形现象,如下图所示: 从上图易知:Lagrange 插值多项式只在区间【-3.63,3.63】内收敛。因此我们通过构造分段线性插值的方法(在每个小区间上采用一次Lagrange 插值)来消除Runge 现象。 下面我们构造分段线性插值函数: 易知 在每个子区间 上是一次插值多项式 分段线性插值的余项: 其中: 1[,](0,1,)i i x x i n +=()x ?11111(),i i i i i i i i i i x x x x x y y x x x x x x x ?+++++--=+≤≤--2 ()()()8Mh f x x R x ?-=≤ max ''() a x b M f x ≤≤=

matlab计算拉格朗日牛顿及分段线性插值的程序

《工程常用算法》综合实践作业二 完成日期: 2013年 4月 14 日 班级 学号 姓名 主要工作说明 自评成绩 0718 2010071826 崔洪亮 算式与程序的编写 18 0718 2010071815 侯闰上 流程图的编辑,程序的审查 0718 2010071809 赵化川 报告的整理汇总 一.作业题目:三次样条插值与分段插值 已知飞机下轮廓线数据如下: x 3 5 7 9 11 12 13 14 15 y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 飞机下轮廓线形状大致如下图所示: 要求分别用拉格朗日插值法、Newton 插值法、分段线性插值法和三次样条插值法计算x 每改变0.5时y 的值,即x 取 0.5, 1, 1.5, … , 14.5 时对应的y 值。比较采用不同方法的计算工作量、计算结果和优缺点。 二.程序流程图及图形 1.拉格朗日插值法 开始 x,y,x0 Length (x)==l Ength (y)? n=length (x) i=1:n,l=1。 j=1:i-1&j=i+1:n l=l.*(x0-x(j)/x(i)-x(j) f=f+l*y(i) 结束 否 是 机翼 下轮廓线

2.牛顿插值法 开始 x,y,xi Length(x)==l ength(y)? n=length(x)Y=zeros (n),Y (:1)=y,f=0 a=1:n-1,b=1:n-a,Y(b,a+1)=(Y (b+1,a)-Y(b,a))/(x (b+a)-x(b)) i=1:n,z=1 结束 j=1:i-1,z=z.*(xi-x(j)) f=f+Y(1,i)*z 否 是 3.分段线性插值法 开始 x ,y ,x0 length (x )==length(y)? k=1:n-1 x(k)<=x0&x0《=x(k+1) temp=x(k)-x(k+1) f=(x0-x(k+1))/temp*y(k)+(x0-x(k))/(-temp)*y(k+1) 结束 否否 是 是 三.matlab 程序及简要的注释(m 文件) 1.拉格朗日插值法 2.牛顿插值法 function f=newdun(x,y,xi) %x 为已知数据点的x 坐标向量 %y 为已知数据点的y 坐标向量 function f=lang(x,y,x0) %x 为已知数据点的x 坐标向量 %y 为已知数据点的y 坐标向量

分段线性插值

页眉内容 《数值分析》课程设计 分段线性插值 牛彦坡陈彬冯梦雨 指导教师 天津工程师范学院 课程设计任 考察分段线性插值 、课程设计工作日自2009 年6月22 日至2009 年6月28 日 三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、参考资 料等): 来源与意义: 本课题来源于教材第二章插值法,目的是从几何意义掌握分段线性插值的思 想,加深对其的理解以及掌握用计算机与 Matlab 解决相关问题的能力。 基本要求: 要求自编程序;掌握编程思想,学会一门编程语言;报告要有较强的理论分 析;有较强说服力的数据表或图像;对结果进行分析;给出相应结论;鼓励创新; 参考资料: 1. 数值分析,李庆扬,王能超,易大义,2001,清华大学出版社(第四版)。 2. 数值方法,关治,陆金甫,2006,清华大学出版社。 3. 数值分析与实验学习指导,蔡大用,2001,清华大学出版社。 理学 数学0702 班 学生 牛彦坡 陈彬 冯梦雨 课程设计课题: 郭阁阳 、同组学生: 牛彦坡 陈彬 冯梦雨

4. 数值分析与实验,薛毅,2005,北京工业大学出版社。 教研室主任签字: 天津工程师范学院 程设计评审表 数学0702 班 学生牛彦坡陈彬冯梦雨 设计任务完成情况及指导教 师评语 答辩情况 教研室主任: 日期: 指导教师签字: 理学 评定成绩 成绩: 指导教师签字: 日期: 主任签字: 日期:

问题提出: 考察分段线性插值: 对f(x) 丄在(-5,5)上进行分段线性插值,取不同节点个数 n ,得到不同 1 x 分段线性插值函数。(要求:自编程序,报告有数据表、图像、分析、结论。) 虽然matlab 里有直接分段线形插值的函数,但为了对分段插值算法有更明确 的理解,编写该程序是有必要的 需要解决的问题: 1、由已知数据节点编写分段线形插值函数,从而能由所编函数得到非节点的函 数值。 2、比较用不同节点数所得插值函数与真实函数的误差,从而得出节点数与插值 效果的关系 二、理论基础 所谓分段线性插值就是通过插值点用折线段连接起来逼近 f (X )。设已知节 点a=x o vx i v …vx n =b 上的函数值f o , f i ,…,f n ,求一折线函数满足: l h (x)在每个小区间[x k ,X k+1 ]上是线性函数。 则称l h (x)为分段线性插值函数。 模型一:由定义可知l h (x)在每个小区间[X k ,X k+l ]上可表示为 x x k 1 x x k I h (x) = ------- f k ------------------ f k 1 (X k x X k1) X k X k 1 X k 1 X k 模型二:首先确定间隔序列k ,使得: 第二个量是局部变量S ,其定义为: 最后一个量是一阶均差 1o l h (x) C[a,b], 2。 I h (x) f k (k 0,1, n , 3。

用MATLAB实现拉格朗日插值和分段线性插值

用M A T L A B实现拉格朗 日插值和分段线性插值 The Standardization Office was revised on the afternoon of December 13, 2020

用MATLAB实现拉格朗日插值和分段线性插值 1、实验内容: 用MATLAB实现拉格朗日插值和分段线性插值。 2、实验目的: 1)学会使用MATLAB软件; 2)会使用MATLAB软件进行拉格朗日插值算法和分段线性 差值算法; 3、实验原理: 利用拉格朗日插值方法进行多项式插值,并将图形显式出来。 4、实验步骤及运行结果 (1)实现lagrange插值 1)定义函数: f = 1/(x^2+1) 将其保存在文件中,具体程序如 下: function y = f1(x) y = 1./(x.^2+1); 2)定义拉格朗日插值函数:将其保存在文件中,具体实现程序 编程如下: function y = lagrange(x0,y0,x) m = length(x); /区间长度/

n = length(x0); for i = 1:n l(i) = 1; end for i = 1:m for j = 1:n for k = 1:n if j == k continue; end l(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j); end end end y = 0; for i = 1:n y = y0(i) * l(i) + y; end 3)建立测试程序,保存在文件中,实现画图: x=-5::5; y=(1+x.^2).^-1; p=polyfit(x,y,n); py=vpa(poly2sym(p),10) plot_x=-5::5; f1=polyval(p,plot_x); figure pl ot(x,y,‘r',plot_x,f1) 输入n=6,出现下面的图形:

分段线性插值.doc

摘要 用函数来表示变量间的数量关系广泛应用于各学科领域,但是在实际问题中,往往是通过实验、观测以及计算等方法,得到的是函数在一些点上的函数值。如何通过这些离散数据找到函数的一个满足精度要求且便于使用的近似表达式,是经常遇到的问题。 对于这类问题我们解决的方法为插值法,而最常用也最简单的插值方法就是多项式插值。当然用插值法得到的近似表达式必须满足插值条件即假设给定了n+1个点的自变量的值以及函数值,近似函数必须要过这n+1 (x)通个点。多项式插值,从几何角度看,就是寻求n次代数曲线y=P n 过n+1个点作为f(x)的近似。 但是随着插值节点个数的增加,高次插值多项式的近似效果并不理想。根据大量实验得出,在进行高次多项式插值时,会出现龙格现象。龙格(Runge)现象即当n趋于无穷大时,x在某一邻域内,f(x)收敛,而在这个区域外f(x)发散。 因此,为了解决这样的一个问题,我们可以通过缩小插值区间的办法达到减小误差的目的,所以本实验将针对低次分段插值多项式来做具体的讨论和学习。 关键词:龙格现象分段差值

1、实验目的 1)通过对分段线性插值算法程序的编写,提高自己编写程序的能力 2)体会分段线性插值是如何消除龙格现象的。 3)用实验报告的形式展现,提高自己在写论文方面的能力 2、算法理论 设在节点处的函数值为,i=0,1,,n。为了提高近似程度,可以考虑用分段线性插值来逼近原函数,这时的插值函数为分段函数: 在区间上的线性函数为 误差为: 易见,是平面上以点为节点的折线,有如下的特点: 1.在上为次数不超过一次的多项式; 2.; 3.;

如果,由线性插值的误差公式得到 令,则有 关于整体误差: 可以按如下方式考虑,若记则对任一都有 于是,当时,说明分段线性插值收敛于。 3、数值算例 0.5 0.7 0.9 1.1 1.3 x i y 0.4579 0.644 0.783 0.891 0.964 i

matlab实现插值法和曲线拟合电子教案

m a t l a b实现插值法和 曲线拟合

插值法和曲线拟合 电子科技大学 摘要:理解拉格朗日多项式插值、分段线性插值、牛顿前插,曲线拟合,用matlab编程求解函数,用插值法和分段线性插值求解同一函数,比较插值余项;用牛顿前插公式计算函数,计算函数值;对于曲线拟 合,用不同曲线拟合数据。 关键字:拉格朗日插值多项式;分段线性插值;牛顿前插;曲线拟合 引言: 在数学物理方程中,当给定数据是不同散点时,无法确定函数表达式,求解函数就需要很大的计算量,我们有多种方法对给定的表格函数进行求解,我们这里,利用插值法和曲线拟合对函数进行求解,进一步了解函数性质,两种方法各有利弊,适合我们进行不同的散点函数求解。 正文: 一、插值法和分段线性插值 1拉格朗日多项式原理 对某个多项式函数,已知有给定的k + 1个取值点: 其中对应着自变量的位置,而对应着函数在这个位置的取值。 假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: 其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为: [3] 拉格朗日基本多项式的特点是在上取值为1,在其它的点 上取值为0。 2分段线性插值原理 给定区间[a,b], 将其分割成a=x 0

实验四用MATLAB实现拉格朗日插值、分段线性插值

实验四用MATLAB实现拉格朗日插值、分段线性插值一、实验目的: 1)学会使用MATLAB软件; 2)会使用MATLAB软件进行拉格朗日插值算法和分段线性差值算法; 二、实验内容: 1用MATLAB实现y = 1./(x.^2+1);(-1<=x<=1)的拉格朗日插值、分段线性 2.选择以下函数,在n个节点上分别用分段线性和三次样条插值的方法,计算m个插值点的函数值,通过数值和图形的输出,将插值结果与精确值进行比较,适当增加n,再作比较,由此作初步分析: (1).y=sinx;( 0≤x≤2π) (2).y=(1-x^2)(-1≤x≤1) 三、实验方法与步骤: 问题一用拉格朗日插值法 1)定义函数:y = 1./(x.^2+1);将其保存在f.m 文件中,程序如下: function y = f1(x) y = 1./(x.^2+1); 2)定义拉格朗日插值函数:将其保存在lagrange.m 文件中,具体实现程序编程如下:function y = lagrange(x0,y0,x) m = length(x); /区间长度/ n = length(x0); for i = 1:n l(i) = 1; end for i = 1:m for j = 1:n for k = 1:n if j == k continue; end

l(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j); end end end y = 0; for i = 1:n y = y0(i) * l(i) + y; end 3)建立测试程序,保存在text.m文件中,实现画图:x=-1:0.001:1; y = 1./(x.^2+1); p=polyfit(x,y,n); py=vpa(poly2sym(p),10) plot_x=-5:0.001:5; f1=polyval(p,plot_x); figure plot(x,y,‘r',plot_x,f1)

分段线性插值函数的编程实现

1 问题的提出 对2 1 ()1f x x = +在(-5,5)上进行分段线性插值,取不同节点个数n ,得到不同分段线性插值函数. 虽然MATLAB 里有直接分段线性插值的函数,但为了对分段插值算法有更明确的理解,编写该程序是有必要的. 需要解决的问题: 1、 由已知数据节点编写程序,实现分段线性插值函数,从而能由所编函数得到非节点的函数值. 2、 比较用不同节点数所得插值函数与真实函数的误差,从而得出节点数与插值效果的关系. 2 理论基础 分段线性插值适用于计算简单、光滑性要求不高的插值问题,且其整体逼近 )(x f 的效果较好. 从几何意义上看,分段线性插值就是用折线近似代替曲线错误!未找到引用源。. 设在区间[a,b]上取n+1个点 .a 110b x x x x n n =<<<<=- 函数)(x f 在上述节点处的函数值为 )(y i i x f = ,,2,1,0)(n i = 于是得到n+1个点

). , (, ), , (, , 1 1 0n n y x y x y x ) ( 连接相邻两点错误!未找到引用源。和) , ( 1 1+ +i i y x, , 2,1,0) (n i =,得一折线函数) (x ?,若满足: (1)) (x ?在[a,b]上连续; (2)错误!未找到引用源。) , ,2,1,0 (n i =; (3)) (x ?在每个小区间错误!未找到引用源。上是线性函数, 则称折线函数) (x ?为分段线性插值函数. 模型一: 由分段线性插值函数的定义可知,) (x ?在每个小区间错误!未找到引用源。上可表为 , ) ( 1 1 1 1 + + + + - - + - - = i i i i i i i i y x x x x y x x x x x ? 错误!未找到引用源。)1- , ,2,1,0 (n i =. ) (x ?是一分段函数,若用基函数表示,只需对1 , ,2,1,0- =n i 令 ? ? ? ? ? ? ? ? ? = ≤ ≤ - - = ≤ ≤ - - = + + + - - - ,其他 略去 略去 ) ( , ) ( , ) ( 1 1 1 1 1 1 n i x x x x x x x i x x x x x x x x l i i i i i i i i i i i 显然,() i l x是分段的线性连续函数,且满足 ? ? ? ≠ = = k i k i x l k i,0 ,1 ) ( 于是 ∑ = = n i i i x l y x ), ( ) (?b x a≤ ≤ 模型二:

分段线性插值法

《数值分析》实验报告 实验序号:实验五 实验名称: 分段线性插值法 1、 实验目的: 随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Runge 现象)。为了既要增加插值的节点,减小插值的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段线性插值。 2、 实验内容: 求一个函数?(x )用来近似函数f (x ),用分段线性插值的方法来求解近似函数?(x )并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210与相应的函数值n y y y ,...,,10,求一个插值函数)(x ?,满足以下条件: (1) ),...,2,1,0()(n j y x j j ==?; (2) )(x ?在每一个小区间[1,+j j x x ]上就是线性函数。 对于给定函数11-,2511)(2≤≤+= x x x f 。在区间[]11-,上画出f (x )与分段线性插值函数)(x ?的函数图像。 1. 分段线性插值的算法思想: 分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j ,然后再 作它们的线性组合。分段线性插值基函数的特点就是在对应的插值节点上函数值取 1,其它节点上函数值取0。插值基函数如下: ?????≤≤--=其它 ,0,)(101010x x x x x x x x l ???????????≤<--≤≤--=+++---其它 ,0,,)(11 1111j j j j j j j j j j j x x x x x x x x x x x x x x x l ?? ???≤≤--=---其它 ,0,)(111n n n n n n x x x x x x x x l

用MATLAB实现拉格朗日插值和分段线性插值

用MATLAB实现拉格朗日插值和分段线性插值 1、实验内容: 用MATLAB实现拉格朗日插值和分段线性插值。 2、实验目的: 1)学会使用MATLAB软件; 2)会使用MATLAB软件进行拉格朗日插值算法和分段线性 差值算法; 3、实验原理: 利用拉格朗日插值方法进行多项式插值,并将图形显式出来。 4、实验步骤及运行结果 (1)实现lagrange插值 1)定义函数:f = 1/(x^2+1) 将其保存在f.m 文件中,具体程序 如下: function y = f1(x) y = 1./(x.^2+1); 2)定义拉格朗日插值函数:将其保存在lagrange.m 文件中, 具体实现程序编程如下: function y = lagrange(x0,y0,x) m = length(x); /区间长度/ n = length(x0);

for i = 1:n l(i) = 1; end for i = 1:m for j = 1:n for k = 1:n if j == k continue; end l(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j); end end end y = 0; for i = 1:n y = y0(i) * l(i) + y; end 3)建立测试程序,保存在text.m文件中,实现画图: x=-5:0.001:5; y=(1+x.^2).^-1; p=polyfit(x,y,n); py=vpa(poly2sym(p),10) plot_x=-5:0.001:5; f1=polyval(p,plot_x); figure plo t(x,y,‘r',plot_x,f1) 输入n=6,出现下面的图形: 通过上图可以看到当n=6是没有很好的模拟。

分段线性插值法

分段线性插值法

————————————————————————————————作者: ————————————————————————————————日期:

《数值分析》实验报告 实验序号:实验五 实验名称: 分段线性插值法 1、 实验目的: 随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Rung e现象)。为了既要增加插值的节点,减小插值的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段线性插值。 2、 实验内容: 求一个函数?(x )用来近似函数f (x),用分段线性插值的方法来求解近似函数?(x )并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n +1个插值节点b x x x x a n =<<<<=...210和相应的函数值n y y y ,...,,10,求一个插值函数)(x ?,满足以下条件: (1) ),...,2,1,0()(n j y x j j ==?; (2) )(x ?在每一个小区间[1,+j j x x ]上是线性函数。 对于给定函数11-,2511)(2≤≤+= x x x f 。在区间[]11-,上画出f (x )和分段线性插值函数)(x ?的函数图像。 1. 分段线性插值的算法思想: 分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j , 然后再作它们的线性组合。分段线性插值基函数的特点是在对应的插值节 点上函数值取 1,其它节点上函数值取0。插值基函数如下:

?????≤≤--=其它 ,0,)(101010x x x x x x x x l ???????????≤<--≤≤--=+++---其它 ,0,,)(11 1111j j j j j j j j j j j x x x x x x x x x x x x x x x l ?? ???≤≤--=---其它 ,0,)(111n n n n n n x x x x x x x x l 设在节点a≤x0<x1<…≤b=f(xi),(i=0,1,2,…,n)求折线函数L(x)满足: (1) L (x )∈C [a,b] (2) L(x[i]=y[i]) (3) L(x )在每个小区间(x[i],x[i+1])上是线性 插值函数¢(x )叫做区间[a ,b]上对数据(x[j],y[j ])(j=0,1,2,…,n)的分段区间函数。 利用一介拉格朗日函数,直接得到线性插值函数为: L(x0)=(x-x[1])/x [0]-x [1];(x [0]≤x ≤x[1]) L(x 0)=0(x[1]≤x ≤x[n]) 分段线性方程的表达式: ¢(x )=∑(j=0,..,n)y[j]*L [j](x); 3、实验代码: // LDlg .c pp : im plement ation #include "st daf x.h" #include "L.h" #in clud e "LDlg .h" #if de f _DE BU G #define new DEB UG _NE W #undef TH IS _ ch ar T HIS _FILE [] = __FI LE__; #en dif /////////////////////////////////////////////////////////////////////////////

完整word版试验四用MATLAB实现拉格朗日插值分段线性插值

实验四用MATLAB实现拉格朗日插值、分段线性插值 一、实验目的: 1)学会使用MATLAB软件; 2)会使用MATLAB软件进行拉格朗日插值算法和分段线性差值算法; 二、实验内容: 1用MATLAB实现y = 1./(x.^2+1);(-1<=x<=1)的拉格朗日插值、分段线性 2.选择以下函数,在n个节点上分别用分段线性和三次样条插值的方法,计算m个插值点的函数值,通过数值和图形的输出,将插值结果与精确值进行比较,适当增加n,再作比较,由此作初步分析: (1).y=sinx;( 0≤x≤2π) (2).y=(1-x^2)(-1≤x≤1) 三、实验方法与步骤: 问题一用拉格朗日插值法 1)定义函数:y = 1./(x.^2+1);将其保存在f.m 文件中,程序如下: function y = f1(x) y = 1./(x.^2+1); 2)定义拉格朗日插值函数:将其保存在lagrange.m 文件中,具体实现程序编程如下:function y = lagrange(x0,y0,x) m = length(x); /区间长度/ n = length(x0); for i = 1:n l(i) = 1; end for i = 1:m for j = 1:n for k = 1:n if j == k continue; end l(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j); end end end y = 0; for i = 1:n y = y0(i) * l(i) + y; end 3)建立测试程序,保存在text.m文件中,实现画图:

相关文档