Na mecânica clássica, o problema de Kepler é um caso especial do problema de dois corpos, no qual os dois corpos interagem por uma força central que varia em intensidade com o inverso do quadrado da distância $\mathbf{r}$ entre eles. O problema consiste em encontrar a posição dos dois corpos ao longo do tempo, dadas suas massas, posições e velocidades.
Vamos considerar o caso em que a posição de uma das massas coincide com a do centro de massa (como no sistema sol+planeta). Por se tratar um problema de força central, o movimento é confinado em um plano. Isso nos permite descrevê-lo em coordenadas polares.
O potencial e a energia cinética são dados respectivamente por $$V(r) = -\frac{GMm}{r} \quad \text{e} \quad T = \frac{1}{2}m\left(\dot{r}^2+r^2\dot{\phi}^2\right).$$
%display latex
reset()
Variáveis dinâmicas
var('t m G M', domain='positive')
phi(t) = function('phi')(t)
r(t) = function('r')(t)
assume(r(t)>0)
assumptions()
Vetor posição
R = vector([r(t)*cos(phi(t)),r(t)*sin(phi(t))]);R
R.norm().simplify_trig().canonicalize_radical()
Potencial
V = -G*M*m/(r(t));V
Energia cinética
T = m/2*diff(R,t)*diff(R,t);T
T = T.simplify_trig();T
Lagrangiana
L = T-V;L
Equações de Euler-Lagrange $$ \displaystyle {\frac {\partial L}{\partial q_{i}}}(t,{\boldsymbol {q}}(t),{\dot {\boldsymbol {q}}}(t))-{\frac {\mathrm {d} }{\mathrm {d} t}}{\frac {\partial L}{\partial {\dot {q}}_{i}}}(t,{\boldsymbol {q}}(t),{\dot {\boldsymbol {q}}}(t))=0$$
Usaremos as quantidades conservadas no lugar das equações de Euler-Lagrange
Variáveis simbólicas para energia e momento angular
var('E', domain='real')
var('l', latex_name=r'\ell', domain='positive')
Energia conservada
eq_E = E == T+V;eq_E
def formal_derivative(f, x):
r"""
The formal derivative of `f` with respect to the symbolic function `x`.
"""
tempX = SR.symbol()
return f.subs({x: tempX}).diff(tempX).subs({tempX: x})
formal_derivative(L,phi)
Momento angular conservado
eq_phi = formal_derivative(L,diff(phi,t)) ==l;eq_phi
eq_phi1 = solve(eq_phi,diff(phi(t),t))[0];eq_phi1
Substituindo o momento angular na energia conservada
eq_E1 = eq_E.subs(eq_phi1);eq_E1
eq_r = solve(eq_E1,diff(r(t),t))[1];eq_r
Pela regra da cadeia, $$\frac{d\phi}{dr}=\frac{\frac{d\phi}{dt}}{\frac{dr}{dt}}$$
Usaremos a variável simbólica $\varphi$ no lugar da função $\phi$ e uma variável simbólica para a função $r(t)$.
vr = var('vr', latex_name='r', domain='positive')
vp = var('vp', latex_name=r'\varphi')
vr
phrt = integral((eq_phi1.rhs()/eq_r.rhs()).subs({r(t):vr}),vr, hold=True);phrt
Calculando a integral
assume(G^2*M^2*m^3+2*E*l^2>0)
phrt.unhold()
Solução em termos de $\varphi$
eq_vp = vp ==phrt.unhold();eq_vp
sol_vp = sin(eq_vp.lhs()) == sin(eq_vp.rhs());sol_vp
sol_vp = sol_vp.trig_simplify();sol_vp
Isolando o $r$
sol_r = solve(sol_vp,vr)[0];sol_r
Solução de livro texto em termos da excentricidade $\epsilon$ da órbita
ep = var('epsilon', domain='real');ep
eq_ep = ep == sqrt(1+2*l^2*E/(m*(G*m*M)^2));eq_ep
Para incluir a excentricidade na solução, isolamos $E$ na expressão da excentricidade
assume(ep>0)
sub_E = solve(eq_ep,E)[0]
forget(ep>0)
sub_E
e substituimos na solução
sol_r = sol_r.subs(sub_E).canonicalize_radical().factor();sol_r
Faremos $\varphi \to \varphi - \pi/2$ pra deixar com a cara mais usual nos livros texto.
sol_r = sol_r.subs(vp=vp-pi/2).expand_trig();sol_r
Deixando os dois lados sem dimensão
sol_r = sol_r*G*M*m^2/l^2;sol_r
Vejamos os gráficos das órbitas em coordenadas polares (polar=True)
orbita_0 = plot(sol_r.rhs().subs(ep==0),(vp,0,2*pi),polar=True,aspect_ratio=1, color='red', axes=False, frame=True, title=r'Órbita circular ($\epsilon=0$)')
orbita_0
centro = circle((0,0),.01, fill=True, color='black', axes=False)
centro+orbita_0
orbita_1 = plot(sol_r.rhs().subs(ep==1),(vp,-.07*pi,.07*pi), polar=True, color='red', axes=False, frame=True, title=r'Órbita parabólica ($\epsilon=1$)')
orbita_1
orbita_m = plot(sol_r.rhs().subs(ep==.8),(vp,-pi,pi),aspect_ratio=1, polar=True, color='red', axes=False, frame=True, title=r'Órbita elíptica ($\epsilon<1$)')
centro + orbita_m
orbita_M = plot(sol_r.rhs().subs(ep==2),(vp,-sqrt(2)/3,sqrt(2)/3), polar=True, color='red', axes=False, frame=True, title=r'Órbita hiperbólica ($\epsilon<1$)')
orbita_M
orbita_0+centro+orbita_m+orbita_M+orbita_1
A lei do deslocamento de Wien é a lei da física que relaciona o comprimento de onda do pico de emissão de radiação eletromagnética de corpo negro e sua temperatura: $$ {\displaystyle \lambda _{\text{max}}={\frac {b}{T}}} $$ onde
$\displaystyle \lambda _{\text{max}}$ é o comprimento de onda do pico de intensidade da radiação eletromagnética;
${\displaystyle T\,}$ é a temperatura absoluta do corpo negro;
${\displaystyle b\,}$ é a constante de proporcionalidade, chamada constante de dispersão de Wien.
Vamos calcular a constante $b$ usando a lei de Planck para a radiação de um corpo negro $$ {\displaystyle u(\lambda ,T)={2hc^{2} \over \lambda ^{5}}{1 \over e^{hc/\lambda kT}-1}.} $$
Constantes | Unidade | |
---|---|---|
${\displaystyle h}$ | constante de Planck | J$\cdot$s |
${\displaystyle c}$ | velocidade da luz no vácuo | m$\cdot$s$^{-1}$ |
${\displaystyle e}$ | número de Euler | sem dimensão |
${\displaystyle k}$ | constante de Boltzmann | J$\cdot$K$^{-1}$ |
var('h c k', domain='positive')
la = var('la', latex_name = r'\lambda', domain='positive')
lam = var('lam', latex_name = r'\lambda_{\text{max}}', domain='positive')
u(la ,T) = 2*h*c^2/(la^5)*1/(e^(h*c/(k*la*T))-1)
u(la,T)
u0 = diff(u(lam,T),lam)==0;u0
solve(u0,lam)
u1 = (u0*lam^6).expand();u1
eqx = x == c*h/(lam*T*k);eqx
eql = solve(eqx,lam)[0];eql
u2 = u1.subs(eql);u2
eqx2 = solve(u2,x)[0];eqx2
Encontre uma solução numérica para a equação $$x = 5 \, {\left(e^{x} - 1\right)} e^{\left(-x\right)}$$
** find_root(equação, min, max)
plot(eqx2,x,(x,0,10))
eqx3 = x == find_root(eqx2,4,6);eqx3
eql2 = (eql*T).subs(eqx3);eql2
from scipy.constants import c as nc
from scipy.constants import h as nh
from scipy.constants import k as nk
constantes = {c:nc, k:nk, h:nh}
constantes
eql2.subs(constantes)
Logo, $$b \approx 2,89777\, \text{mm}\cdot\text{K}$$
u(500/(10^9),4500).subs(constantes)
plot(u(la/(10^9),4500).subs(constantes),0,3000, frame=True, axes=False)
plot(u(la/(10^9),4500).subs(constantes),0,3000, color=colors.darkgreen,axes=False, frame=True, gridlines=True, axes_labels=[r'$\lambda\, (nm)$',r'$u(\lambda)$'], legend_label='$T=4500$')
lista_u = [u(la/(10^9),k).subs(constantes) for k in [3500, 4000, 4500, 5000, 5500]]
lista_u
plot(lista_u,0,3000, axes=False, frame=True, gridlines=True, axes_labels=[r'$\lambda\, (nm)$',r'$u(\lambda)$'])