首页 文章

使用3个值计算matlab中的三次样条积分

提问于
浏览
0

我试图使用matlab(Windows 8上的版本R2014a)使用样条插值计算积分 .

我有函数的3个值(对于x = 0,0.5,1) .

所以我有2个向量 - 包含函数值的 xy ,我正在执行

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 回答

  • 1

    样条曲线有多种可能的边界条件,例如:

    • 二阶导数在边界上等于零

    • 给出了边界上的一阶导数

    • 周期性条件,即边界上的相同的一阶和二阶导数

    • not-a-knot:取最外面的三个点来指定边界条件 .

    似乎 spline 默认使用not-a-knot条件 . 因此,对于三个点,只需要一个三次多项式来插值数据(如果不是't for the not-a-knot condition), so there',那么二次方也足够了 spline 为两个区间中的每一个都返回一个样条 . 这不是一件坏事 . .

    顺便说一句:如果你想要的只是内插值而不需要多项式系数,你可以选择 interp1 . 您可以以更简单的方式指定所需的不连续性 . 您可以选择:

    'pchip': C^1 连续性 .

    保持形状的分段三次插值 . 查询点处的内插值基于相邻网格点处的值的保持形状的分段三次插值 .

    integral(@(xs) interp1(x, y, xs, 'pchip'),  xmin, xmax)
    

    'spline': C^2 连续性 . (似乎使用与样条曲线相同的非结结束条件 . )

    使用非结结束条件的样条插值 . 查询点处的内插值基于每个相应维度中的相邻网格点处的值的三次插值 .

    integral(@(xs) interp1(x, y, xs, 'spline'), xmin, xmax)
    

相关问题