我试图使用matlab(Windows 8上的版本R2014a)使用样条插值计算积分 .
我有函数的3个值(对于x = 0,0.5,1) .
所以我有2个向量 - 包含函数值的 x
和 y
,我正在执行
cube_spline = spline(x,y);
coefficients = qube_spline.coefs
我希望 coefficients
是一个大小为 2*4
的矩阵,但是为什么我得到一个 1*4
的矩阵,这意味着只有 1 polynomial for 2 panels .
另一方面,如果我'm using 4 dots, (i.e 3 panels) then I' m得到 coefficients
的大小是 3*4
as expected ,这意味着 3 polynomials for 3 panels .
我的问题是为什么matlab只为2个面板样条返回1个多项式,为3个面板样条返回3个多项式(或任何大于2的数字)?
1 回答
样条曲线有多种可能的边界条件,例如:
二阶导数在边界上等于零
给出了边界上的一阶导数
周期性条件,即边界上的相同的一阶和二阶导数
not-a-knot:取最外面的三个点来指定边界条件 .
似乎
spline
默认使用not-a-knot条件 . 因此,对于三个点,只需要一个三次多项式来插值数据(如果不是't for the not-a-knot condition), so there',那么二次方也足够了spline
为两个区间中的每一个都返回一个样条 . 这不是一件坏事 . .顺便说一句:如果你想要的只是内插值而不需要多项式系数,你可以选择
interp1
. 您可以以更简单的方式指定所需的不连续性 . 您可以选择:'pchip':
C^1
连续性 .'spline':
C^2
连续性 . (似乎使用与样条曲线相同的非结结束条件 . )