ValueError:函数返回的数组在调用之间更改了大小scipy.F溶剂()

2024-09-29 21:50:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用scipy.optimize.fsolve()来求解使函数等于零的x,但继续得到上述误差。我的代码是:

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)

我一直收到错误:

^{pr2}$

这个错误是什么意思?预期输出将是每个P值的一个值,因此Rm的x值将等于每个比率的[3.5,4,5.4,6.3,7.2,8.1]


Tags: 函数rmimportas错误scipyinitial误差
1条回答
网友
1楼 · 发布于 2024-09-29 21:50:38

好吧,我知道了如何让fsolve为一系列解决方案工作。在

如果我把整件事都写成这样就行了:

Rm = []
initial = [10,10,10,10,10,10]
for j in range(len(ratio)):
    f = lambda x : (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
    Rm.append(list(optimize.fsolve(f,initial)))

我的输出是:

^{pr2}$

相关问题 更多 >

    热门问题