我正在寻找一种有效的算法来计算固定结构的多元多项式,但系数和评估点不同。这个问题和这个一样,显然没有引起太多关注。我在 MATLAB 中工作,因此在这种情况下“高效”可能意味着尽可能多地矢量化。谢谢你。
问候,
伊万
我正在寻找一种有效的算法来计算固定结构的多元多项式,但系数和评估点不同。这个问题和这个一样,显然没有引起太多关注。我在 MATLAB 中工作,因此在这种情况下“高效”可能意味着尽可能多地矢量化。谢谢你。
问候,
伊万
您的问题在论文
WC Rheinboldt、CK Mesztenyi 和 JM Fitzgerald,关于多元多项式及其导数的评估,BIT 17 (1977), 437-450 中得到了解答。
这篇论文包含伪代码,但是是在矢量化还不是一个常见问题的时候编写的。但是要在 Matlab 中同时评估 (coef,x) 的许多值的 pol(coef,x),您可以将算法应用于 is is,将逐点运算应用于向量 coef(i,:) 和 x(i,:)。这完美地矢量化了。
哪种多元多项式?适用于什么应用(插值、曲线拟合、计算导数……)?结构化笛卡尔数据点还是分散数据?你需要连续的导数吗?有多少衍生品?
在不知道这一点的情况下,很难给你一个“好”的准确答案。一个普遍的做法是:
对于结构化笛卡尔数据,请查看 deBoor 的 matlab Spline Toolbox。您可以轻松且非常有效地计算张量积 B 样条曲线,用于任意数量的变量、任意数量的维度以及任意数量的连续导数(尽管您不应该使用超过 15-20 个) .
对于多维分散数据,matlab 有几个径向基函数的实现,谷歌搜索“径向基函数 matlab”会产生其中的几个。
另一种可能性是使用有限元工具箱(在非结构化网格上)来近似您的数据。这可能很快,但是您的导数可能在元素之间是不连续的。
此外,matlab 包括对各种多项式函数的非常快速的实现,并且经常用于近似、插值和曲线拟合,因此如果您需要特定类型的多项式,很可能有人已经实现了它。例如,搜索“Chebyshev polynomials matlab”也会产生很多结果。