Python:scipy.optimize,bisection 可以使用返回多个值的函数 f 吗?

问题描述

假设我有一个函数 f,它返回多个值。

def f(x):
    return x + 1,2 * x

Scipy documentation 告诉我 f 必须是一个返回数字的函数。我认为我给定的函数 f 与 scipy.optimize.bisection 不兼容,但是是否可以仅对 f 的返回值之一执行二分法?

解决方法

您可以定义一个函数来调用您的函数 f 并提取第二个返回值:

from scipy.optimize import bisect

def f(x):
    return x + 1,2 * x

bisect(lambda x: f(x)[1],-1,1)