Equação de onda unidimensional e condições de contorno

Davi C. Rodrigues

versão de 26/09/2019 -- originalmente usado para física matemática I.

Equação de onda resolvida por separação de variáveis

Uma EDP é dita ser separável se for possível decompô-la em EDO’s por meio de separação de variáveis. Em alguns casos de interesse, a separação de variáveis pode apenas ser aplicada de forma parcial. Veremos a seguir casos de EDP’s que são (completamente) separáveis.

Equação de onda em três dimensões: apresentação.

(∇^2)ϕ (x,t) - (1/(v^2))(Overscript[ϕ, ..])(x,t) =0

Note que a constante real v precisa ter dimensão de velocidade.

Note ainda que esta equação é invariante por inversão temporal e por inversão espacial. Ademais, o sinal relativo é muito importante, pois caso fosse o contrário, não seria possível encontrar soluções oscilatórias simultanemanete para o tempo e para o espaço (requisito essencial para descrever, por exemplo, uma corda que oscila).

Equação de onda unidimensional

((∂^2)/(∂ (x^2)))ϕ (x,t) - (1/(v^2))(Overscript[ϕ, ..])(x,t) =0

Um importante indicativo sobre se o uso de separação de variáveis é adequado ou não para um problema são as condições de contorno. Em geral, ao usar separação de variáveis há perda de generalidade, ou seja, nem todas as soluções da equação diferencial são encontradas.

Para o problema em questão, uma possível condição de contorno condizente com separação de variáveis é

ϕ(0,t) = ϕ(l,t) =0.

Ou seja, o valor da função em certo ponto é uma constante para qualquer t, assim o valor da função nesse ponto independe de t.

Usando ϕ(x,t) = X(x) T(t), obtém-se

((X'')/X) - (1/(v^2))((Overscript[T, ..])/T) = 0.

Vamos primeiro resolver o problema

(1/(v^2))((Overscript[T, ..])/T) = k,

em que k é constante real não conhecida. Essa EDO é trivial, mas é interessante ver como o Mathematica a resolve.

Clear[T]
DSolve[((T''[t])/(T[t])) == α (v^2), T[t], t]

C[1] e C[2] são constantes de integração. Claramente se k>0 teremos crescimento exponencial, enquanto k<0 leva a comportamento oscilatório. São as condições de contorno que determinam qual deve ser o sinal de k. Neste exemplo, consideraremos a solução oscilatória, a fim de descrever, por exemplo, uma corda que vibra.

Neste contexto, é conveniente fixar as condições de contorno tais que

T[t_] = A Cos[(OverTilde[k]) v t + δ]

Acima, (OverTilde[k])=(Sqrt[-k]),  A e δ são constantes de integração. 

Exercício: Verifique que existe escolha das constantes de integração C[1] e C[2] tais que a expressão acima para T possa ser escrita sem perda de generalidade.

Para X(x) temos,

DSolve[((X''[x])/(X[x])) == - ((OverTilde[k])^2), X[x], x]

Clear[X, κ]
X[x_]  = B Cos[x (OverTilde[k]) + κ];
Solve[X[0] == 0,κ]

Quiet[(OverTilde[k]) =.];
κ = -π/2;
X[x]
Solve[X[l] == 0,(OverTilde[k])]

Acima temos a expressão mais geral, sem usar ainda as condições de contorno, exceto por exigir a presença de soluções oscilatórias (ou seja, exigir k<0).

Par continuar o exemplo, usemos agora a condição de contorno dado pela eq. (3). Esta condição de contorno não impõe diretamente nenhuma restrição para a função T, mas para X(x) temos

κ = -π/2; (*π/2 também é possível, mas por fim leva ao mesmo resultado, a menos de uma mudança no sinal da constante arbitrária B*)
(OverTilde[k]) = n (π/l);
X[x]

Na última linha o Mathematica retornou o atual valor da função X(x). Verifiquemos se a condição de contorno é satisfeita.

X[0]

X[l]

Note que o Mathematica poderia ter simplificado mais, mas não o fez. Podemos exigir que simplifique mais através de

Simplify[X[l]]

Note que mesmo pedindo a simplificação, ainda ele não conseguiu avançar. O motivo é simples, em nenhum momento foi enviado para o Mathematica a informação de que n é número inteiro. Podemos desde já atribuir esta informação para ele, e ainda apresentar outras que estamos usando mas não enviamos a ele. Isto é feito da seguinte forma:

