Download presentation
Presentation is loading. Please wait.
1
五、样条工具箱(splines toolbox)
三次插值样条函数 PP形式的样条函数的构造及操作 B形式样条函数的构造和应用 其他函数 举例 2019/4/30 应用数学系分析教研室
2
简单介绍样条函数 样条(spline)原指在飞机和船舶制造工程中为了描绘光滑的外形曲线所用的一种绘图工具.它是一种富有弹性的细长条,使用时用压铁固定在一些给定的点上(节点),其他地方任意变化,然后一次画下的光滑曲线称为样条曲线.数学上看,实际上是一段段的三次多项式曲线拼接而成的曲线.在拼接处函数是连续的,且一阶.二阶导数也是连续的. 样条函数的概念在1946年由舍恩伯格提出,广泛应用于逼近论,曲线数据拟合,数值积分,微分和计算机辅助外形设计与制造等方面. 2019/4/30 应用数学系分析教研室
3
B形式,即以B样条函数基底的线性组合来表示样条函数; PP形式,即以分段多项式来表示样条函数. 工具箱中的操作函数具体分为以下几类:
Matlab5中的样条工具箱为学习样条和使用样条函数提供了一个理想的软件环境.它提供了函数最常用的两种表示形式:B形式和PP形式(Piecewise Polynomial). B形式,即以B样条函数基底的线性组合来表示样条函数; PP形式,即以分段多项式来表示样条函数. 工具箱中的操作函数具体分为以下几类: 对三次插值样条函数的操作; 对pp形式样条函数的操作; 对B形式样条函数的操作; 对张量样条函数的操作; 其他. 2019/4/30 应用数学系分析教研室
4
3.1 三次插值样条函数 3.1.1 三次插值样条函数的定义 给定区间 [a,b] 的一个划分 和区间[a,b]上的一个函数f(x)
定义1 若函数s(x) 满足下列条件: 1)一致通过n+1个型值点 即 (i=0,1,2,…,n) 2)二阶连续,即 3)三次分段,即在每一个小区间 上均为三次多项式. 2019/4/30 应用数学系分析教研室
5
常见的边界条件有: 这样的 s(x)称为[a,b]上以 为节点的三次插值样条函数,其几何图形称为三次样条曲线.
1)边界点斜率,即 2)边界点的二阶导数,即 3)周期特性,即 2019/4/30 应用数学系分析教研室
6
1.用节点处的一阶导数构造三次插值样条函数。由插值条件可得,在 上 可表示为
3.1.2 三次插值样条函数的构造 记节点处的一阶导数为 记节点处的二阶导数为 1.用节点处的一阶导数构造三次插值样条函数。由插值条件可得,在 上 可表示为 2019/4/30 应用数学系分析教研室
7
记 对于给定端点斜率: 可解方程组 求得 2019/4/30 应用数学系分析教研室
8
对于给定端点的二阶导数,即 可以解方程组 对于给定周期特性,解方程组 求得 2019/4/30 应用数学系分析教研室
9
样条工具箱提供以下5种函数来构造不同边界条件和要求的三次插值样条函数.
2 用节点处的二阶导数构造三次插值样条函数 同样对于给定的三种不同条件:端点斜率.二阶导数,周期特性,有相应的方程组,可解得 工具箱中关于三次插值样条的函数 样条工具箱提供以下5种函数来构造不同边界条件和要求的三次插值样条函数. 2019/4/30 应用数学系分析教研室
10
功能:构造各种边界条件下的三次插值样条函数 格式:pp=scape(x,y,[,conds[,valconds]])
(一) csape 功能:构造各种边界条件下的三次插值样条函数 格式:pp=scape(x,y,[,conds[,valconds]]) 说明:(x,y)是插值点的序列,pp为指定conds条件下以(x,y)为插值点所返回的pp形式的三次样条函数. (二) csapi 功能:构造‘not-a-knot’边界条件下的三次样条函数. 格式:values=csapi(x,y,xx) pp=csapi(x,y) 说明:values返回以(x,y)为插值点序列,函数在向量xx处的值, pp返回函数. 2019/4/30 应用数学系分析教研室
11
[yy,xx]=meshgrid(y,x);
举例:多变元 图形: (三) csaps 功能:构造光滑的三次插值样条函数. 格式:values=csaps(x,y,p,xx) pp=csaps(x,y,p) 说明:p=0时,以最小方差直线拟合数据,光滑程度最低; p=1时,以‘variational’为边界构造函数,光滑程度最高. x=.0001+[-4:.2:4]; y=-3:.2:3; [yy,xx]=meshgrid(y,x); r=pi*sqrt(xx.^2+yy.^2); z=sin(r)./r; bcs=csapi({x,y},z); fnplt(bcs); 给定端点导数,均为0 2019/4/30 应用数学系分析教研室
12
说明:当points[:,i]=points[:,end]时,cs=csape(t,ponits,’periodic’);
举例: 图形: (四) cscvn 功能:构造普通的或周期的三次样条曲线. 格式:cs=cscvn(ponits) 说明:当points[:,i]=points[:,end]时,cs=csape(t,ponits,’periodic’); 当points[:,i] points[:,end]时,cs=csape(t,points,’variational’) t=cumsum([0,dt.^(1/4)]). x=0:0.2:pi/2; y=sin(x); xx=0:0.5:pi; pp1=csaps(x,y,1); fnplt(pp1) 给定周期特性 2019/4/30 应用数学系分析教研室
13
举例: 一般情况 fnplt(cscvn([0 1 1 0 –1 –1 0 0; 0 0 1 2 1 0 –1 –2]));
图形: 一般情况 周期情况 (五) getcurve 功能:交互式的创造三次样条函数. 格式:[xy,spcv]=getcurve 2019/4/30 应用数学系分析教研室
14
3.2 PP形式的样条函数的构造及操作 3.2.1 分段多项式形式的样条函数 定义2 给定区间 的一个划分 当 满足下列两个条件:
定义2 给定区间 的一个划分 当 满足下列两个条件: 1)在每个子区间 上, 是次数不高于n的多项式,但至少有一个子区间上为n次多项式; 2) 在区间 上存在n-1阶的连续导数,即 则称 为关于划分的n次样条函数. 由定义可知,零次样条是阶梯函数,一次样条是折线函数. 3.2.2 工具箱中关于PP形式样条函数的函数 1.pp2sp 功能:将PP形式的样条函数转化为B形式的样条函数. 格式:sp=pp2sp(pp[,sconds]) 举例:x=0:0.2:pi; sconds=sin(x); pp=csape(x,sconds); sp=pp2sp(pp); 2019/4/30 应用数学系分析教研室
15
1)在每个子区间 上,函数是次数不高于n的多项时,但至少有一个子区间上为n次多项式;
定义3 给定区间[a,b]一个划分 当 满足以下两条件: 1)在每个子区间 上,函数是次数不高于n的多项时,但至少有一个子区间上为n次多项式; 2) 在区间[a,b]上存在n-v阶的连续导数,即 则称 为关于划分的亏数为v的n次样条函数. 由定义2可知, 是亏数为1 的n次样条函数. 工具箱中关于PP形式样条函数的函数 2019/4/30 应用数学系分析教研室
16
pp=ppmak(breaks,coefs);
ppmak----构造PP形式的样条函数 举例: 结果: ppbrk ----分解PP形式的样条函数. 举例:x=0:0.2:pi; sconds=sin(x); pp=csape(x,sconds); [breaks,coefs,1,k,d]=ppbrk(pp); out1=ppbrk(pp,’breaks’); pj=ppbrk(pp,4); pc=ppbrk(pp,[0.2;0.8]; breaks(1:l+1) coefficients(d*l,k) pieces number l 4 order k 3 dimension d of target 1 breaks=-5:-1; coefs=-22:-11; pp=ppmak(breaks,coefs); fnbrk(pp); 2019/4/30 应用数学系分析教研室
17
pplst----直接调用,显示所有能够操作PP形式样条函数的函数清单. pprfn----在PP样条函数中插入额外的节点重新构造样条函数
举例: pp2sp----将PP形式的样条函数转化为B形式的样条函数. x=0:0.2:pi; sconds=sin(x); pp=csape(x,sconds); ppout=pprfn(pp,[0.3,0.7]); x=0:0.2:pi; sconds=sin(x); pp=csape(x,sconds); sp=pp2sp(pp); 2019/4/30 应用数学系分析教研室
18
3.3 B形式样条函数的构造及应用 B形式的样条函数,是以B样条函数为基底,由B样条函数的线性组合来表示的样条函数。目前有三类基底:
截断幂函数基底:主要用于理论分析,构成的系数矩阵是高度病态的,不适合于数值计算; 主基样条:主要用于低次情况; B样条函数:具有局部支柱性质。 不具有严格的误差局部化的性质 2019/4/30 应用数学系分析教研室
19
B样条函数 作函数 的n+1阶差商 定义:在实轴上取节点序列 在截断幂函数 中将x看作函数,则关于 称此差商是以x为变量的B样条函数,并称
为第i个n+1阶规范B样条函数. 2019/4/30 应用数学系分析教研室
20
工具箱中关于B形式样条函数的函数 B样条函数是构造B形式样条函数的基本单元.
命令:bspline([ ]) 图形: 2019/4/30 应用数学系分析教研室
21
spmak -----构造B形式的样条函数.
关于B形式样条函数的函数工具箱中有sp2bb,sp2pp,spap2,spapi,spaps,spbrk,spcol,splst,spmak,sprfn, spcrv,spval. 举例说明: spmak -----构造B形式的样条函数. 运行: spline=spmak(0:10,0:7)结果: spline = form: 'B-' knots: [ ] coefs: [ ] number: order: dim: 1 splst----直接调用,显示所有能操作B形式样条函数的函数清单. 2019/4/30 应用数学系分析教研室
22
spval----返回B形式样条函数在节点序列x处的值. 举例:
spcrv-----产生一个样条曲线 运行: 结果: spval----返回B形式样条函数在节点序列x处的值. 举例: points=[ ; ]; plot(points(1,:),points(2,:1),‘:’) values=spcrv(points,3); plot(values(1,:),values(2,:)); [xx,yy]=titanium; pick=[ ]; tau=xx(pick); y=yy(pick); n=length(tau); d1=tau(2)-tau(1); dr=tau(n)-tau(n-1); t=[tau(1)-d1*[2 1] tau tau(n)+dr*[1 2]]; sp=spapi(t,tau,y); v=spval(sp,0:7) 返回以t为节点序列,以k=length(t)-length(tau)为阶的满足y=f(x)的样条函数sp. 2019/4/30 应用数学系分析教研室
Similar presentations