Anterior
Índice
Seguinte

Equações Diferenciais - Soluções Simbólicas


Cálculo de Soluções com a Transformaçào de Laplace

A transformação de Laplace é uma poderosa ferramenta para resolver uma vasta classe de equações diferenciais ordinárias. O princípio é simples:

A teoria matemática da transformação de Laplace não é fácil, mas para propósitos práticos é muitas vezes suficiente simplesmente aplicar a transformação.
Murray R. Spiegel escreveu um bom tutorial sobre Transformação de Lapalce, foi publicado pela McGraw-Hill sob o títuloTheory and Problems of Laplace Transforms.

Transformação de Laplace e a Inversa da Transformação de Laplace

A transformação de Laplace associa uma função trascendente sobre uma expressão racional em uma nova variável:

laplace(exp(-b*t)*cos(w*t),t,s);
        s + b
--------------------
2 2 2
w + s + 2 b s + b
assume(w > 0);
[w > 0]

Sem o comando assume, Maxima iria perguntar mais tarde se w é ou não nulo.

A inversa da transformação de Laplace associa uma expressão racional sobre uma função transcendental:

ilt(%, s, t);
  - b t
%e cos(t w)

O conhecimento dessas funções é sempre suficiente para resolver uma equação diferencial ordinária:

Solução de uma EDO:

ode: 'diff(y(t), t, 2) + 5*'diff(y(t), t) + 4*y(t) = t;

É importante que você

 2
d d
--- (y(t)) + 5 (-- (y(t))) + 4 y(t) = t
2 dt
dt

A seguir, especificamos as condições iniciais. Fazemos isso com a função atvalue:

atvalue(y(t), t=0, 0);
 0
