Как оптимизировать функцию, которая принимает массивы в качестве аргументов - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу использовать функцию optimize.curve_fit с функцией:

def nlorentz(x,X0,G):
# This function calculates the sum of n = len(X0) lorentzians.
s = 0
for i in range(len(X0)):
    s += lorentz(x,X0[i],G[i])
return s

, где X0 и G - массивы.

У меня есть список предположений:

gG = [1,2]
gX0 = [1.2,3]

Тогда я хочу не оптимизировать функцию для каждого значения X0:

p,cov = curve_fit(nlorentz,x,y,p0=[gX0,gG])

, чтобы получить желаемый результат:

p = [optimized_X0, optimized_G]

, где optimized_X0 и optimized_G являются массивами.

Но я получаю ошибку:

TypeError: nlorentz() takes 3 positional arguments but 5 were given

Я не знаю, есть ли способ сделать это. Любая помощь будет оценена. Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...