2012-03-10 4 views
4

MathematicaでListLinePlotを使って2つの曲線としてプロットした実験データがたくさんある。私はそれらの2つの交点を見つけたい。補間関数やSolve []を使わなくても、それを行うことはできますか?私は実際には、私の場合には何千もの多項式を作る必要はないと思います。それは簡単なはずですが、私はそれを行う関数を見つけることができません。私はListLinePlotのように各データポイントの間に直線を引く関数を使っても問題ありません。Mathematicaで2つのListLinePlotの交点を見つける

答えて

5

私は実際にMathematicaのInterpolation関数を使って2つの曲線の内挿を生成することになりますが、実際には、関与ポイントの何千もかかわらず

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

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

を次のようにしてから、交差点を見つけるためにFindRootを使用し、補間は非常に高速動作であり、そして私のマシン上でシフトを押すとの間に顕著な遅延がない + とMathematicaが戻る。

しかし、これには注意が必要です。これは実験的なデータなので、交差点自体には不確実性があります。そのような情報を生成するように設計されたフィッティングメソッドを使用することをお勧めします(例:here)。すぐにはアクセスできないが、正しい方向に向けるべきである。

+0

'InterpolationOrder - > 1'を使用して線形補間(「直線」)を強制できます。導関数に依存しない 'FindRoot'メソッドを使う必要があるかもしれません。 – Szabolcs

関連する問題