小编Ari*_*ane的帖子

当Matlab fsolve工作时,Scipy.optimize.root不会在Python中收敛,为什么?

我试图使用Python找到一个名为f的函数的根y.

这是我的代码:

def f(y):
    w,p1,p2,p3,p4,p5,p6 = y[:7] 
    t1 = w - 0.99006633*(p1**0.5) - (-1.010067)*((1-p1))
    t2 = w - 22.7235687*(p2**0.5) - (-1.010067)*((1-p2))
    t3 = w - 9.71323491*(p3**0.5) - (-1.010067)*((1-p3))
    t4 = w - 2.43852877*(p4**0.5) - (-1.010067)*((1-p4))
    t5 = w - 3.93640207*(p5**0.5) - (-1.010067)*((1-p5))
    t6 = w - 9.22688144*(p6**0.5) - (-1.010067)*((1-p6))
    t7 = p1 + p2 + p3 + p4 + p5 + p6 - 1
    return [t1,t2,t3,t4,t5,t6,t7]


x0 = np.array([-0.01,0.4,0.1,0.2,0.1,0.1,0.1])
sol = scipy.optimize.root(f, x0)
print sol 
Run Code Online (Sandbox Code Playgroud)

Python找不到根.但是有一个,我在Matlab中用函数fsolve找到它.

它是:

[0.3901,0.6166,0.0038,0.0202,0.2295,0.1076,0.0223]

我真的想用Python.任何人都可以解释为什么Python中的scipy.optimize.root不会收敛而matlab中的fsolve呢?

有关信息,scipy.optimize.solve也不会收敛.

python numpy scipy

4
推荐指数
1
解决办法
1054
查看次数

使用scipy.optimize.root查找根

我试图使用Python找到一个名为f的函数的根y.

这是我的代码:

 def f(y):
    w,p1,p2,p3,p4,p5,p6,p7 = y[:8] 
    t1 = w - 0.500371726*(p1**0.92894164) - (-0.998515304)*((1-p1)**1.1376649)
    t2 = w - 8.095873128*(p2**0.92894164) - (-0.998515304)*((1-p2)**1.1376649)
    t3 = w - 220.2054377*(p3**0.92894164) - (-0.998515304)*((1-p3)**1.1376649)
    t4 = w - 12.52760758*(p4**0.92894164) - (-0.998515304)*((1-p4)**1.1376649)
    t5 = w - 8.710859537*(p5**0.92894164) - (-0.998515304)*((1-p5)**1.1376649)
    t6 = w - 36.66350261*(p6**0.92894164) - (-0.998515304)*((1-p6)**1.1376649)
    t7 = w - 3.922692207*(p7**0.92894164) - (-0.998515304)*((1-p7)**1.1376649)       
    t8 = p1 + p2 + p3 + p4 + p5 + p6 + p7 - 1
    return [t1,t2,t3,t4,t5,t6,t7,t8]


x0 = np.array([-0.01,0.3,0.1,0.2,0.1,0.1,0.1,0.1])
sol = …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

1
推荐指数
1
解决办法
8914
查看次数

标签 统计

numpy ×2

python ×2

scipy ×2