我有很多实验数据,我使用mathematica中的ListLinePlot绘制为2条曲线。我想找到这两者之间的交叉点。如果不进行插值功能和Solve [],我可以这样做吗?我真的不认为有必要制作1000次的多项式或者我的情况。它应该很简单,但我找不到那样做的功能。我完全没有一个函数,它假设ListLinePlot之间的每个数据点之间有直线(因为它们有很多)。我觉得这应该是非常明显的,但我真的找不到怎么做(除了只用我的眼睛外)
答案 0 :(得分:5)
我实际上会使用Mathematica的Interpolation
函数生成两条曲线的插值,然后使用FindRoot
找到交点,如下所示
curve1 = Interpolation[ data1 ];
curve2 = Interpolation[ data2 ];
FindRoot[ curve1[x] - curve2[x], {x, bestguess} ]
尽管涉及到数千个点,插值操作非常快,在我的机器上按 shift + 输入和Mathematica返回之间没有明显的延迟
但是,有一点需要注意。由于这是实验数据,交叉点本身将具有不确定性,我建议您使用设计用于生成该信息的拟合方法,例如找到here。虽然不能立即访问,但它应该指向正确的方向。