繁体   English   中英

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

[英]Python scipy.optimize.fsolve find the first intersection

假设我有f(x):= x^2-10g(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值较低的交叉点。

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

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

另外,如果你有明确定义的已知方程,也许可以考虑sympy ,因为我相信它可以用来找到所有的根源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM