y = 0 の曲線の交点を特定する
NumPy 配列を使用した Python プロットのコンテキストでは、曲線が y = 0 と交差する y 軸は、とらえどころのないタスクになる可能性があります。この記事では、既存の根探索手法の制限に対処しながら、これらの交点を正確に決定する方法について説明します。
まず、NumPy 配列を使用してプロットを定義しましょう。
<code class="python">import numpy as np import matplotlib.pyplot as plt vertical_data = ... gradient = ... plt.plot(gradient, vertical_data) plt.show()</code>
さて、曲線のゼロ値を見つけたいとします。従来の根探索アルゴリズムでは、浮動小数点の精度制限により不正確な結果が得られることがよくあります。これを克服するために、単純な線形補間手法を採用します。
<code class="python">import numpy as np def find_roots(x, y): # Compute the sign differences s = np.abs(np.diff(np.sign(y))).astype(bool) # Perform linear interpolation at sign changes return x[:-1][s] + np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s])+1)</code>
この関数は、x 配列と y 配列を入力として受け取り、y 値がゼロ マークと交差する交点を見つけます。この関数をデータに適用し、結果をプロットします:
<code class="python">z = find_roots(gradient, vertical_data) plt.plot(gradient, vertical_data) plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4) plt.show()</code>
x と y の役割を反転することで、x 軸に沿った交点を決定できます:
<code class="python">plt.plot(vertical_data, gradient) plt.plot(np.zeros(len(z)), z, marker="o", ls="", ms=4) plt.show()</code>
さらに、提示された方法では、ゼロ以外の y 値で交点を見つけることができます。 find_roots 関数を適用する前に、曲線から必要な y 値を減算するだけです。
<code class="python">y0 = 1.4 z = find_roots(gradient, vertical_data - y0) plt.plot(z, np.zeros(len(z))+y0)</code>
最後に、2 つの曲線間の交差を決定するために、曲線の差を計算し、find_roots 関数を適用して交差を見つけます。ポイント:
<code class="python">y2 = ... z = find_roots(gradient, y2 - y1) plt.plot(gradient, y1) plt.plot(gradient, y2, color="C2") plt.plot(z, np.interp(z, gradient, y1), marker="o", ls="", ms=4, color="C1")</code>
以上がPython を使用して y = 0 の曲線の交点を正確に見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。