@版权声明:本文为版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出,
本文链接https://www.jianshu.com/p/074b712cbe6f?v=1687318199599
如有问题, 可邮件咨询。
关键字:牛顿-辛普森、积分、曲线长度、GCPnts_AbscissaPoint、OpenCascade
通过上一篇文章,在已知曲线方程和给定参数区间,我们很容易就能计算曲线的在该区间内的弧长。
但是,有时候,我们要求曲线上距离给定参数U0,弧长为Abscissa的另为一点的参数Ui。这时该如何计算呢?
已知条件1. 曲线的参数方程
已知条件2 ,起点参数U0
已知条件3 ,曲线上距离参数U0位置点 的弧长Abscissa
任意曲线弧长的微分方程为
在已知曲线参数方程的情况下
其中θ为参数
那么弧长计算如下
令
则上式变为:
这里我们已知积分下限 令其为a,不知道积分上限另其为b= x ,将L移动到右边上式变为
所以我们的目的变为:求一个x使得g(x) = 0成立。
根据牛顿-辛普森迭代法,我们预先猜测一个xi 。然后通过如下公式进行迭代
因为积分 为变上限积分,根据积分第一定理(牛顿-莱布尼兹公式)可知,F(x)为变上限积分原函数,而原函数F(x)的导数就是变上限积分中的积分函数h(θ)。所以
从而:
通过分析可知,当给定一个x,我们很容易求出g(x) 和 h(x) 然后不断的迭代
知道abs(g(x)) <= 给定的精度。
例如:
已知椭圆的参数方程
则
当a= 200 b=100时,求椭圆上距离PI/4 长度150的另一个参数点Ui. 精度为0.00000001
Ux g(x)
1.1096598316594071 -94.177111895505263
1.7052881857520750 22.482481805890046
1.5630964858322587 -5.8951256884998031
1.6003805343695141 1.5610253347664411
1.5905077432833366 -0.41307707114785330
1.5931202720713737 0.10934202567798934
1.592428732811357 -0.028940858958435456
1.5926117704446363 0.0076602755778765186
1.5925633226079750 -0.0020275664376470104
1.5925761460640755 0.00053666886194037033
1.5925727518721695 -0.00014204879113322022
1.5925736502676071 0.000037598344960088070
1.5925734124747946 -0.0000099517601768184250