首页 > 解决方案 > 在 Python 中查找两个函数的交集(Scipy,求根)

问题描述

所以我必须编写一个代码来找到两个高斯函数 G1 与变量 (x,0,1) 和 g2 (x,1,2) 之间的交集。我必须找到 x(-5,5) 内的所有交点如果我使用下面的代码采用更简单的公式,它可以工作,但像这样它会给我错误。我究竟做错了什么?谢谢

import numpy as np
from scipy.optimize import root
    
def g(x):
    return [(1/((2 * np.pi * 1**2)**0.5) * np.exp( - ( x[0] - 0 )**2 / ( 2 * 1**2))), 
            (1/((2 * np.pi * 2**2)**0.5) * np.exp( - ( x[0] - 1 )**2 / ( 2 * 2**2)))]
    
sol = root(g,[2],method='hybr')
    
sol.x

标签: pythonnumpyscipyroot

解决方案


我改变了这个并得到1.18了解决方案。

import numpy as np
from scipy.optimize import root

def g(x):
    return [(1/((2 * np.pi * 1**2)**0.5) * np.exp( - ( x[0] - 0 )**2 / ( 2 * 1**2)))- (1/((2 * np.pi * 2**2)**0.5) * np.exp( - ( x[0] - 1 )**2 / ( 2 * 2**2)))]

sol = root(g,[2.0],method='hybr')
sol.x

编辑:下面允许多个起点。

import numpy as np
from scipy.optimize import root
from scipy.optimize import fsolve

def g(x):
    return (1/((2 * np.pi * 1**2)**0.5) * np.exp( - ( x - 0 )**2 / ( 2 * 1**2)))- (1/((2 * np.pi * 2**2)**0.5) * np.exp( - ( x - 1 )**2 / ( 2 * 2**2)))

sol = root(g,[-2.0,2],method='hybr')
sol.x

推荐阅读