用3个值计算matlab中的三次样条积分
Calculate cubic spline integral in matlab with 3 values
我正在尝试使用 matlab 样条插值法计算积分(windows 8 上的 R2014a 版本)。
我有函数的 3 个值(对于 x=0,0.5,1)。
所以我有 2 个向量 - x
和 y
包含函数的值,我正在执行
cube_spline = spline(x,y);
coefficients = qube_spline.coefs
我期望得到 2 个多项式,每个都是 3 次,即我期望 coefficients
是一个大小为 2*4
的矩阵,但不知为什么我得到了一个矩阵即 1*4
,这意味着 2 个面板只有 1 个多项式。
另一方面,如果我使用 4 个点(即 3 个面板),那么我得到 coefficients
的大小是 3*4
正如预期的那样,这意味着 3 个面板的 3 个多项式。
我的问题是为什么 matlab return 只有 1 个多项式用于 2 个面板样条,而 3 个多项式用于 3 个面板样条(或任何大于 2 的数)?
样条有多种可能的边界条件,例如:
- 边界上的二阶导数为零
- 给定边界上的一阶导数
- 周期性条件,即边界上的一阶和二阶导数相同
- not-a-knot:取最外面的三个点指定边界条件
似乎 spline
默认使用 not-a-knot 条件。因此,对于三个点,只需要一个三次多项式来插入您的数据(如果不是非结条件,则二次多项式也足够了),因此没有理由 spline
到 return 两个区间各一个样条。然而,这并不是一件坏事。
顺便说一下:如果您只想对值进行插值而不需要多项式系数,则可以改用 interp1
。您可以以更简单的方式指定您想要哪种不连续性。您可以选择:
'pchip': C^1
连续性。
Shape-preserving piecewise cubic interpolation. The interpolated value at a query point is based on a shape-preserving piecewise cubic interpolation of the values at neighboring grid points.
integral(@(xs) interp1(x, y, xs, 'pchip'), xmin, xmax)
'spline': C^2
连续性。 (似乎使用与样条相同的非结结束条件。)
Spline interpolation using not-a-knot end conditions. The interpolated value at a query point is based on a cubic interpolation of the values at neighboring grid points in each respective dimension.
integral(@(xs) interp1(x, y, xs, 'spline'), xmin, xmax)
我正在尝试使用 matlab 样条插值法计算积分(windows 8 上的 R2014a 版本)。
我有函数的 3 个值(对于 x=0,0.5,1)。
所以我有 2 个向量 - x
和 y
包含函数的值,我正在执行
cube_spline = spline(x,y);
coefficients = qube_spline.coefs
我期望得到 2 个多项式,每个都是 3 次,即我期望 coefficients
是一个大小为 2*4
的矩阵,但不知为什么我得到了一个矩阵即 1*4
,这意味着 2 个面板只有 1 个多项式。
另一方面,如果我使用 4 个点(即 3 个面板),那么我得到 coefficients
的大小是 3*4
正如预期的那样,这意味着 3 个面板的 3 个多项式。
我的问题是为什么 matlab return 只有 1 个多项式用于 2 个面板样条,而 3 个多项式用于 3 个面板样条(或任何大于 2 的数)?
样条有多种可能的边界条件,例如:
- 边界上的二阶导数为零
- 给定边界上的一阶导数
- 周期性条件,即边界上的一阶和二阶导数相同
- not-a-knot:取最外面的三个点指定边界条件
似乎 spline
默认使用 not-a-knot 条件。因此,对于三个点,只需要一个三次多项式来插入您的数据(如果不是非结条件,则二次多项式也足够了),因此没有理由 spline
到 return 两个区间各一个样条。然而,这并不是一件坏事。
顺便说一下:如果您只想对值进行插值而不需要多项式系数,则可以改用 interp1
。您可以以更简单的方式指定您想要哪种不连续性。您可以选择:
'pchip': C^1
连续性。
Shape-preserving piecewise cubic interpolation. The interpolated value at a query point is based on a shape-preserving piecewise cubic interpolation of the values at neighboring grid points.
integral(@(xs) interp1(x, y, xs, 'pchip'), xmin, xmax)
'spline': C^2
连续性。 (似乎使用与样条相同的非结结束条件。)
Spline interpolation using not-a-knot end conditions. The interpolated value at a query point is based on a cubic interpolation of the values at neighboring grid points in each respective dimension.
integral(@(xs) interp1(x, y, xs, 'spline'), xmin, xmax)