Как подобрать конкретную экспоненциальную функцию к numpy - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь подогнать ряд данных к экспоненциальному уравнению, я нашел здесь отличный ответ: Как выполнить экспоненциальную и логарифмическую подгонку кривых в Python?Я нашел только полиномиальную подгонку Но в ней не было шага вперед, который мне нужен для этого вопроса.

Я пытаюсь уместить y и x против уравнения: y = -Ae Bx + A .Окончательный A оказался большой проблемой, и я не знаю, как преобразовать уравнение, например log (y) = log (A) + Bx как будто там не было финальной буквы A.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы всегда можете просто использовать 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

...