Я пытаюсь передать список в качестве входных данных для системы функций. Моя функция выглядит так:
beta[i] - (1 - a[i]*beta[i])*(gamma + sum(other betas)
gamma = 0.49
a = [1.57, 2.731, 2.32, 4.681, 1.878]
def g(beta):
return ((beta[0] - (1 - 1.57 * beta[0])*(gamma + np.sum([beta[1], beta[2], beta[3], beta[4]]))),
(beta[1] - (1 - 2.731 * beta[1])*(gamma + np.sum([beta[0], beta[2], beta[3], beta[4]]))),
(beta[2] - (1 - 2.32 * beta[2])*(gamma + np.sum([beta[0], beta[1], beta[3], beta[4]]))),
(beta[3] - (1 - 4.681 * beta[3])*(gamma + np.sum([beta[0], beta[1], beta[2], beta[4]]))),
(beta[4] - (1 - 1.878 * beta[4])*(gamma + np.sum([beta[0], beta[1], beta[2], beta[3]]))),
)
, который решается после звонка:
optimize.fsolve(g, [1, 1, 1, 1, 1])
ответ:
array([0.46713148, 0.30731229, 0.3502582 , 0.1932526 , 0.41133453]
Очевидно, что должен быть более элегантный способ сделать это для произвольной длины аргументов. Я пытаюсь следующее:
def other_betas(lst, index):
return sum(lst)-lst[index]
def temp(beta):
for i in range(len(e)):
beta[i] = (1 - e[i]*beta[i])*(gamma + np.sum(other_betas))
return beta
, оканчивающийся на:
TypeError: unsupported operand type(s) for +: 'float' and 'function'