我正在尝试将一系列数据拟合为一个指数方程式,我在这里找到了一个很好的答案:How to do exponential and logarithmic curve fitting in Python? I found only polynomial fitting但是它没有包含我需要解决的这个问题。
我正在尝试针对一个方程拟合 y 和 x : y = -Ae Bx + A 。事实证明,最后的 A 是个大麻烦,我不知道如何转换 log(y) = log(A)等式em> + Bx ,好像最后一个A不在那儿。
感谢您的帮助。
答案 0 :(得分:3)
只要等式不太疯狂,您就可以始终使用scipy.optimize.curve_fit
:
import matplotlib.pyplot as plt
import numpy as np
import scipy.optimize as sio
def f(x, A, B):
return -A*np.exp(B*x) + A
A = 2
B = 1
x = np.linspace(0,1)
y = f(x, A, B)
scale = (max(y) - min(y))*.10
noise = np.random.normal(size=x.size)*scale
y += noise
fit = sio.curve_fit(f, x, y)
plt.scatter(x, y)
plt.plot(x, f(x, *fit[0]))
plt.show()
这将产生: