Pau*_*aul 7 python interpolation scipy
使用scipy interpolate.splprep函数获取参数的参数样条曲线u,但域u不是样条曲线的线积分,它是输入坐标的分段线性连接.我试过了integrate.splint,但这只是给了个人积分u.显然,我可以数字地整合一堆笛卡尔差分距离,但我想知道是否有闭合形式的方法来获得我忽略的样条或样条线段(使用scipy或numpy)的长度.
编辑:我正在寻找一种封闭形式的解决方案或一种非常快速的方式来收敛机器精度答案.我几乎放弃了数字根寻找方法,现在主要是在一个封闭形式的答案之后.如果任何人有任何集成椭圆函数的经验或者可以指向一个好的资源(除了Wolfram),那就太好了.
我将尝试使用Maxima来尝试获得我认为是样条曲线的一个段的函数的无限积分:我在MathOverflow上交叉发布了它
因为x和y都是立方参数函数,所以在简单函数方面没有封闭的解决方案.数值整合是要走的路.集成弧长表达式或简单地添加线段长度 - 取决于您所追求的准确性以及您想要施加多少努力.
准确快速的"添加线段长度"方法:
使用recurvise细分(de Casteljeau算法的一种形式)生成点,可以用最少的点数为您提供高度精确的表示.如果它们不符合标准,则仅细分细分.通常,标准基于连接控制点(船体或笼子)的长度.对于立方,通常比较P0P1 + P1P2 + P2P3与P0P3的接近程度,其中P0,P1,P2和P3是定义贝塞尔曲线的控制点.
你可以在这里找到一些Delphi代码: 链接文本
转换为Python应该相对容易.它会产生积分.代码已经计算了段的长度以测试标准.您可以在此过程中简单地累积这些长度值.