从scipy根查找/优化函数返回多个值

时间:2016-10-08 17:15:18

标签: python function optimization scipy

我试图返回在scipy根查找函数(scipy.optimize.root)中获得的多个值。

例如:

B = 1
def testfun(x, B):
    B = x + 7
    return B**2 + 9/18 - x

y = scipy.optimize.root(testfun, 7, (B))

有没有办法在不使用全局变量的情况下返回B的值?

1 个答案:

答案 0 :(得分:1)

我不知道SciPy的具体内容,但是关于一个简单的闭包怎么样:

from scipy import optimize

def testfun_factory():
    params = {}
    def testfun(x, B):
        params['B'] = x + 7
        return params['B']**2 + 9/18 - x
    return params, testfun

params, testfun = testfun_factory()
y = optimize.root(testfun, 7, 1)
print(params['B'])

或者,具有__call__的类的实例也可以作为可调用对象传递。