在mathematica中找到两个ListLinePlot的交叉点

时间:2012-03-10 20:50:57

标签: wolfram-mathematica

我有很多实验数据,我使用mathematica中的ListLinePlot绘制为2条曲线。我想找到这两者之间的交叉点。如果不进行插值功能和Solve [],我可以这样做吗?我真的不认为有必要制作1000次的多项式或者我的情况。它应该很简单,但我找不到那样做的功能。我完全没有一个函数,它假设ListLinePlot之间的每个数据点之间有直线(因为它们有很多)。我觉得这应该是非常明显的,但我真的找不到怎么做(除了只用我的眼睛外)

1 个答案:

答案 0 :(得分:5)

我实际上会使用Mathematica的Interpolation函数生成两条曲线的插值,然后使用FindRoot找到交点,如下所示

curve1 = Interpolation[ data1 ];
curve2 = Interpolation[ data2 ];

FindRoot[ curve1[x] - curve2[x], {x, bestguess} ]

尽管涉及到数千个点,插值操作非常快,在我的机器上按 shift + 输入和Mathematica返回之间没有明显的延迟

但是,有一点需要注意。由于这是实验数据,交叉点本身将具有不确定性,我建议您使用设计用于生成该信息的拟合方法,例如找到here。虽然不能立即访问,但它应该指向正确的方向。