|
|
|
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.
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:
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
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.
|
|
|