使用scipy的interpolate.splprep
函数获取参数u
的参数样条,但u
的域不是样条的线积分,它是输入坐标的分段线性连接。我试过integrate.splint
,但只是通过u
给出了个体积分。显然,我可以在数值上整合一串笛卡尔差分距离,但是我想知道是否有闭合形式的方法来获取我忽略的样条或样条段(使用scipy或numpy)的长度。查找三次B样条的长度
编辑:我正在寻找一种封闭形式的解决方案或一种非常快速的方式来收敛到机器精度的答案。我几乎都放弃了数字寻根方法,现在主要是在一个封闭的答案之后。如果任何人有任何集成椭圆函数的经验,或者可以将我指向一个好的资源(Wolfram除外),那将会很棒。
我要去尝试千里马,试图得到什么,我相信是花键的一个部分功能的不定积分:I交叉张贴这对MathOverflow
这个解决方案对于近似值是很好的,但是我应该在我的问题中说明我是在精确的还是在机器精确的答案之后。它与EOL的romberg解决方案类似,但我将不得不在纯python中进行迭代。 – Paul 2010-02-04 00:30:42
由于一般分析解决方案涉及椭圆积分,因此无论采取何种方法,都将进行数值积分。 我所概述的方法并不直接整合弧长表达式,但它也是一个数值积分。 重要的是该方法在期望的时间收敛到期望的精度。 – symmetry 2010-02-04 13:37:39
为了更精确地说明这些长度,我指的是你会沿途积累... 看一看这里: http://steve.hollasch.net/cgindex/curves/cbezarclen.html 使用船体长度(L1)和弦长(L0)的平均值来近似单个子段的弧长。 – symmetry 2010-02-04 14:14:33