$Assumptions = {n∈Integers,B∈Reals,A∈Reals,l∈Reals, δ ∈ Reals, x∈ Reals, t ∈ Reals}

Simplify[X[l]]

Podemos juntar tudo e descobrir como a função ϕ(x,t) ficou. Primeiro definimos ela,

ϕ[x_,t_] = X[x] T[t]

Vê-se que δ continua arbitrário, contudo isso é natural. Para x não temos liberdade semelhante pois as condições de contorno fixaram valores particulares de x nos quais ϕ se torna nula, logo translações em x não preservam a solução, pois as condições de contorno não são invariantes por translação em x. Para t isso não ocorre, as condições de contorno não indicam nenhum valor de t especial, ademais não há na equação de onda nenhum t que apareça explicitamente e poderia fornecer a t um valor especial. Como não há valor especial para t, é de se esperar que a solução seja invariante por translação temporal. Ou seja, podemos trocar t por t + (Subscript[t, 0]) a vontade que continuaremos tendo uma solução (note que depois de fazer essa translação pode-se sempre selecionar um δ tal que (Subscript[t, 0]) desapareça da solução).

Podemos por exemplo fixar δ = π/2. Neste caso, para t =0 temos que T = 0, ou seja, toda a corda está reta, sem oscilações. Esse instante em que não há oscilações em nenhuma parte da corda se repete periodicamente.

δ =π/2;

ϕ[x, t]

Equivalentemente, podemos escrever,

Expand[TrigReduce[ϕ[x, t]]]

Camos chamar os termos acima de ϕ1 e ϕ2,

FullForm[-(1/2) A B Cos[((n π t v)/l)-((n π x)/l)]+(1/2) A B Cos[((n π t v)/l)+((n π x)/l)]]

TreeForm[-(1/2) A B Cos[((n π t v)/l)-((n π x)/l)]+(1/2) A B Cos[((n π t v)/l)+((n π x)/l)]]

ϕ1[t_,x_] =Expand[TrigReduce[ϕ[x, t]]][[1]]
ϕ2[t_,x_] =Expand[TrigReduce[ϕ[x, t]]][[2]]

A expressão acima descreve a mesma solução anterior como uma combinação de duas ondas idênticas que se propagam em direções opostas e com amplitudes invertidas.

Block[{l = 5, v = 1, A = 1, B=1, n=1},
Plot[ϕ[x,(π/10)], {x,0,l}, AspectRatio->1, PlotRange->{All, {-0.4, 0}}]] (*Block faz com que esses valores sejam atribuídos a essas variáveis somente dentro do "Block", fora do Block essas variáveis seguem sendo não definidas até o momento.*)

{l,v,A,B,n} (*Mostrando que fora do Block o valor dessas variáveis não foi alterado.*)

ϕtest[x_,t_] :=-A B Sin[((n π t v)/l)] Sin[((n π x)/l)]

Module[{l = 5, v = 1, A = 1, B=1, n=5},Animate[Plot[-A B Sin[((n π t v)/l)] Sin[((n π x)/l)], {x,0,l}, PlotRange->{Automatic, {-1,1}}], {t,0,2 (l/v)}, AnimationRunning->False]]

E se aumentamos o n?

Module[{l = 5, v = 1, A = 1, B=1, n=3},Animate[Plot[-A B Sin[((n π t v)/l)] Sin[((n π x)/l)], {x,0,l}, PlotRange->{Automatic, {-1,1}}], {t,0,2 (l/v)}, AnimationRunning->False]]

A animação abaixo mostra a solução da equação de onda junto de sua decomposição em duas ondas planas (ϕ1 e ϕ2).

Module[{l = 5, v = 1, n=3},Animate[Plot[{- Sin[((n π t v)/l)] Sin[((n π x)/l)], -(1/2)Cos[((n π t v)/l)-((n π x)/l)],(1/2)Cos[((n π t v)/l)+((n π x)/l)]}, {x,0,l}, PlotRange->{Automatic, {-1,1}}], {t,0, 2(l/v)}, AnimationRunning->False]]

Solução geral com separação de variáveis.

Para cada valor de n diferente encontramos uma solução linearmente independente. Por se tratar de EDP linear, a solução geral será uma combinação linear de todas as possíveis soluções. Assim vamos chamar a solução que encontramos anteriormente de (Subscript[c, n])(Subscript[ϕ, n])(x,t), assim a solução geral é (Subscript[c, n])(Subscript[ϕ, n])(x,t)

