三次样条插值算法
A. 三次样条插值函数求得以后,怎么算出具体的点
已知速度曲线v(t) 上的四个数据点下表所示
基本原理:
利用插值(即求过已知有限个数据点的近似函数)的基本原理,用多项式作为研究插值的工具,进行代数插值.其基本问题是:已知函数f (x)在区间[a,b]上n +1个不同点x0,…,xn处的函数值 (i = 0,1,…,n),求一个至多n 次多项式 ψn(x)
使其在给定点处与 f (x)同值,即满足插值条件: ψn(x)= = .
许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼外
形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续,
而且要有连续的曲率,这就导致了样条插值的产生.
数学上将具有一定光滑性的分段多项式称为样条函数.具体地说,给定区间[a,b]
的一个分划
Δ:
如果函数s(x) 满足:
(i)在每个小区间[ ](i=0,1,…,n)上s(x)是k 次多项式;
(ii)s(x)在[a,b]上具有k −1阶连续导数.
则称s(x)为关于分划Δ 的k 次样条函数,其图形称为k 次样条曲线.
基本思路:
根据插值的基本原理,先对v进行三次样条插值,可以得到许多v(t)的值;然后根据积分的基本原理,分割、近似、求和、取极限,可以求得积分.根据求导原理,因变量的微小变化量与自变量变化量的商,可以求得所求点的导数值.
程序代码:
t0=[0.15 0.16 0.17 0.18];v0=[3.5 1.5 2.5 2.8];
t=0.15:0.0001:0.18;
%三次样条插值;
v=interp1(t0,v0,t,'spline');
v=spline(t0,v0,t);
pp=csape(t0,v0,'second');v=ppval(pp,t)% 使用csape函数;
S=sum(v)*0.0001;%求积分值
T=(v(301)-v(300))/0.0001;%求导数值
Plot(t0,v0,’*’,t,v);
B. 三次样条插值计算步骤
三次样条插值在实际中有着广泛的应用,在计算机上也容易实现。下面介绍用计算机求取三样条插值函数S(x)的算法步骤:
(1)输入初始节点离散数据xi,yi(i=0,1,…,n);
(2)依据式(6-46),计算hi=xi-xi-1,λi和Ri(i=1,…,n-1);
(3)根据实际问题,从式(6-49)、式(6-51)和式(6-53)中选择一类对应的边界条件,求取v0,w0,u0,R0,un,vn,wn,Rn;
(4)根据形成的方程组(6-54)的特点,选用追赶法、高斯法等解方程组,求出Mi(i=0,1,2,…,n);
(5)依据式(6-41)、式(6-42),计算插值点的三样条插值函数值和该点的导数值。
C. 数值方法 三次样条插值
也得不影响。。。 而且如果你固定用三次样条插值的话,直接影响精确度的就是间距。
所有的多项式插值,(不止插值,连拟合都是这样)只要方法固定下来,接下来直接影响精度的就是间距h了。
三次样条插值本质上就是解一个矩阵对应的线性方程组。至于你最后一句话:
“是知道一系列等间距点和该出的值,求这些点中间处的插值点的值。”
。。。那一系列等间距点就是插值点,后面那个是你未知的部分的内容,3次样条插值是求出一个可以穿过你原本给定的那一系列点的分段3次多项式函数,使得它在所有的点都保证至少2阶连续可导的光滑度。三次样条插值解出来的是各个分段的逼近多项式的表达式(3次的),得到全段的表达式后,你把你要估计的那个点的自变量值代进表达式得到该点的函数值。
插值有时候也会用来做别的事情。最常见的就是在估算原函数的积分的时候,威力巨大。
D. 三次样条插值 三次样条拟合
两个拟合曲线分开写. x=[1:16];y1=[2044 2399 2525 2376 2525 2392 2525 2525 2385 2385 2376 2392 2426 2457 2464 2426];xx=1:0.1:16;yy1=interp1(x,y1,xx, 'cubic spline');plot(x,y1,'ro','MarkerFaceColor','r');hold on;plot(xx,yy1,'LineWidth',2);grid on; 另外一个照着写就可以了
E. 三次样条插值求导法
由三样条插值算法求得Mi=S″(xi),并代入式(6-42)中,得求导公式如下:
(1)在节点上x=xi(i=0,1,2,…,n):
地球物理数据处理基础
(2)在任意点x∈(xi-1,xi):
地球物理数据处理基础
辛卜生积分方程求导法和三次样条插值求导法都需要求解三对角方程组,通常情况下,先用插值求导法求出区间边界点的导数,然后求解方程组一次得到其余节点的导数,而且精度比插值求导法要高。对于三次样条求导法,还很容易求出区间任意点的导数值。最后指出,数值求导存在不宜克服的舍入误差这一本质困难。
F. 三次均匀B样条插值算法
三次样条插值(Cubic Spline Interpolation)简称Spline插值,是通过一系列形值点的一条光滑曲线,数学上通过求解三弯矩方程组得出曲线函数组的过程。
实际计算时还需要引入边界条件才能完成计算。一般的计算方法书上都没有说明非扭结边界的定义,但数值计算软件如Matlab都把非扭结边界条件作为默认的边界条件。
G. 你好,如何求三次样条插值的基函数
三次样条函数:
定义:函数S(x)∈C2[a,b] ,且在每个小区间[ xj,xj+1 ]上是三次多项式,其中
a =x0 <x1<...< xn= b 是给定节点,则称S(x)是节点x0,x1,...xn上的三次样条函数。
若在节点x j 上给定函数值Yj= f (Xj).( j =0, 1, , n) ,并成立
S(xj ) =yj .( j= 0, 1, , n) ,则称S(x)为三次样条插值函数。
实际计算时还需要引入边界条件才能完成计算。边界通常有自然边界(边界点的二阶导为0),夹持边界(边界点导数给定),非扭结边界(使两端点的三阶导与这两端点的邻近点的三阶导相等)。一般的计算方法书上都没有说明非扭结边界的定义,但数值计算软件如Matlab都把非扭结边界条件作为默认的边界条件。
H. 谁能用一句话解释清楚三次样条插值方法
问题讲的很详细,我就有信心解决了。呵呵!
其实,对于2D,3D使用meshgrid和ndgrid都可以,但要注意:
[X1,X2,X3] = NDGRID(x1,x2,x3)lt;=;[X2,X1,X3] = MESHGRID(x2,x1,x3)
即x和y轴要反向。为何呢?帮助说的很清楚:因为NDGRID适用于n维空间,而meshgrid适用于笛卡尔空间。
所以ppt上特意写到必须用ndgrid是不对的。
meshgrid和ndgrid的用法不同之处在于:2D、3D都可以使用(区别是x轴,y轴的转换),但对于4D、5D只能使用ndgrid.
顺便回答一下你没问,但很多人问我的问题:为什么要使用meshgrid?
matlab使用矩阵的方式进行运算,对于2D而言,如果采样10个点(指x,y轴),那么对于x=第一个采样点,反映到矩阵就是10个,即不管y是哪个值,x的第一采样点保持不变;对y是同理。因此,2D产生的x和y都是两维矩阵。
最后给你一个实例,说明两者在这里是通用的:
x0=-3:.6:3;
y0=-2:.4:2;
[x,y]=ndgrid(x0,y0);
[Y,X]=meshgrid(y0,x0);
z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);
Z=(X.^2-2*X).*exp(-X.^2-Y.^2-X.*Y);
sp=csapi({x0,y0},z);
SP=csapi({x0,y0},Z);
subplot(221),fnplt(sp);
subplot(222),fnplt(SP);