%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
save = False
mean_p, vari_p= 0, 2.5
mean_q, vari_q= 3, 2
P = lambda x: (np.e**-(((x-mean_p)**2)/(2*vari_p)))/(2*np.pi*vari_p)**0.5
Q = lambda x: (np.e**-(((x-mean_q)**2)/(2*vari_q)))/(2*np.pi*vari_q)**0.5
x_min, x_max = -6, 7.5
x = np.arange(x_min,x_max,0.1)
plt.plot(x,P(x),label="P(x)")
plt.plot(x,Q(x),label="Q(x)")
plt.legend()
plt.xlim(x_min,x_max)
plt.xlabel("x",fontsize=15)
plt.ylabel("probability",fontsize=15)
if save: plt.savefig("prob")
I = lambda p: -np.log(p)
# x_min, x_max = -4, 6.5
x = np.arange(x_min,x_max,0.1)
plt.plot(x,I(P(x)),label="I_p(x)")
plt.plot(x,I(Q(x)),label="I_q(x)")
plt.legend()
plt.xlim(x_min,x_max)
plt.xlabel("x",fontsize=15)
plt.ylabel("Information",fontsize=15)
if save: plt.savefig("info")
# x_min, x_max = -4, 6.5
x = np.arange(x_min,x_max,0.1)
plt.plot(x,I(Q(x))-I(P(x)))
plt.xlim(x_min,x_max)
plt.xlabel("x",fontsize=15)
plt.ylabel("difference",fontsize=15)
if save: plt.savefig("diff")
# x_min, x_max = -4, 6.5
x = np.arange(x_min,x_max,0.1)
plt.plot(x,P(x)*(I(Q(x))-I(P(x))),label="WD")
plt.plot(x,P(x),label="P(x)")
plt.plot(x,Q(x),label="Q(x)")
plt.legend()
plt.xlim(x_min,x_max)
plt.xlabel("x",fontsize=15)
plt.ylabel("probability",fontsize=15)
if save: plt.savefig("wd_p")
# x_min, x_max = -4, 6.5
x = np.arange(x_min,x_max,0.1)
plt.plot(x,Q(x)*(I(P(x))-I(Q(x))),label="WD")
plt.plot(x,P(x),label="P(x)")
plt.plot(x,Q(x),label="Q(x)")
plt.legend()
plt.xlim(x_min,x_max)
plt.xlabel("x",fontsize=15)
plt.ylabel("probability",fontsize=15)
if save: plt.savefig("wd_q")
x = np.arange(x_min,x_max,0.1)
plt.plot(x,(P(x)+Q(x))/2)
plt.xlim(x_min,x_max)
plt.xlabel("x",fontsize=15)
plt.ylabel("probability",fontsize=15)
plt.title("Mean")
if save: plt.savefig("mean")