分段线性插值.docx

上传人:b****7 文档编号:10875853 上传时间:2023-02-23 格式:DOCX 页数:21 大小:102.80KB
下载 相关 举报
分段线性插值.docx_第1页
第1页 / 共21页
分段线性插值.docx_第2页
第2页 / 共21页
分段线性插值.docx_第3页
第3页 / 共21页
分段线性插值.docx_第4页
第4页 / 共21页
分段线性插值.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

分段线性插值.docx

《分段线性插值.docx》由会员分享,可在线阅读,更多相关《分段线性插值.docx(21页珍藏版)》请在冰豆网上搜索。

分段线性插值.docx

分段线性插值

 

 

学生牛彦坡陈彬冯梦雨

 

三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、参考资料等):

来源与意义:

本课题来源于教材第二章插值法,目的是从几何意义掌握分段线性插值的思想,加深对其的理解以及掌握用计算机与Matlab解决相关问题的能力。

 

基本要求:

要求自编程序;掌握编程思想,学会一门编程语言;报告要有较强的理论分

析;有较强说服力的数据表或图像;对结果进行分析;给出相应结论;鼓励创新;参考资料:

1.数值分析,李庆扬,王能超,易大义,2001,清华大学出版社(第四版)。

2.数值方法,关治,陆金甫,2006,清华大学出版社。

3.数值分析与实验学习指导,蔡大用,2001,清华大学出版社。

4.数值分析与实验,薛毅,2005,北京工业大学出版社。

 

指导教师签字:

教研室主任签字:

 

天津工程师范学院

课程设计评审表

 

理学院数学0702班学生牛彦坡陈彬冯梦雨

 

设计任务完成情况及指导教师评语

 

答辩情况

 

评定成绩

 

成绩:

指导教师签字:

日期:

 

教研室主任:

主任签字:

日期:

日期:

一、问题提出:

 

考察分段线性插值:

 

对f(x)

1

1x2

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

分段线性插值函数。

(要求:

自编程序,报告有数据表、图像、分析、结论。

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

需要解决的问题:

1、由已知数据节点编写分段线形插值函数,从而能由所编函数得到非节点的函数值。

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

二、理论基础

所谓分段线性插值就是通过插值点用折线段连接起来逼近f(x)。

设已知节点a=x0

1oIh(x)

C[a,b],

 

2oIh(x)

fk(k

0,1,

n),

 

3oIh(x)在每个小区间[xk,xk+1]上是线性函数。

 

则称Ih(x)为分段线性插值函数。

 

模型一:

由定义可知Ih(x)在每个小区间[xk,xk+1]上可表示为

x

Ih(x)=

xk

xk1

f

k

xk1

xxk

xk1xk

fk1

(xk

xxk1)

 

模型二:

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

 

xkx

xk1

 

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

sxxk

 

最后一个量是一阶均差

yk1yk

k

xk1xk

 

则插值基函数可表示为

L(x)

 

yk(x

yk1yk

xk)

xk1xk

yksk.

 

三、实验内容

1、模型一:

用MATLAB分别建立m文件:

(1)原函数fd1.m

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

(3)比较不同节点数所得分段线性插值函数的插值效果fd3.m2、选取插值节点数为偶数

在MATLAB窗口中执行:

fd3n=2的数据见附录,图像如下:

 

y0.5

 

0

-5-4-3-2-1012345

x

误差分析

0

 

x)

(-0.5

R

 

-1

-5-4-3-2-1012345

x

 

n=8的图如下:

 

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

1

 

y0.5

 

0

-5-4-3-2-1012345

x

误差分析

0.4

 

0.2

x)

0

R

-0.2

 

-0.4

-5-4-3-2-1012345

x

 

n=20的图

 

y0.5

 

0

-5-4-3-2-1012345

x

误差分析

0.1

 

0.05

x)

(0

R

-0.05

 

-0.1

-5-4-3-2-1012345

x

 

3、模型二:

用MATLAB分别建立m文件:

(1))分段插值函数fd22

(2))插值效果比较函数fd32(选取插值节点数为奇数)程序代码(参见附录)

 

在MATLAB窗口中执行:

fd32

得下图:

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

 

1

0.8

0.6

0.4

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

n=11

0.2

0

-5-4-3-2-1012345

 

0.6

 

0.4

 

0.2

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

 

0

 

-0.2

-5-4-3-2-1012345

 

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

编写程序fd33.m,得图

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

 

1

0.8

0.6

0.4

0.2

n=3n=5

n=7n=9n=11

0

-5-4-3-2-1012345

 

0.5

 

0

 

-0.5

n=3n=5

n=7n=9n=11

 

-1

-5-4-3-2-1012345

 

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

得下图:

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

 

140

 

120

 

100

 

和80

差60

e误

40

 

20

 

0

0510152025

n节点数

 

四、结果分析

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

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

3、由误差平方和e,插值节点个数越多,e有减小的趋势,最后趋于0。

单考虑奇数或偶数个节点,则随节点数增加e严格减小。

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

五、结论

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

插值效果越好。

 

六、参考文献

《数值分析与实验》薛毅编著北京工业大学出版社

 

附录

代码如下:

 

%fd1.m线性插值原函数functiony=fd1(x)y=1./(1+x.^2);

 

%fd2.m分段线性插值函数functionyi=fd2(x,y,xi)n=length(x);

m=length(y);ifn~=m

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

end

fork=1:

n-1

ifabs(x(k)-x(k+1))

 

return;end

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

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

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

endend

 

%fd3.m比较插值效果

a=-5;b=5;

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

');ifn<=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);fork1=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('原函数(实线)-插值函数(虚线)');holdon

 

subplot(2,1,2);plot(xx,w,'k:

');%误差的图像

xlabel('x');

ylabel('R(x)');

title('误差分析');holdon

xx=xx';

 

yyi=yyi';z=z';

w=w';

 

%fd22.m分段线性插值函数functionv=fd22(x,y,u)delta=diff(y)./diff(x);

n=length(x);k=ones(size(u));forj=2:

n-1k(x(j)<=u)=j;end

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

 

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

clearclose

t=[-5:

0.01:

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

 

fori=1:

5n=2*i+1;

x=linspace(-5,5,n);%把区间[-55]分为(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));holdon;%画出插值函数图像及误差图像

subplot(2,1,2);plot(t,e,a(i));holdon;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,[-55],'k');%画出原函数图像

holdoff

 

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

close

t=[-5:

0.01:

5];

 

a=['k''g''r''c''m'];fori=1:

5

n=2*i+1;

x=[-5rand(1,n-2)*10-55];%得(-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));holdon;

subplot(2,1,2);plot(t,e,a(i));holdon;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,[-55],'k');holdoff

 

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

 

clear

t=[-5:

0.01:

5];a=[];b=[];

fori=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=[ae];

b=[bn];end

plot(b,a,'go')xlabel('n节点数')

ylabel('e误差平方和')

holdon

 

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

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1