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

use*_*657 4 wolfram-mathematica

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

rco*_*yer 5

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

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

FindRoot[ curve1[x] - curve2[x], {x, bestguess} ]
Run Code Online (Sandbox Code Playgroud)

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

不过,有一点需要注意.由于这是实验数据,交叉点本身会有不确定性,我建议您使用一种拟合方法来生成该信息,如此处所示.虽然不能立即访问,但它应该指向正确的方向.