Как мне преобразовать входную строку в правильную форму, которую можно было бы использовать в качестве первого параметра
вызываемого scipy.optimize.curve_fit?
Код: Выделить всё
import numpy as np
from scipy.optimize import curve_fit
x = np.arange(100)
y = 2*np.exp(-x)*3.14/2+1
Строка представляет собой математическую формулу, введенную некоторыми пользователями, не знающими Python. Функция синтаксического анализа принимает на вход следующие формулы:
Код: Выделить всё
f = parse('a*exp(-x)*b/c+d')
f1 = parse('k*x+b')
f2 = parse('k*sin(x*w)+b')
и анализировать/интерпретировать их с помощью лямбда-функций Python:
Код: Выделить всё
f = lambda x,a,b,c,d: a*numpy.exp(-x)*b/c+d
f1 = lambda x,k,b: k*x+b
f2 = lambda x,k,w,b: k*sin(x*w)+b
чтобы f можно было вызвать с помощью Curve_fit
Я нашел аналогичный вопрос в Stack Overflow, но ответов и комментариев нет.
Подробнее здесь:
https://stackoverflow.com/questions/778 ... parameters