图形算法库研发(八):高效精准的多项式值域估计算法

几何内核中的算法,大部分是可以转化为非线性方程组求解问题的。目前,最适合几何内核的非线性方程组求解算法是区间迭代类算法。

多项式是几何内核中比较常见的表达式(Bezier、Nurbs等),多项式值域精准高效的估计,严重影响区间类迭代算法的收敛速度。

本文将采用伯恩斯坦多项式来估算多项式值域。因为伯恩斯坦多项式具有凸包性,并且所有多项式都能转化成伯恩斯坦多项式形式。

伯恩斯坦多项式的定义如下:

相关伯恩斯坦多项式的详细知识,讲解的文章比较多,这里就不占用篇幅了。

在本算法中,我们做的工作是求出该式中的pi,并根据pi计算闭包作为多项式的值域估计。

我们可以通过对u采样并解一个线性方程组的方式来计算pi。

需要注意的是,u属于[0, 1],所以首先需要将多项式的变量x变换到[0, 1]。

当然,如果每次计算都解这样一个线性方程组,效率还是比较低的。

我们采用固定好采样节点的方式来避免这个问题。

固定好采样节点,等式右边方程的系数矩阵也就固定了,我们可以提前计算出该逆矩阵并定义成常量。

计算pi的时候只需要和左侧基于该采样节点计算出的向量相乘即可。

下面以如下一个多项式为例子演示一下该算法的效果。

设置定义域为[-4, -2]。

根据该多项式,通过计算极值点,很容易计算其值域区间为[21, 28],我们不推荐直接这样做的原因是因为计算极值点的效率有点低。

如果采用传统的区间代数公式,计算出的值域区间为[-33, 77]。

采用本文算法,u的采样点选为0,1/3,2/3,1。生成的系数逆矩阵如下:

图片

最终计算出的值域区间为[21, 31]。

从结果来看,它和实际值域非常接近,比传统区间代数法要好很多。

因为矩阵是提前生成好的,所以本算法的计算效率也非常高。

将该算法用在曲线求交上的效率数据如下:

图片

未使用该算法时的效率数据如下:

图片

可见该算法的使用将运算效率提高了1倍左右。

更多几何算法,欢迎关注公众号“几何算法”。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值