Próximo: Funções e Variáveis Definidas para contrib_ode, Previous: contrib_ode, Acima: contrib_ode [Conteúdo][Índice]
O resolvedor de equações diferenciais ordinárias (EDO) do MAXIMA, o ode2, resolve
EDO’s elementares de primeira e segunda ordem.  A função
contrib_ode extende ode2 com métodos adicionais para EDO’s lineares
e EDO’s não lineares de primeira ordem e EDO’s lineares homogêneas de segunda ordem.  
O código está ainda em desenvolvimemto e a seqüência de chamada da função pode mudar
em futuras versões.  Uma vez que o código estiver estabilizado essa função pode ser
movida do diretório contrib e integrada dentro do MAXIMA.
Esse pacote deve torna-se disponível para uso com o comando load("contrib_ode")
em primeiro lugar.
A convenção de chamada para contrib_ode é idêntica a ode2.  
Toma
três argumentos: uma EDO (somente o lado esquerdo precisa ser fornecido se o
lado direito for 0), a variável dependente, e a variável
independente.  Quando contrib_ode obtiver sucesso, retorna uma lista de soluções.
A forma de retorno da lista de solução difere de ode2.
Como equações não lineares podem ter múltiplas soluções, 
contrib_ode retorna uma lista de soluções.  Cada solução pode
ter várias formas:
%c é usado para representar a constante de integração para equações de primeira ordem.
%k1 e %k2 são constantes para equações de segunda ordem.  
Se contrib_ode
não puder obter uma solução por qualquer razão, false é retornado, após
talvez mostrar uma mensagem de erro.
Isso é necessário para retornar uma lista de soluções, como mesmo EDO’s de primeira ordem não lineares podem ter soluções multiplas. Por exemplo:
(%i1) load("contrib_ode")$
(%i2) eqn:x*'diff(y,x)^2-(1+x*y)*'diff(y,x)+y=0;
                    dy 2             dy
(%o2)            x (--)  - (x y + 1) -- + y = 0
                    dx               dx
(%i3) contrib_ode(eqn,y,x);
                                             x
(%o3)             [y = log(x) + %c, y = %c %e ]
(%i4) method;
(%o4)                        factor
EDO’s não lineares podem ter soluções singulares sem constantes de integração, como na segunda solução do seguinte exemplo:
(%i1) load("contrib_ode")$
(%i2) eqn:'diff(y,x)^2+x*'diff(y,x)-y=0;
                       dy 2     dy
(%o2)                 (--)  + x -- - y = 0
                       dx       dx
(%i3) contrib_ode(eqn,y,x);
                                           2
                                 2        x
(%o3)              [y = %c x + %c , y = - --]
                                          4
(%i4) method;
(%o4)                       clairault
A seguinte EDO possui duas soluções paramétricas em termos da variável fictícia %t. Nesse caso as soluções paramétricaspodem ser manipuladas para fornecer soluções explícitas.
(%i1) load("contrib_ode")$
(%i2) eqn:'diff(y,x)=(x+y)^2;
                          dy          2
(%o2)                     -- = (y + x)
                          dx
(%i3) contrib_ode(eqn,y,x);
(%o3) [[x = %c - atan(sqrt(%t)), y = - x - sqrt(%t)], 
                     [x = atan(sqrt(%t)) + %c, y = sqrt(%t) - x]]
(%i4) method;
(%o4)                       lagrange
O seguinte exemplo (Kamke 1.112) demonstra uma solução implícita.
(%i1) load("contrib_ode")$
(%i2) assume(x>0,y>0);
(%o2)                    [x > 0, y > 0]
(%i3) eqn:x*'diff(y,x)-x*sqrt(y^2+x^2)-y;
                     dy           2    2
(%o3)              x -- - x sqrt(y  + x ) - y
                     dx
(%i4) contrib_ode(eqn,y,x);
                                  y
(%o4)                  [x - asinh(-) = %c]
                                  x
(%i5) method;
(%o5)                          lie
A seguinte equação de Riccati é transformada em uma EDO linear de segunda ordem na variável %u. MAXIMA não está apto a resolver a nova EDO, de forma que essa nova EDO é retornada sem avaliação.
(%i1) load("contrib_ode")$
(%i2) eqn:x^2*'diff(y,x)=a+b*x^n+c*x^2*y^2;
                    2 dy      2  2      n
(%o2)              x  -- = c x  y  + b x  + a
                      dx
(%i3) contrib_ode(eqn,y,x);
               d%u
               ---                            2
               dx        2     n - 2   a     d %u
(%o3)  [[y = - ----, %u c  (b x      + --) + ---- c = 0]]
               %u c                     2      2
                                       x     dx
(%i4) method;
(%o4)                        riccati
Para EDO’s de primeira ordem contrib_ode chama ode2.  ode2 tenta então os
seguintes métodos: fatoração, Clairault, Lagrange, Riccati,
Abel e os métodos de simetria de Lie.  O método de Lie não é tentado
sobre equações de Abel se o método de Abel falhar, mas é tendado
se o método de Riccati uma EDO de segunda ordem não resolvida.
Para EDO’s de segunda ordem contrib_ode chama ode2 e em seguida odelin.
Rastros extensivos de depuração mensagens são mostradas se o comando
put('contrib_ode,true,'verbose) for executado.
Próximo: Funções e Variáveis Definidas para contrib_ode, Previous: contrib_ode, Acima: contrib_ode [Conteúdo][Índice]