如何使用numpy拟合特定的指数函数

时间:2018-11-13 02:44:34

标签: python numpy curve-fitting

我正在尝试将一系列数据拟合为一个指数方程式,我在这里找到了一个很好的答案: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不在那儿。

感谢您的帮助。

1 个答案:

答案 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()

这将产生:

enter image description here