In [1]:
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact
%matplotlib inline
plt.style.use('classic')

In [2]:
Q = 1
a = 1
b = 2
r = np.linspace(0,3*b,1000)

def rhoi(a,b):
    return 3*Q/(4*np.pi)/(b**3-a**3)

def rho(r,a,b):
    return 0*(r<=a) + rhoi(a,b)*(r>a)*(r<b) + 0*(r>=b)

def Emax(b):
    return Q/(4*np.pi*b**2)

def E(r,a,b):
    return 0*(r<=a) + (Q*(r**3-a**3)/(4*np.pi*r**2*(b**3-a**3)))*(r>a)*(r<b) + (Q/(4*np.pi*r**2))*(r>=b)

def phi(r,a,b):
    phi1 = 3*(b**2-a**2)/(2*(b**3-a**3))
    phi2 = (-(2*a**3+r**3)/(2*r*(b**3-a**3)))+3*b**2/(2*(b**3-a**3))
    return phi1*(r<=a) + phi2*(r>a)*(r<b) + (1/r)*(r>=b)

In [3]:
def grho(a=1,b=2):
    plt.plot(r,rho(r,a,b), linewidth=2)
    plt.xlabel('$r$', fontsize=15)
    plt.title('Densidad $\\rho(r)$', fontsize=15)
    plt.xticks([0,a,b],['$0$','$a$', '$b$'], fontsize=15)
    plt.yticks([0,rhoi(a,b)],['$0$','$\\frac{Q}{4\\pi\\varepsilon_0}\\frac{3}{(b^3-a^3)}$'], fontsize=15)
    plt.ylim(-0.2*rhoi(a,b),1.2*rhoi(a,b))
    plt.grid(True)
    plt.tight_layout()
    #plt.savefig('fig-esfera-hueca-densidad.pdf')

In [4]:
def gE(a=1,b=2):
    plt.plot(r,E(r,a,b), linewidth=2)
    plt.xlabel('$r$', fontsize=15)
    plt.title('Campo eléctrico $E(r)$', fontsize=15)
    plt.xticks([0,a,b],['$0$','$a$', '$b$'], fontsize=15)
    plt.yticks([0,Emax(b)],['$0$','$\\frac{Q}{4\\pi\\varepsilon_0 b^2}$'], fontsize=15)
    plt.ylim(-0.2*Emax(b),1.2*Emax(b))
    plt.grid(True)
    plt.tight_layout()
    #plt.savefig('fig-esfera-hueca-campo.pdf')

In [5]:
def gphi(a=1,b=2):
    plt.plot(r,phi(r,a,b), linewidth=2)
    plt.xlabel('$r$', fontsize=15)
    plt.title('Potencial $\\phi(r)$', fontsize=15)
    plt.xticks([0,a,b,2*b],['$0$','$a$', '$b$'], fontsize=15)
    plt.yticks([0,phi(a/2,a,b)],['$0$','$\\frac{Q}{4\\pi\\varepsilon_0}\\frac{3(b^2-a^2)}{2(b^3-a^3)}$'], fontsize=15)
    plt.ylim(-0.2*phi(a/2,a,b),1.2*phi(a/2,a,b))
    plt.grid(True)
    plt.tight_layout()
    #plt.savefig('fig-esfera-hueca-potencial.pdf')

In [6]:
grho()



In [7]:
gE()


/home/gr/miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py:16: RuntimeWarning: divide by zero encountered in true_divide
  app.launch_new_instance()
/home/gr/miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py:16: RuntimeWarning: invalid value encountered in multiply
  app.launch_new_instance()

In [8]:
gphi()


/home/gr/miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py:20: RuntimeWarning: divide by zero encountered in true_divide
/home/gr/miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py:21: RuntimeWarning: invalid value encountered in multiply
/home/gr/miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py:21: RuntimeWarning: divide by zero encountered in true_divide

In [ ]:
interact(grho, a=(0,5,0.1), b=(0,5,0.1))

In [ ]:
interact(gE, a=(0,5,0.1), b=(0,5,0.1))

In [ ]:
interact(gphi, a=(0,5,0.1), b=(0,5,0.1))