atvalue('diff(y(t), t), t= 0, 0);
 0

Agora podemos calcular a trasformada de Laplace da euqação:

lap_ode:laplace(ode,t,s);
 2                                                                          1
s laplace(y(t), t, s) + 5 s laplace(y(t), t, s) + 4 laplace(y(t), t, s) = --
2
s

Isso é uma equação linear na desconhecida laplace(y(t), t, s). Resolvemos isso com solve:

 sol: solve(%, 'laplace(y(t), t, s));

Note que você tem que escrever a desconhecida com um apóstrofo. Sem o apóstrofo, Maxima tentará avaliar a expressão laplace(y(t), t, s).

				1
[laplace(y(t), t, s) = ----------------]
4 3 2
s + 5 s + 4 s

A resposta é uma lista com uma equação, A solução da equação linear.

Agora, podemos aplicar a transformação inversa de Laplace. Para aplicr uma transformação aos elementos de uma lista, temos que usar map:

 map( lambda( [eq], ilt(eq, s, t)), sol);
		- t     - 4 t
%e %e t 5
[y(t) = ----- - ------- + - - --]
3 48 4 16

Isso é novamente uma lista de uma equação. Note que a inversa da transformação de Laplace foi aplicada a ambos os lados da equação:

Isso é certamente possível resolver essa equaao diferencial ordinária com o comando ode2: Solution of the example with ode2


Exemplo:

Um sistema de EDO's

O seguinte exemplo foi tomado do livro de Spiegel. é um sistema de duas equações diferenciais ordinárias

Primeiro definimos as equações:

assume(s>0);
	  [s > 0]
diff_eq1: 'diff(f(x),x,2) + 'diff(g(x),x) + 3*f(x) = 15*exp(-x);
					     2
d d - x
-- (g(x)) + --- (f(x)) + 3 f(x) = 15 %e
dx 2
dx
diff_eq2: 'diff(g(x), x, 2) - 4*'diff(f(x), x) + 3*g(x) = 15*sin(2*x);
			      2
d d
--- (g(x)) - 4 (-- (f(x))) + 3 g(x) = 15 sin(2 x)
2 dx
dx

A seguir, definimos os valore iniciais. Para esse exemplo, temos valores iniciais para ambas as funções e suas derivadas  no ponto x = 0.

atvalue (f(x), x=0, 35);
	    35
atvalue ('diff(f(x),x),x=0, -48);
	   - 48
atvalue (g(x), x=0, 27);
	    27
atvalue ('diff(g(x), x), x=0, -55);
	   - 55

Agora podemos calcular as trasformações de Laplace:

lap_eq1:laplace(diff_eq1,x,s);
				 2							      15
s laplace(g(x), x, s) + s laplace(f(x), x, s) + 3 laplace(f(x), x, s) - 35 s + 21 = -----
s + 1
lap_eq2:laplace(diff_eq2,x,s);
       2											      30
s laplace(g(x), x, s) + 3 laplace(g(x), x, s) - 4 (s laplace(f(x), x, s) - 35) - 27 s + 55 = ------
2
s + 4

essas são duas equações lineares  nas desconhecidas laplace(f(x),x, s) e laplace(g(x), x, s). Resolvemos isso com solve:

linsolve([lap_eq1,lap_eq2],['laplace(f(x),x,s),'laplace(g(x),x,s)]);
				  6	  5	   4	    3	      2
35 s - 13 s + 407 s + 185 s + 1020 s + 918 s - 72
[laplace(f(x), x, s) = ------------------------------------------------------,
7 6 5 4 3 2
s + s + 14 s + 14 s + 49 s + 49 s + 36 s + 36

6 5 4 3 2
27 s - 28 s + 50 s - 610 s - 787 s - 2022 s - 2250
laplace(g(x), x, s) = -------------------------------------------------------]
7 6 5 4 3 2
s + s + 14 s + 14 s + 49 s + 49 s + 36 s + 36

Os denominadores das soluções são polinômios em s de grau 7. O cálculo da inversa da transformação de Laplace requer que os denominadores sejam decompostos em fatores lineares e quadráticos. A função ilt não fatora sempre denominadores, então fazemos isso:

factored: map(lambda( [eq], factor(eq)), %);
				  6	  5	   4	    3	      2
35 s - 13 s + 407 s + 185 s + 1020 s + 918 s - 72
[laplace(f(x), x, s) = ------------------------------------------------------,
2 2 2
(s + 1) (s + 1) (s + 4) (s + 9)

6 5 4 3 2
27 s - 28 s + 50 s - 610 s - 787 s - 2022 s - 2250
laplace(g(x), x, s) = -------------------------------------------------------]
2 2 2
(s + 1) (s + 1) (s + 4) (s + 9)

Agora podemos aplicar a inversa da transformação de Laplace a ambas as equações:

sol: map(lambda( [eq], ilt(eq, s, x)), factored);

Obtemos uma solução para o sistema dado de equações diferenciais ordinárias:

							    - x
[f(x) = - 15 sin(3 x) + 2 cos(2 x) + 30 cos(x) + 3 %e ,

- x
g(x) = 30 cos(3 x) + sin(2 x) - 60 sin(x) - 3 %e ]

Em princípio nós concluímos, mas existe uma interessante informação técnica: como podemos demonstrar que  a solução satisfaz o sistema de equações dados?

A demonstração requer quatro passos adicionais.

Primeiro, escrevemos as duas equações diferenciais como um sistema:

ode_system: [diff_eq1, diff_eq2];
		     2
d d - x
[-- (g(x)) + --- (f(x)) + 3 f(x) = 15 %e ,
dx 2
dx

2
d d
--- (g(x)) - 4 (-- (f(x))) + 3 g(x) = 15 sin(2 x)]
2 dx
dx

A seguir substituimos a solução naquele sistema:

ode_system, sol;
	 2
d - x
[--- (- 15 sin(3 x) + 2 cos(2 x) + 30 cos(x) + 3 %e )
2
dx

d - x
+ -- (30 cos(3 x) + sin(2 x) - 60 sin(x) - 3 %e )
dx

- x - x
+ 3 (- 15 sin(3 x) + 2 cos(2 x) + 30 cos(x) + 3 %e ) = 15 %e ,

d - x
- 4 (-- (- 15 sin(3 x) + 2 cos(2 x) + 30 cos(x) + 3 %e ))
dx

2
d - x
+ --- (30 cos(3 x) + sin(2 x) - 60 sin(x) - 3 %e )
2
dx

- x
+ 3 (30 cos(3 x) + sin(2 x) - 60 sin(x) - 3 %e ) = 15 sin(2 x)]

Obtemos uma lista de duas equações que possuem derivadas simbólicas. Para forçar o cálculo das derivadas, temos que avaliar as equações:

map (lambda( [eq], ev(eq, diff)), %);
                                                                - x
[45 sin(3 x) + 3 (- 15 sin(3 x) + 2 cos(2 x) + 30 cos(x) + 3 %e )

- x - x
- 6 cos(2 x) - 90 cos(x) + 6 %e = 15 %e ,

- x
3 (30 cos(3 x) + sin(2 x) - 60 sin(x) - 3 %e ) - 270 cos(3 x)

- x
- 4 (- 45 cos(3 x) - 4 sin(2 x) - 30 sin(x) - 3 %e ) - 4 sin(2 x)

- x
+ 60 sin(x) - 3 %e = 15 sin(2 x)]

Isso parece melhor, mas simpplificação é obviamente necessária:

trigsimp(%);
        - x        - x
[15 %e = 15 %e , 15 sin(2 x) = 15 sin(2 x)]

Essas duas identidades completam a demonstração.

A próxima seção mostra que as equações desse exemplo podem ser resolvidas com desolve.



Anterior
Índice
Seguinte