ϕ(x,t) = (∑_(n=0)^∞)(Subscript[c, n])(Subscript[ϕ, n])(x,t)

Ou seja,

Clear[ϕ, n, l,v]
ϕ[n_,x_,t_] = c[n] Sin[((n π t v)/l)] Sin[((n π x)/l)]
ϕ[x_,t_] = (∑_(n=1)^∞)ϕ[n,x,t]

Esta última acima é a solução geral, sendo válida a separação de variáveis. A condição de contorno dada não é suficiente para fixar completamente a solução, há ainda (Subscript[c, n]) coeficientes reais arbitrários. Isto é natural pois há infintos modos de vibração da corda: o modo fundamental, com n=1,  é o único em que os extremos x=0 e x=l constituem os únicos pontos nos quais a corda está imóvel. Para cada unidade maior, aumenta-se o número de pontos nos quais a corda está fixa em qualquer instante t (propriedade de onda estacionária).

No contexto de mecânica quântica, a equação diferencial relevante é a eq. de Schroedinger, contudo encontra-se soluções semelhantes no contexto de uma partícula presa numa caixa. Nesse contexto, fixar os (Subscript[c, n]) corresponde a saber a energia da partícula. Se a única informação dada foi a de que a partícula está na caixa, os coeficientes (Subscript[c, n]) serão necessariamente arbitrários.

Soma de modos de vibração.

Vejamos como fica a soma de dois modos de vibração, n =1 com n=3 (ou seja, o caso em que todos os (Subscript[c, n]) são nulos, exceto por (Subscript[c, 1]) e (Subscript[c, 3]), os quais tomamos como iguais a 1)

Module[{l = 5, v = 1, n=1},Animate[Plot[{ - Sin[((n π t v)/l)] Sin[((n π x)/l)] - Sin[(((n+2) π t v)/l)] Sin[(((n+2) π x)/l)]}, {x,0,l}, PlotRange->{Automatic, {-2,2}}], {t,0, 2(l/v)},AnimationRunning->False]]

Agora n = 1 e n =2

Module[{l = 5, v = 1, n=1},Animate[Plot[{ - Sin[((n π t v)/l)] Sin[((n π x)/l)] - Sin[(((n+1) π t v)/l)] Sin[(((n+1) π x)/l)]}, {x,0,l}, PlotRange->{Automatic, {-2,2}}], {t,0, 2(l/v)}, AnimationRunning->False]]

E por fim, n=3 e n=20

Module[{l = 5, v = 1, n=3},Animate[Plot[{ - Sin[((n π t v)/l)] Sin[((n π x)/l)] - Sin[(((n+17) π t v)/l)] Sin[(((n+17) π x)/l)]}, {x,0,l}, PlotRange->{Automatic, {-2,2}}], {t,0, 2(l/v),1/100},AnimationRate->30, AnimationRunning->False]]

Solução para um pulso que se propaga unidimensionalmente

Soluções da equação de onda unidimensional que não podem ser encontradas por meio de separação de variáveis.

Se nenhuma separação de variáveis for feita, o que pode ser dito com respeito à solução?

Tentemos pedir a solução diretamente,

Clear[ϕ]
DSolve[(∂_(x,x))ϕ[x,t] - (1/(v^2))(∂_(t,t))ϕ[x,t] ==0,ϕ[x,t],{x,t}]

Note que acima C[1] e C[2] não são constantes de integração, mas funções cujos argumentos são respectivamente t-(x/(Sqrt[(v^2)])) e t+(x/(Sqrt[(v^2)])). Ou seja, neste caso há uma solução geral para ϕ sem impor a separação de variáveis, mas qualquer função (diferenciável) desses argumentos será solução da eq. diferencial original.

Um exemplo trivial de solução da eq. de onda que não pode ser encontrada por separação de variáveis é

Clear[ϕ]
ϕ[x_,t_] := (E^(-((((t v - x))^2)/(σ^2))))

Abaixo verifica-se se essa é realmente uma solução,

Simplify[(∂_(x,x))ϕ[x,t] - (1/(v^2))(∂_(t,t))ϕ[x,t] ==0]

Module[{v = 1, σ=1/10},Animate[Plot[ N[(E^(-Rationalize[((((t v - x))^2)/(σ^2)),0])),100], {x,0,10}, PlotRange->{Automatic, {-2,2}}], {t,0, 10,1/10},AnimationRate->30, AnimationRunning->False]]