"Sage é um software matemático gratuito e open-source, desenvolvido sob a licença GPL por uma comunidade de programadores e matemáticos, que busca ser uma alternativa para os principais sistemas proprietários de software matemático como o Magma, Maple, Mathematica e Matlab. Ele engloba e se utiliza de pacotes pré-existentes como Maxima, GAP, Pari/GP, softwares de renderização de imagens e outros, integrando-os em uma interface única, amigável e de fácil assimilação."
Neste blog divulgarei o meu progresso de aprendizagem no Sage e tentarei aplicá-lo, na medida do possível, na minha principal área de interesse, que é a Física.
Conheça mais sobre o software em: http://www.sagemath.org/

sábado, 22 de dezembro de 2012

Aplicação à Física - 01 (Sistema massa-mola com duas massas acopladas)

Vamos utilizar o Sage para resolução de um problema de Física. Considerando um sistema de duas massas acopladas por molas de constantes elásticas diferentes, como representado abaixo:
 onde obtemos as equações para as forças atuando nas massas $m_1$ e $m_2$, respectivamente:

$F_1=-k_1x_1+k_2(x_2-x_1)$
$F_2=-k_2(x_2-x_1)$

assim, usando a segunda lei de Newton (para massa constante) $F=mx''$, chegamos as equações:

$m_1x_1''+(k_1+k_2)x_1-k_2x_2=0 \quad (1)$
$m_2x_2''+k_2x_2-k_2x_1=0 \quad (2)$

Agora, escrevemos a Eq. (1) no Sage:

sage: var('m1,x1,k1,m2,x2,k2')                         
(m1, x1, k1, m2, x2, k2)
sage: eq1=maxima("m1*diff(x1(t),t,2)+(k1+k2)*x1(t)-k2*x2(t)")

onde maxima( ) diz ao Sage para usar a interface do Maxima para cálculos algébricos.

Calculando a transformada de Laplace:

sage: leq1=eq1.laplace("t","s");leq1                
m1*(-?%at('diff(x1(t),t,1),t=0)+s^2*'laplace(x1(t),t,s)-x1(0)*s)-k2*'laplace(x2(t),t,s)+(k2+k1)*'laplace(x1(t),t,s)

Isso quer dizer que encontramos:

$${\it m_1}\,\left(-\left.{{{\it \partial}}\over{{\it \partial}\,t}}  \,{\it x_1}\left(t\right)\right|_{t=0}+s^2\,\mathcal{L}\left(  {\it x_1}\left(t\right) , t , s\right)-{\it x_1}\left(0\right)\,s  \right)-{\it k_2}\,\mathcal{L}\left({\it x_2}\left(t\right) , t , s  \right)+\left({\it k_2}+{\it k_1}\right)\times\,\times\mathcal{L}\left({\it x_1}  \left(t\right) , t , s\right) \quad (3)$$

Para equação (2), temos:

sage: eq2=maxima("m2*diff(x2(t),t,2)+k2*(x2(t)-x1(t))")  
sage: leq2=eq2.laplace("t","s");leq2
m2*(-?%at('diff(x2(t),t,1),t=0)+s^2*'laplace(x2(t),t,s)-x2(0)*s)+k2*('laplace(x2(t),t,s)-'laplace(x1(t),t,s))

ou seja:

$$ {\it m_2}\,\left(-\left.{{{\it \partial}}\over{{\it \partial}\,t}}  \,{\it x_2}\left(t\right)\right|_{t=0}+s^2\,\mathcal{L}\left(  {\it x_2}\left(t\right) , t , s\right)-{\it x_2}\left(0\right)\,s  \right)+{\it k_2}\,\left(\mathcal{L}\left({\it x_2}\left(t\right) ,   t , s\right)-\mathcal{L}\left({\it x_1}\left(t\right) , t , s\right)  \right) \quad (4)$$

Agora, considerando os seguintes valores: $m_1=2$, $m_2=1$, $k_1=4$, $k_2=2$ nas equações (3) e (4) para as massas e constantes elásticas, respectivamente:

$$-2x_1'(0)+2s^2\mathcal{L}_1(s)-2sx_1(0)-2\mathcal{L}_2(s)+6\mathcal{L}_1(s) \quad (5)$$
$$-x_2'(0)+s^2\mathcal{L}_2(s)-sx_2(0)+2\mathcal{L}_2(s)-2\mathcal{L}_1(s) \quad (6)$$

e as condições iniciais $x_1(0)=3$, $x_1'(0)=0$, $x_2(0)=3$, $x_2'(0)=0$, obtemos:

$$2s^2\mathcal{L}_1(s)-6s-2\mathcal{L}_2(s)+6\mathcal{L}_1(s) \quad (7)$$
$$s^2\mathcal{L}_2(s)-3s+2\mathcal{L}_2(s)-2\mathcal{L}_1(s) \quad (8)$$

Vamos definir no Sage o sistema de equações com (7) e (8), e usar a função solve() para resolvê-lo:


sage: var('s L1 L2')
(s, L1, L2)
sage: eqs = [(2*s^2+6)*L1-2*L2 == 6*s, (s^2+2)*L2 - 2*L1 == 3*s]
sage: solve(eqs,L1,L2)
[[L1 == 3*(s^3 + 3*s)/(s^4 + 5*s^2 + 4), L2 == 3*(s^3 + 5*s)/(s^4 + 5*s^2 + 4)]]


Por fim, tomamos a transformada de Laplace inversa utilizando a função inverse_laplace() para obter a resposta:


sage: var('s t')
(s, t)
sage: inverse_laplace(3*(s^3 + 3*s)/(s^4 + 5*s^2 + 4),s,t)
cos(2*t) + 2*cos(t)
sage: inverse_laplace(3*(s^3 + 5*s)/(s^4 + 5*s^2 + 4),s,t)
-cos(2*t) + 4*cos(t)


Assim, a solução é:

$$x_1=\cos(2t)+2\cos(t), \quad x_2=-\cos(2t)+4\cos(t).$$

É possível obter um gráfico do comportamento das soluções passando os seguintes comandos para o Sage:


sage: p1 = plot(cos(2*t) + 2*cos(t), (t,0, 2*pi), rgbcolor=hue(0.3), legend_label='\$x_1(t)\$', axes_labels=['\$t\$','\$x\$'])
sage: p2 = plot(4*cos(t) - cos(2*t), (t,0, 2*pi), rgbcolor=hue(0.6), legend_label='\$x_2(t)\$', axes_labels=['\$t\$','\$x\$'])
sage: show(p1 + p2)




futuramente explicarei os parâmetros utilizados na função plot().

Referências

[1] Sage Tutorial v5.7 - Solving Differencial Equations. 
[2] Spiegel, Murray R. Transformadas de Laplace. Coleção Schaum. São Paulo: Mc Graw Hill, 1979.
[3] Lima, Paulo Cupertino de. Equações Diferenciais A. (notas de aula). Departamento de Matemática - UFMG.
[4] Nussenzveig, H. M. Curso de Fisica Basica 2 - Fluidos, Oscilacões e Ondas, Calor. 4ª Ed. EDGARD BLUCHER, 2002.

Nenhum comentário:

Postar um comentário