紧压三次样条插值程序讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

求压紧三次样条函数的函数程序

function S=liti05_7(X,Y,dx0,dxn)

%Input -X is the 1xn abscissa vector

% -Y is the 1xn ordinate vector

% -dx0=S'(x0) first derivative boundary condition

% -dxn=S'(xn) first derivative boundary condition

%Output -S:rows of S are the confficients,indescending order,for the cubic interplants

N=length(X)-1; %求当前问题的规模数--x的最大下标

H=diff(X); %求X的差分 h0 h1…… h n-1

D=diff(Y)./H; %求 y 对 x 的一阶差商 d0 d1…… d n-1

A=H(2:N-1); %为求线性方程组系数矩阵上次对角元做准备

B=2*(H(1:N-1)+H(2:N)); %求线性方程组系数矩阵主对角元做准备

C=H(2:N-1); %求线性方程组系数矩阵上次对角元

U=6*diff(D); %为求线性方程组常数列向量做准备

%压紧样条端点约束

B(1)=B(1)-H(1)/2; %3h0/2+2h1

U(1)=U(1)-3*(D(1)-dx0); %修改 u(1)

B(N-1)=B(N-1)-H(N)/2; % 2h(N-2)+3*h(N-1)/2

U(N-1)=U(N-1)-3*(dxn-D(N)); %修改 u(N-1)

A %输出线性方程组系数矩阵上次对角元向量

B %输出线性方程组系数矩阵主对角元向量

C %输出线性方程组系数矩阵下次对角元向量

U %输出线性方程组常数列向量

% 下面开始解三对角线行方程组

% 首先转化为上三角线性方程组

for k=2:N-1

temp=A(k-1)/B(k-1);

B(k)=B(k)-temp*C(k-1);

U(k)=U(k)-temp*U(k-1);

end

%回代求解

M(N)=U(N-1)/B(N-1);

for k=N-2:-1:1

M(k+1)=(U(k)-C(k)*M(k+2))/B(k);

end

%计算端点x0 x n上的二阶导数

M(1)=3*(D(1)-dx0)/H(1)-M(2)/2;

M(N+1)=3*(dxn-D(N))/H(N)-M(N)/2;

M % 输出各节点上的二阶导数

for k=0:N-1

%计算第k个多项式的系数

S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1)); %算(x-X(k))三次项系数

S(k+1,2)=M(k+1)/2; %算(x-X(k))二次项系数S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6;%算(x-X(k))一次项系数

S(k+1,4)=Y(k+1); %算(x- X(k))零次项系数

end

hold on

plot(X,Y,'kO') % 画样点

style=['r', 'g', 'b']; % 由于例题中N等于3,style只构造了三个元素

for k=1:N

%画第k个区间上的三次函数曲线段

x1=X(k):0.01:X(k+1);

y1=polyval(S(k,:),x1-X(k)); %算关于(x- X(k))三次多项式的值

plot(x1,y1,style(k))

end

grid on

xlabel('x');

ylabel('y');

hold off

例求压紧三次样条曲线,经过点(0,0),(1,0.5),(2,2.0),(3,1.5),一阶导数的边界条件为S’(0)=0.2和S’(3)=-1

针对上例,程序运行结果如下

?x=[0 1 2 3];y=[0 0.5 2.0 1.5];

?dx0=0.2;dxn=-1;

?s=liti05_7(x,y,dx0,dxn)

A =

1

B =

3.5000 3.5000

C =

1

U =

5.1000 -10.5000

M =

-0.3600 2.5200 -3.7200 0.3600

s =

0.4800 -0.1800 0.2000 0

-1.0400 1.2600 1.2800 0.5000

0.6800 -1.8600 0.6800 2.0000

y

x

相关文档
最新文档