In [10]:
import numpy as np
import math
import matplotlib.mlab as mlab

#plotting
from matplotlib import pyplot as plt
import seaborn as sns
from IPython.core.debugger import Tracer
import warnings
from jupyterthemes import jtplot
%matplotlib inline
jtplot.style()
sns.set_context("poster")
# plt.style.use('fivethirtyeight')
warnings.filterwarnings("ignore")

In [37]:
def gaussian(X, mu, sigma):
    def f(x):
        return 1/math.sqrt(2*math.pi * sigma**2) * math.exp(-.5*(x - mu)**2/sigma**2)
    
    return [f(x) for x in X]

In [11]:
def mu_prime(sigma2, r2, mu, v):
    return 1/(sigma2 + r2) * (r2*mu + sigma2*v)
    
def sigma_prime(sigma2, r2):
    return 1/(1/sigma2 + 1/r2)

def update(mean1, var1, mean2, var2):
    new_mean = mu_prime(var1, var2, mean1, mean2)
    new_var = sigma_prime(var1, var2)
    return [new_mean, new_var]

In [38]:
def plot_gaussian(mu, variance, std_dev=3, steps=1000):
    sigma = math.sqrt(variance)
    X = np.linspace(mu-std_dev*variance,mu+std_dev*variance, steps)
    plt.plot(X, gaussian(X, mu, sigma))

In [39]:
plot_gaussian(10,1)



In [ ]: