from IPython.display import Image
Image("data/moduli.png")
We can use sympy
to help!
import sympy
sympy.__version__
'1.0'
sympy.init_printing(use_latex='mathjax')
We must define our symbols. We'll use alpha
and beta
for Vp and Vs.
alpha, beta, gamma = sympy.symbols("alpha, beta, gamma")
lamda, mu, E, K, M, rho = sympy.symbols("lamda, mu, E, K, M, rho")
nu = sympy.symbols("nu")
from sympy import sqrt
alpha_expr = sqrt((mu * (E - 4*mu)) / (rho * (E - 3*mu)))
alpha_expr
print(sympy.latex(alpha_expr))
\sqrt{\frac{\mu \left(E - 4 \mu\right)}{\rho \left(E - 3 \mu\right)}}
mu_expr = (3 * K * E) / (9 * K - E)
subs = alpha_expr.subs(mu, mu_expr)
subs
print(sympy.latex(subs))
\sqrt{3} \sqrt{\frac{E K \left(- \frac{12 E K}{- E + 9 K} + E\right)}{\rho \left(- E + 9 K\right) \left(- \frac{9 E K}{- E + 9 K} + E\right)}}
from sympy import simplify
simplify(subs)
print(sympy.latex(simplify(subs)))
\sqrt{3} \sqrt{\frac{K \left(E + 3 K\right)}{\rho \left(- E + 9 K\right)}}
beta_expr = sqrt(mu/rho)
simplify(beta_expr.subs(mu, mu_expr))
simpl = simplify(beta_expr.subs(mu, mu_expr))
print(sympy.latex(simpl))
\sqrt{3} \sqrt{- \frac{E K}{\rho \left(E - 9 K\right)}}
gamma_expr = sqrt((K + (4*mu/3)) / mu)
simpl = simplify(gamma_expr.subs(mu, mu_expr))
simpl
print(sympy.latex(simpl))
\sqrt{\frac{1}{E} \left(E + 3 K\right)}
Not totally sure why I have to use that hacky way to get the terms to cnacel properly.
gamma_emu_expr = alpha_expr / beta_expr
simpl = sqrt(gamma_emu_expr**2)
simpl
print(sympy.latex(simpl))
\sqrt{\frac{E - 4 \mu}{E - 3 \mu}}
e_expr = 2 * mu * (1 + nu)
simplify(sqrt(gamma_emu_expr.subs(E, e_expr)**2))
print(sympy.latex(simplify(sqrt(gamma_emu_expr.subs(E, e_expr)**2))))
\sqrt{2} \sqrt{\frac{\nu - 1}{2 \nu - 1}}
vp_expr = sympy.Eq(alpha, sqrt(mu*(E - 4*mu) / (rho*(E - 3*mu))))
vp_expr
alpha_expr = sqrt(mu*(E - 4*mu) / (rho*(E - 3*mu)))
mu_expr = (rho * alpha**2 - lamda)/2
new_expr = simplify(vp_expr.subs(mu, mu_expr))
new_expr.subs(alpha, alpha_expr)
OK, I give up. Trying Wolfram Alpha...
vp_wolfram = simplify(sqrt(-lamda/rho+sqrt(9*lamda**2+E**2+2*lamda*E)/rho+E/rho)/sqrt(2))**2
sqrt(vp_wolfram)
That's better!
print(sympy.latex(sqrt(vp_wolfram)))
\frac{\sqrt{2}}{2} \sqrt{\frac{1}{\rho} \left(E - \lambda + \sqrt{E^{2} + 2 E \lambda + 9 \lambda^{2}}\right)}
Another for Wolfram Alpha: Vs
solve V = sqrt((a/(2*((y-2 r V^2)/(2 r V^2))*r)) - (a/r)) for V
simplify(sqrt(sqrt(9*lamda**2+2*lamda*E+E**2)/rho-(3*lamda)/rho+E/rho)/2)**2
Another for Wolfram Alpha: Gamma, or Vp/Vs
solve G = sqrt(((4/3)*a - 2*((y*G^2 - y)/3))/(a - ((y*G^2 - y)/3))) for G
simplify(sqrt(sqrt(9*lamda**2+2*lamda*E+E**2)/E+(3*lamda)/E+3)/sqrt(2))**2
mu_expr = 3*K*(1 - 2*nu)/(2 + 2*nu)
simpl = simplify((sqrt(mu/rho)).subs(mu,mu_expr)**2)
simpl
print(sympy.latex(simpl))
- \frac{3 K \left(2 \nu - 1\right)}{2 \rho \left(\nu + 1\right)}
vp_expr = sqrt(lamda * (1 - nu) / (rho * nu))
l_expr = 3 * K * nu / (1 + nu)
vp_expr.subs(lamda, l_expr)