如何优化两个范围来确定两条曲线之间的交点

时间:2019-02-13 15:07:02

标签: excel vba

我启动此线程,要求您在Excel中提供帮助。 主要目标是确定由点建模的两条曲线(曲线A,曲线B)之间的交点P =(x,y)的坐标。 曲线是非线性的,并且每个定义点都是使用复杂的方程式确定的(方程式由用户选择的许多参数决定,并且用户将选择定义曲线精度的点数)。也就是说,根据输入参数,每条曲线(曲线A和曲线B)在XY平面上始终变化(Z坐标始终为零,我们在XY平面上工作),并且定义点的数量也为根据用户的选择。

我的第一个尝试是通过每条曲线的趋势方程式确定交点(我使用LINEST函数确定多项式方程式的系数),并通过求解将其放入系统中的解决方案。问题在于Excel不能很好地对曲线进行插值,因为它们太宽,因此交点(系统的解)与实际解相差很远。 然后,我想做的是缩短点的范围,以便能够为曲线找到两个定义的趋势方程,切掉不存在交点的曲线部分。

今天,为了找到解决方案,我使用3阶多段样条在Siemens NX cad上绘制了曲线,然后可以轻松地找到交点的坐标。请注意,由于曲线A和曲线B的近似值,我使用多段样条线来更加精确。

由于我想避免使用CAD工具并始终保持在Excel上,因此有一种方法可以选择一个较短范围的定义点(靠近交点),以便更好地用趋势方程式近似曲线A和曲线B(线性4点和三阶样条函数),然后找到解决方案?

我附上一张图片,为您提供平面上曲线A和曲线B的示例: https://postimg.cc/MfnKYqtk

在以下链接中,您可以找到带有坐标点和曲线图的Excel文件: https://www.mediafire.com/file/jqph8jrnin0i7g1/intersection.xlsx/file

希望在您的帮助下解决此问题,谢谢! kalo86

2 个答案:

答案 0 :(得分:0)

您的问题给了我一些思考和研究的机会。
https://pomax.github.io/bezierinfo/

的帮助下
  

§27-交叉点(线-线交叉点)

  

§28-曲线/曲线交点

您的问题可以在Excel中解决。

关于Excel平滑线的奥秘,您可以在这里找到详细信息: https://blog.splitwise.com/2012/01/31/mystery-solved-the-secret-of-excel-curved-line-interpolation/

该拟合的作者是来自www.xlrotor.com的PE。Brian T. Murphy博士。您可以在此处找到详细信息:
https://www.xlrotor.com/index.php/our-company/about-dr-murphy
https://www.xlrotor.com/index.php/knowledge-center/files
=>请参阅Smooth_curve_bezier_example_file.xls
https://www.xlrotor.com/smooth_curve_bezier_example_file.zip

将这些编织在一起可以得到给定曲线的交点的以下结果

for the straight line intersection:
(x = -1,02914127711195 / y = 23,2340949174492)

for the smooth line intersection:
(x = -1,02947493047196 / y = 23,2370611219553)

要完全自动化您的任务,您需要添加更多有关所需精度的细节,以及需要进一步处理的细节(这实际上不是本网站的范围;-)。


直线的交点:

enter image description here

平滑线的交点:

enter image description here

比较图:

enter image description here

答案 1 :(得分:0)

解决方案

非常感谢您的回答,您将我的目标定为完美目标。 您的解决方案(用于平滑线)非常接近我在Siemens NX中确定的解决方案。 我将阅读提供的链接https://pomax.github.io/bezierinfo/上的文档,以便更好地理解该论点背后的数学原理。

然后,要继续我的请求,您已经能够找到两条曲线之间的交点的坐标(x,y),而无需通过非常精确的高级CAD系统。

最好的问候,我现在开始学习!

kalo86