将B样条函数表示为分段三次函数

3
我正在使用Scipy的SmoothBivariateSpline类在二元数据上创建一个三次B样条。现在我需要编写这个样条曲线的分段多项式表达式。
由于我的数学背景不是很强,所以我无法编写自己的算法来从SmoothBivariateSpline的t、c、k输出转换为多项式表示。如果可行的话,您能提供如何处理此问题的指导吗?我注意到Scipy有interpolate.ppform,但我找不到任何文档-这相关吗?
我考虑的一种方法是将样条的定义域分解成每个结点处的区域(共(n-1)^2个区域,其中n是结点数),然后在每个区域中对样条曲线上的许多点执行立方回归,以便为每个区域计算数据的立方回归。这是一种有效的方法吗?
前一种方法似乎更加严谨,所以我更愿意使用它,但后一种方法也可以接受。
1个回答

5

B样条可以高效地转换成分段多项式。

这可以在Scipy 0.14.0中轻松实现(将在几个月后发布),其中包含scipy.interpolate.PPoly.from_spline

从样条t,c,k计算分段多项式的算法本身非常简单,因此在此期间,您可以编写自己的函数来计算多项式系数: https://github.com/scipy/scipy/blob/master/scipy/interpolate/interpolate.py#L938


好的,我会为这个任务编写自己的函数。看起来 from_spline 只是找到以一个节点为中心的 Taylor 多项式。在我的情况下,由于我有一个二元样条,我应该计算二维 Taylor 函数吗?另外,断点将是什么? - Shivam Sarodia
@Draksis:类似问题的详细答案已发布在https://dev59.com/N2Eh5IYBdhLWcg3wYSg2#25330648。该答案提供了一个手动评估1D B样条结节和系数的函数,从而给出了一些有关它们含义的见解。也许您可以通过扩展所提供的1D情况来生成类似的内容。 - nzh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接