Equações diferenciais de primeira ordem
Como escrever e resolver uma equação diferencial no Maple V
O primeiro passo para resolver uma equação diferencial ordinária (EDO) no Maple V é decidir qual a forma que vamos escrevê-la como input do Maple V.
Uma equação diferencial ordinária de primeira ordem y' = f(x,y) pode ser escrita com comando de derivada de uma expressão diff , por exemplo :
(1) equação := diff(y(x),x) = f(x, y(x))
ou com operador D
(2) equação := D(y)(x) = f(x,y(x))
No caso de uma equação diferencial que é dada na forma P(x,y) dx + Q(x,y) dy = 0 devemos escolher uma das variáveis y = y(x) ou x = x(y) como a variável dependente, isto é, devemos escrever a equação de uma das formas (3) ou (4) abaixo
(3) equação := P(x,y) + Q(x,y)* D(y)(x) = 0
(4) equação := P(x,y) *D(x)(y)+ Q(x,y) = 0
A experência tem mostrado que o Maple é capaz de calcular a solução geral ou específica para a maioria das equações diferenciais clássicas que estão nos textos básicos de cálculo.
A solução geral ou específica de uma equação diferencial é chamada no Maple de solução exata (type = exact). A solução exata de uma EDO escrita nas formas (1), (2), (3) acima é calculada com o comando dsolve explicitando a variável dependente e independente y(x)
dsolve( equação, y(x))
O Maple resolve a equação diferencial y' = f(x,y) com a condição inicial y(a) = b com o comando
dsolve( { equação , y(a) = b} , y(x) )
É importante lembrar que o retorno do comando dsolve é, para o Maple, do tipo igualdade, na qual o segundo membro é a solução, explícita ou implícita, na forma
y(x) = G(x)
y(x) = F(x,y) = C
É importante observar que isto não quer dizer que y(x ) é uma função de x
Por exemplo, a equação y' = y tem como solução geral y = C exp(x) com C uma constante
> restart;
> EqDif := diff(y(x), x) - y(x) = 0;
> dsolve(EqDif);
Se colocarmos uma condição inicial
> Sol := dsolve( {diff(y(x),x) - y(x) = 0, y(0) = 2}, y(x) );
Se perguntarmos " qual o é o tipo" de dado do último retorno obtemos( =) que é uma igualdade
> whattype(%);
Muitas vezes queremos utilizar a solução 2 exp(x) para usos posteriores, tais como, plotar o gráfico. Para isto devemos isolar o segundo membro da igualdade acima com rhs (right hand size)
> EXpr := rhs(Sol);
> plot(EXpr, x=-2..2); plota a solução no intervalo [-2,2]
>
Soluções exatas de equações diferenciais
Daremos a seguir alguns exemplos de situações que poderão ocorrer ao resolver uma equação diferencial de modo exato.
Atenção : Ao resolver uma equação diferencial do modo exato, é recomendável escrever todas as constantes numéricas na forma de números inteiros ou de frações. O Maple pode não efetuar integrações se as constantes forem dadas na forma de uma real com ponto flutuante.
Exemplo 1 . Situações em que o Maple apresenta mais de uma solução
O Maple pode dar uma ou mais respostas como solução de um problema de valor inicial, contrariando, muitas vezes, o resultado que é esperado teóricamente. Destacamos aqui duas situações em que isto pode ocorrer:
1) A equação dada tem solução geral que é implícita mas a equação não tem solução no ponto inicial dado. Por exemplo, a equação exata
tem solução geral
, mas com a condição inicial
este problema não tem solução com a variável dependente
.
> restart;
> Circulos := 2*x + 2*y(x)*D(y)(x) = 0;
> dsolve( Circulos, y(x) ); solução geral
> dsolve( {Circulos, y(1)=0}, y(x) ); duas "soluções"
2) A equação dada apresenta solução geral implícita, que é uma equação (de graus 2, 3 ou 4) na variável y(x) e queremos resolver a equação com uma condição inicial. Neste caso o Maple V faz "um esforço" para encontrar "as soluções" explicitamente e, após encontrá-las, ele nos apresenta todas as respostas, incluindo aquelas que são complexas. A solução procurada é uma das respostas mas o Maple V não nos inidica qual. O Maple sempre apresenta a solução complexa do problema que podemos não estar interessado
Por exemplo, a equação
tem solução única y(x) com a condição inicial
. A restriçao do domínio da solução deve ser tal que -1 < y < 1.
> restart;
> Cubicas := - x^2 + (1-y(x)^2)*D(y)(x) = 0;
> SolCub := dsolve(Cubicas, y(x)); solução geral é
> dsolve({ Cubicas, y(0)=0}, y(x)); apresenta duas soluções complexas
>
Um modo de resolver o problema é calcular a solução implícita do problema de valor inicial
substituindo os valores
e
na solução geral e calcular o valor da constante. Por exemplo,
> subs({y(x)=0, x=0}, SolCub);
> _C1 := solve(%, _C1);
>
Observação: Um outro modo de resolver as situações (1) e (2) acima é trocar a variável dependente y(x) por x(y). Este procedimento pode não funcionar de modo geral.
>
Exemplo 2 : A solução da equação envolve funções que são definidas internamente no Maple.
Muitas vezes o Maple não consegue fazer certas integrais. Neste caso as integrais são deixadas indicadas. Em outras equações as soluções podem ser dadas em termos de funções internas do Maple tais como, erf(x) (função erro), sign(x) (função sinal =1 se x > 0 , = -1 se x < 0), Heaviside(x) (=1 se x > 0, = 0 se x < 0), funções de Bessel ou outras funções que estão descritas no arquivo inifcns (initial functions). Por exemplo :
> restart;
> dsolve( {diff(y(x), x) = exp(x^3), y(1)=2}, y(x) ); o Maple deixa indicado na versão 4, mas aqui ele deixa em termos da função Gama
> Int(exp(-t^2), t=0..x) = int(exp(-t^2), t=0..x); define a funcão erro, a menos de uma constante
> restart;
> dsolve( D(y)(x)-2*x*y(x) -1 = 0, y(x)); a solução envolve a função erro
O comando dsolve pode ser usado com uma opção que permite explicitar a solução em termos da variável independente optando-se por explicit = true , ( o default no Release 4 é explicit = false ), por exemplo :
> restart;
> ed1 := 2*sin(x)*cos(x) + cos(y(x))*sin(x)*D(y)(x) = 0;
> dsolve(ed1, y(x)); temos a solução explícita nesta versão
>
Exemplo 4 : Problema com duas soluções e transformação de solução complexa em real
O Maple V resolve as equações diferenciais pressupondo que as variáveis são complexas, se não houver nenhuma ressalva poderá haver respostas envolvendo funções de variáveis complexas. A equação
tem duas soluções y(x) = 0 e
para a condição
, isto é,
é um ponto singular. O Maple V fornece as soluções na seguinte forma
> restart;
> dsolve( {-y(x)+ (2*y(x)-x)*D(y)(x) = 0, y(0)=0}, y(x));
Se x é real e positivo temos as duas soluções escritas de um modo "um tanto estranhas". Se pensamos que x é uma variável real então a primeira solução é tal que y(x) = 0 se x > 0 e y(x) = x se
.
Este tipo de resposta do Maple V também ocorre para pontos iniciais nos quais temos uma única solução. Por exemplo, se tomamos a condição inicial y(0) =1, temos a solução y(x) = 0 que é válida somente para os valores x > 0, pois x = 0 é um ponto singular. O Maple V fornece a mesma resposta da condição inicial anterior. A restrição do domínio da solução não é fornecida
> restart;
> s := dsolve( { -y(x)+(2*y(x)-x)*D(y)(x)=0, y(1)=0}, y(x));
> simplify(s[1]); na respota aparece a função sinal de um número complexo csgn(x)
> assume(x > 0); assumindo x positivo
> simplify({s[1], s[2]}); a letra x~ é a variável x com a restrição x > 0 a qual fica válida para o resto do arquivo corrente do Maple V.
Para retornar a variável x geral (complexa) reinicializamos com restart e verificamos
> restart; x;
>
Voltar para o Sumário