Я пытаюсь использовать scipy.optimize.fsolve (), чтобы решить для х, что делает функцию равной нулю, но продолжаю получать ошибку выше.Мой код:
import scipy.optimize as optimize
from scipy.stats import genextreme as gev
gevcombined = [(-0.139, 3.035, 0.871),(-0.0863, 3.103, 0.818),(-0.198, 3.13, 0.982)]
ratio = [0.225, 0.139, 0.294]
P = [0.5,0.8,0.9,0.96,0.98,0.99]
def mixedpop(x):
for j in range(len(ratio)):
F = (ratio[j]*gev.cdf(x,gevcombined[j][0],gevcombined[j][1],gevcombined[j][2]))+((1-ratio[j]*gev.cdf(x,gevcombined[j][0],gevcombined[j][1],gevcombined[j][2]))-P
return F
initial = 10
Rm = optimize.fsolve(mixedpop,initial)
Я получаю сообщение об ошибке:
ValueError:the array returned by a function changed size between calls
Что означает эта ошибка?Ожидаемый результат будет значением для каждого значения P. Таким образом, значения x из Rm будут равны примерно как [3.5, 4, 5.4, 6.3, 7.2, 8.1] для каждого отношения