我只是试图绘制两个gaussians并找到交点。我有以下代码。这不是绘制确切的十字路口,我真的不知道为什么。这就像刚刚稍微偏离了一点,但如果我们把减去的gaussians的日志记录下来,并且看起来应该是正确的,那么我通过派生的解决方案工作。谁能帮忙?非常感谢!高斯之间的交点
import numpy as np
import matplotlib.pyplot as plt
def plot_normal(x, mean = 0, sigma = 1):
return 1.0/(2*np.pi*sigma**2) * np.exp(-((x-mean)**2)/(2*sigma**2))
# found online
def solve_gasussians(m1, s1, m2, s2):
a = 1.0/(2.0*s1**2) - 1.0/(2.0*s2**2)
b = m2/(s2**2) - m1/(s1**2)
c = m1**2 /(2*s1**2) - m2**2/(2.0*s2**2) - np.log(s2/s1)
return np.roots([a,b,c])
s1 = np.linspace(0, 10,300)
s2 = np.linspace(0, 14, 300)
solved_val = solve_gasussians(5.0, 0.5, 7.0, 1.0)
print solved_val
solved_val = solved_val[0]
plt.figure('Baseline Distributions')
plt.title('Baseline Distributions')
plt.xlabel('Response Rate')
plt.ylabel('Probability')
plt.plot(s1, plot_normal(s1, 5.0, 0.5),'r', label='s1')
plt.plot(s2, plot_normal(s2, 7.0, 1.0),'b', label='s2')
plt.plot(solved_val, plot_normal(solved_val, 7.0, 1.0), 'mo')
plt.legend()
plt.show()
你能带我们去你找到了解决办法在网上让大家不必为我们自己去尝试呢? –
我认为他们提到的解决方案可能是[SO问题](http://stackoverflow.com/a/22579904/752843)。所以我们不能完全责怪他们在代码中缺乏评论。 – Richard
@Richard,这也是我的想法。 –