Python では、polyfit() を使用して多項式曲線近似を簡単に利用できますが、このガイドでは指数曲線と対数曲線の方法について説明します。フィッティング。
y = A B log x の形式の直線をフィッティングするには、単に log x に対して y の多項式フィッティングを実行します。
<code class="python">import numpy as np x = np.array([1, 7, 20, 50, 79]) y = np.array([10, 19, 30, 35, 51]) coeffs = np.polyfit(np.log(x), y, 1) print("y ≈", coeffs[1], "log(x) +", coeffs[0]) # y ≈ 8.46 log(x) + 6.62</code>
y = Ae^{Bx} の形式の直線をフィッティングするには、両辺の対数を取り、x に対して log y の多項式フィッティングを実行します。
<code class="python">x = np.array([10, 19, 30, 35, 51]) y = np.array([1, 7, 20, 50, 79]) coeffs = np.polyfit(x, np.log(y), 1) print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 0.670 * exp(0.105 * x)")</code>
より良い方法精度を高めるには、polyfit() の w キーワードを使用して y に比例する重みを利用します。
<code class="python">coeffs = np.polyfit(x, np.log(y), 1, w=np.sqrt(y)) print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 4.12 * exp(0.0601 * x)")</code>
ほとんどのスプレッドシートおよび関数電卓アプリケーションでは、指数回帰に重み付けされていない式が使用されるため、互換性が必要な場合は重み付けを避けてください。
scipy が利用可能な場合は、変換なしでモデルをフィッティングするために Curve_fit を使用します。
<code class="python">from scipy.optimize import curve_fit # Logarithmic fitting coeffs, _ = curve_fit(lambda t, a, b: a + b * np.log(t), x, y) print("y ≈", coeffs[1], "log(x) +", coeffs[0]) # y ≈ 6.62 + 8.46 log(x) # Exponential fitting with initial guess coeffs, _ = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(4, 0.1)) print("y ≈", coeffs[0], "exp(", coeffs[1], " * x) = 4.88 exp(0.0553 x)")</code>
初期推定を提供することで、curve_fit は目的の値に到達できます。指数関数近似の極小値。変換されたポリフィット法よりも正確な近似が得られます。
以上がPython で指数関数および対数曲線フィッティングを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。