diff --git a/sage/hermite.sage b/sage/hermite.sage
new file mode 100644
index 0000000000000000000000000000000000000000..56b18ab3ad2bc6555bc2ec9d1fa3d15fdb4a81f7
--- /dev/null
+++ b/sage/hermite.sage
@@ -0,0 +1,85 @@
+xi = var('xi')
+u = var('u')
+theta = var('theta')
+assume(theta > 0)
+
+h0 = 1
+h1 = xi
+h2 = xi^2 - 1
+h3 = xi^3 - 3*xi
+h4 = xi^4 - 6*xi^2 + 3
+h5 = xi^5 - 10*xi^3 + 15*xi
+
+w = 1/sqrt(2*pi) * exp(-xi^2/2)
+
+print("Coefficients")
+n0 = integrate(w * h0, xi, -infinity, infinity)
+print(n0.canonicalize_radical())
+n1 = integrate(w * h1 * h1, xi, -infinity, infinity)
+print(n1.canonicalize_radical())
+n2 = integrate(w * h2 * h2, xi, -infinity, infinity)
+print(n2.canonicalize_radical())
+n3 = integrate(w * h3 * h3, xi, -infinity, infinity)
+print(n3.canonicalize_radical())
+n4 = integrate(w * h4 * h4, xi, -infinity, infinity)
+print(n4.canonicalize_radical())
+n5 = integrate(w * h5 * h5, xi, -infinity, infinity)
+print(n5.canonicalize_radical())
+
+
+bol = 1 / (sqrt(2 * pi * theta)) * exp(-(xi - u)^2/(2 * theta))
+res = integrate(bol, xi, -infinity, infinity)
+
+print("Moments of Boltzmann")
+mom0 = integrate(bol * 1, xi, -infinity, infinity)
+print(mom0.canonicalize_radical())
+mom1 = integrate(bol * h1, xi, -infinity, infinity)
+print(mom1.canonicalize_radical())
+mom2 = integrate(bol * h2, xi, -infinity, infinity)
+print(mom2.canonicalize_radical())
+mom3 = integrate(bol * h3, xi, -infinity, infinity)
+print(mom3.canonicalize_radical())
+mom4 = integrate(bol * h4, xi, -infinity, infinity)
+print(mom4.canonicalize_radical())
+mom5 = integrate(bol * h5, xi, -infinity, infinity)
+print(mom5.canonicalize_radical())
+
+print("Moments of Polynomial")
+feq = w * (mom0 + h1 * mom1/n1 + h2 * mom2/n2 + h3 * mom3/n3 + h4 * mom4/n4 + h5 * mom5/n5)
+p_mom0 = integrate(feq * 1, xi, -infinity, infinity)
+print(p_mom0.canonicalize_radical())
+p_mom1 = integrate(feq * h1, xi, -infinity, infinity)
+print(p_mom1.canonicalize_radical())
+p_mom2 = integrate(feq * h2, xi, -infinity, infinity)
+print(p_mom2.canonicalize_radical())
+p_mom3 = integrate(feq * h3, xi, -infinity, infinity)
+print(p_mom3.canonicalize_radical())
+p_mom4 = integrate(feq * h4, xi, -infinity, infinity)
+print(p_mom4.canonicalize_radical())
+p_mom5 = integrate(feq * h5, xi, -infinity, infinity)
+print(p_mom5.canonicalize_radical())
+
+w_m = var('w_m')
+w_0 = var('w_0')
+w_p = var('w_p')
+xi_m = var('xi_m')
+xi_0 = var('xi_0')
+xi_p = var('xi_p')
+wi = vector([-w_p, w_0, w_p])
+xi_i = vector([-xi_p, xi_0, xi_p])
+ 
+h0_i = 1
+h1_i = xi_i
+h2_i = vector([xi_i[i]^2 - 1 for i in range(len(xi_i))])
+h3_i = vector([xi_i[i]^3 - 3 * xi_i[i] for i in range(len(xi_i))])
+h4_i = vector([xi_i[i]^4 - 6 * xi_i[i]^2 + 3 for i in range(len(xi_i))])
+h5_i = vector([xi_i[i]^5 - 10 * xi_i[i]^3 + 15 * xi_i[i] for i in range(len(xi_i))])
+
+sum(wi) == n0
+wi.dot_product(h1_i) == n1
+wi.dot_product(h2_i) == n2
+wi.dot_product(h3_i) == n3
+wi.dot_product(h4_i) == n4
+wi.dot_product(h5_i) == n5
+
+