具有以下功能:f(x) = x * cos(x-4)
使用x = [-2.5, 2.5]
时,此函数在0
和f(0) = 0
处交叉。
这是用以下代码确定的:
import math
from scipy.optimize import fsolve
def func(x):
return x*math.cos(x-4)
x0 = fsolve(func, 0.0)
# returns [0.]
x0 = fsolve(func, -0.75)
# returns [-0.71238898]
使用
f(-0.71238898) = 0
(或任何其他python根查找工具)在一个调用中查找两个根的正确方法是什么?是否有不同的fzero
函数执行此操作?scipy
reference 最佳答案
定义函数,以便它可以接受标量或numpy数组作为参数:
>>> import numpy as np
>>> f = lambda x : x * np.cos(x-4)
然后将参数向量传递给
fsolve
。>>> x = np.array([0.0, -0.75])
>>> fsolve(f,x)
array([ 0. , -0.71238898])