Python scipy.optimize.fsolve查找第一个交点

Python scipy.optimize.fsolve查找第一个交点,python,scipy,Python,Scipy,假设我有f(x):=x^2-10,它与g(x)=0相交两次。这是如下实现的 from scipy.optimize import fsolve import pylab import numpy def function_a(x): # f(x) return x**2-10 def function_b(x): # g(x) return 0 result = fsolve(lambda x: function_a(x)-function_b(x), 0) x = nu

假设我有
f(x):=x^2-10
,它与
g(x)=0相交两次。这是如下实现的

from scipy.optimize import fsolve
import pylab
import numpy

def function_a(x): # f(x)
    return x**2-10 

def function_b(x): # g(x)
    return 0

result = fsolve(lambda x: function_a(x)-function_b(x), 0)
x = numpy.linspace(-10,10,100)

pylab.plot(x , 
           [function_a(y) for y in x],
           x,
           [function_b(y) for y in x],
           result,
           function_a(result),
           'ro'
)
pylab.show()
scipy.optimize.fsolve
返回第二个交点。然而,我想随时知道第一个十字路口。我怎样才能做到这一点

第一个交叉点是指具有较低
x
值的交叉点。

(根据要求将我的评论作为答案发布。)

显然,这个函数和scipy优化中的其他函数只找到一个根,而不一定是所有根。如果您将猜测设置为
-1
,它将给出左根


也可以考虑<代码> Syrys如果你有明确定义的已知方程式,我相信它可以用来找到所有的根。< /P>请阅读。我们只能用我们实际看到的代码来帮助您。还有,你有没有读过?@KarlKnechtel我读过文档。但是找不到解决我问题的办法我已经编辑了我的问题以包含代码。谢谢你,嗯,我可以重现你的问题,并且已经研究了其他的根查找算法,没有一个适合这种类型的函数(brentq等),或者返回与此相同的结果。请注意,如果您将初始猜测更改为-1,它将捕获左根。也许它只是停在它找到的第一个根上。。。对你来说,象征性地做这件事是有趣的,还是你想用fsolve来得到其他多项式的所有根?@K.CI我想我对象征性地做这件事感兴趣是为了速度。我正在做一个模拟,这需要很多寻找交叉点。我的函数可以说是

f(x,参数)
。这些参数用于缩放f(x),并在模拟过程中发生变化。我想我可以将初始猜测设置为-1@K.CI你能把你的评论作为回答吗?它确实解决了我的问题。