试验二:
第二类边界条件三次样条插值多项式
一、 试验目的
通过本实验可以使同学更深入地理解三次样条插值多项式的基本原理,并通
过数值算例使同学们更好地领会三次样条插值多项式具有较高的准备性。
二、 计算公式或算法
 
 
n
1.输入 n,
 ,u,
,
iyix
0
i
2.(1)for
1
:0
i
n
 
1
ih
ix
0P ,
nP
 ix
%形成步长
c
(2)   1
0 
3
y
 
0
g
For k=1:n-1
 
1
 
0
y
 
0
h
0 hP
 
0
2
 
ka
 
kh
kh
;
1
 
kh
 
kc
1
 ;
ka
 
kg
3
 
kykc
1
 
kh
 
ky
 
 
kyka
kh
ky
1
1
End
  1na
 
ng
3
 
ny
nh
ny
1
1
nhP
n
2
1
%计算三对解方程组的系数阵与右端项中的数
3.(1)
01
b
2
 
02
b
For
i
 
0
c
 
01
b
:1
n
1
2
1
2
ib
 
2
ia
 
ic
 
1
ib
 
2
ib
End %三对阵的 LU 分解
 
:0
  2/0
 ib
1
g
(2)
g
For
j
:1
n
 
jg
 
jg
:
 
ja
 jb
1
jg
1
End %自上至下解两对角线方程组
 ng
 
nm 
For
k
 n
 
:
km
0:1:1 
 
kg
2
kmkb
 
1
End %自下向上解两对角线方程组
4.(1)if
u
 
,
ixix
1
then
 
;0:uS
 
uS
:
 
uS
:
 
uS
:
 
uS
:
 
uS
:
 
uS
:
 
uS
:
 
uS
:
 
ih
 
ih
u
u
u
1
 
ix
2
u
 
3
ih
2
u
ix
 
3
ih
 
uix
ix
 
2
ih
1
u
 
3
ih
ix
ix
2
1
 
;
iy
u
 
ix
2
iy
;1
2
1
 
ix
2
 
;
im
im
;1
%用公式计算  uf 的近似值  uS
(2)输出  uS
三、 Matlab 程序
n=8;
x=[0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9];
y=[0.4794 0.6442 0.7833 0.8912 0.9636 0.9975 0.9917 0.9463];
u=[0.6 0.8 1.0 1.2 1.4 1.6 1.8];
p1=-0.4794;
pn=0.9463;
for i=1:n-1
h(i)=x(i+1)-x(i);
end
a2(1)=1;
g(1)=3*(y(2)-y(1))/h(1)-p1*h(1)/2;
for k=2:n-1
a1(k-1)=h(k)/(h(k)+h(k-1));
a2(k)=h(k-1)/(h(k)+h(k-1));
g(k)=3*a2(k)*(y(k+1)-y(k))/h(k)+......
3*a1(k-1)*(y(k)-y(k-1))/h(k-1);
end
a1(n-1)=1;
g(n)=3*(y(n)-y(n-1))/h(n-1)-pn*h(n-1)/2;
b1(1)=2;
m(1)=g(1)/2;
b2(1)=a2(1)/b1(1);
for i=2:n;
b1(i)=2-a1(i-1)*b2(i-1);
if(i~=n)
b2(i)=a2(i)/b1(i);
end
m(i)=(g(i)-a1(i-1)*m(i-1))/b1(i);
end
for i=n-1:-1:1;
m(i)=m(i)-b2(i)*m(i+1);
end
p=7;
for j=1:p
for i=1:n;
if((u(j)>=x(i))&(u(j)
四、 测试数据及结果
0.5
已知正弦函数表
ix
iy
0.4794
0.7
0.9
1.1
1.3
1.5
1.7
1.9
0.6442
0.7833
0.8912
0.9636
0.9975
0.9917
0.9463
以及边界条件。用三次样条插值多项式计算诸节点处的函数值,并将计算结果与
sinx 在计算下面的数值相比较。
计算结果如下;
五、 心得体会
领会三次样条插值多项式具有较高的准备性。