Saltar al contenido

Python: encontrar el punto de intersección de dos curvas gaussianas

No olvides que en la informática un error suele tener varias soluciones, por lo tanto nosotros aquí mostraremos la mejor y más eficiente.

Desea encontrar las x tales que ambas funciones gaussianas tengan la misma altura (es decir, se intersecan)

Puede hacerlo igualando dos funciones gaussianas y despejando x. Al final obtendrá una ecuación cuadrática con coeficientes relacionados con las medias y varianzas gaussianas. Aquí esta el resultado final:

import numpy as np

def solve(m1,m2,std1,std2):
  a = 1/(2*std1**2) - 1/(2*std2**2)
  b = m2/(std2**2) - m1/(std1**2)
  c = m1**2 /(2*std1**2) - m2**2 / (2*std2**2) - np.log(std2/std1)
  return np.roots([a,b,c])

m1 = 2.5
std1 = 1.0
m2 = 5.0
std2 = 1.0

result = solve(m1,m2,std1,std2)

La salida es:

array([ 3.75])

Puede trazar las intersecciones encontradas:

x = np.linspace(-5,9,10000)
plot1=plt.plot(x,mlab.normpdf(x,m1,std1))
plot2=plt.plot(x,mlab.normpdf(x,m2,std2))
plot3=plt.plot(result,mlab.normpdf(result,m1,std1),'o')

La trama será:
ingrese la descripción de la imagen aquí

Si sus gaussianas tienen múltiples intersecciones, el código también las encontrará todas (por ejemplo, m1=2.5, std1=3.0, m2=5.0, std2=1.0):
ingrese la descripción de la imagen aquí

Si te ha sido de provecho nuestro artículo, te agradeceríamos que lo compartas con más programadores y nos ayudes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *