@c English version: 1.9
@menu
* Introdução às Equações Diferenciais::
* Definições para Equações Diferenciais::  
@end menu

@node Introdução às Equações Diferenciais, Definições para Equações Diferenciais, Equações Diferenciais, Equações Diferenciais
@section Introdução às Equações Diferenciais

Esta secção descreve as funções disponíveis no
Maxima para obter a solução analítica de alguns
tipos específicos de equações diferencias de
primeira e segunda ordem. Para obter a solução numérica dum
sistema de equações diferenciais, consulte o pacote adicional
@code{dynamics}. Para obter representações gráficas no
espaço de fase, consulte o pacote adicional @code{plotdf}.

@node Definições para Equações Diferenciais, , Introdução às Equações Diferenciais, Equações Diferenciais
@section Definições para Equações Diferenciais


@deffn {Função} bc2 (@var{solução}, @var{xval1}, @var{yval1}, @var{xval2}, @var{yval2})
Resolve um problema de valores fronteira para uma equação
diferencial de segunda ordem.  Aqui: @var{solução} é
uma solução geral para a equação,
calculada por @code{ode2}; @var{xval1} define o valor da variável
independente, num primeiro ponto, na forma @code{@var{x} = @var{x1}}, e
@var{yval1} define o valor da variável dependente, no mesmo ponto, na
forma @code{@var{y} = @var{y1}}. As expressões @var{xval2} e
@var{yval2} definem os valores das mesmas variáveis, num segundo
ponto, usando a mesma forma.

Veja um exemplo da sua utilização na documentação de
@code{ode2}.

@end deffn


@deffn {Função} desolve (@var{eqn}, @var{x})
@deffnx {Função} desolve ([@var{eqn_1}, ..., @var{eqn_n}], [@var{x_1}, ..., @var{x_n}])
A função @code{dsolve} resolve sistemas de
equações diferenciais ordinárias lineares usando transformada de
Laplace. Aqui as expressões @var{eqn} são equações
diferenciais nas variáveis dependentes @var{x_1}, ..., @var{x_n}.  A
relação funcional de @var{x_1}, ..., @var{x_n} na variável
independente deve ser indicada explicitamente nas variáveis e nas suas
derivadas. Por exemplo, esta forma de definir as equações não
seria correcta:

@example
eqn_1: 'diff(f,x,2) = sin(x) + 'diff(g,x);
eqn_2: 'diff(f,x) + x^2 - f = 2*'diff(g,x,2);
@end example

A forma correcta seria:

@example
eqn_1: 'diff(f(x),x,2) = sin(x) + 'diff(g(x),x);
eqn_2: 'diff(f(x),x) + x^2 - f(x) = 2*'diff(g(x),x,2);
@end example

Assim, a chamada à função @code{desolve} seria:
@example
desolve([eqn_1, eqn_2], [f(x),g(x)]);
@end example

Se as condições iniciais em @code{x=0} forem conhecidas, poderão
ser fornecidas antes de usar @code{desolve}, através de
@code{atvalue}.

@c ===beg===
@c 'diff(f(x),x)='diff(g(x),x)+sin(x);
@c 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
@c atvalue('diff(g(x),x),x=0,a);
@c atvalue(f(x),x=0,1);
@c desolve([%o1,%o2],[f(x),g(x)]);
@c [%o1,%o2],%o5,diff;
@c ===end===
@example
(%i1) @b{@t{'diff(f(x),x)='diff(g(x),x)+sin(x);}}
                 d           d
(%o1)            -- (f(x)) = -- (g(x)) + sin(x)
                 dx          dx
(%i2) @b{@t{'diff(g(x),x,2)='diff(f(x),x)-cos(x);}}
                  2
                 d            d
(%o2)            --- (g(x)) = -- (f(x)) - cos(x)
                   2          dx
                 dx
(%i3) @b{@t{atvalue('diff(g(x),x),x=0,a);}}
(%o3)                           a
(%i4) @b{@t{atvalue(f(x),x=0,1);}}
(%o4)                           1
(%i5) @b{@t{desolve([%o1,%o2],[f(x),g(x)]);}}
                  x
(%o5) [f(x) = a %e  - a + 1, g(x) = 

                                                x
                                   cos(x) + a %e  - a + g(0) - 1]
(%i6) @b{@t{[%o1,%o2],%o5,diff;}}
             x       x      x                x
(%o6)   [a %e  = a %e , a %e  - cos(x) = a %e  - cos(x)]

@end example

Se @code{desolve} não pode obter uma solução, retorna @code{false}.

@end deffn


@deffn {Função} ic1 (@var{solução}, @var{xval}, @var{yval})
Resolve problemas de valor inicial para equações diferenciais de
primeira ordem.  Aqui @var{solução} é uma solução geral
para a equação, na forma dada por @code{ode2}, @var{xval} dá um
valor inicial para a variável independente, na forma @code{@var{x} =
@var{x0}}, e @var{yval} dá o valor inicial para a variável
dependente, na forma @code{@var{y} = @var{y0}}.

Veja um exemplo da sua utilização na documentação de
@code{ode2}.

@end deffn

@deffn {Função} ic2 (@var{solução}, @var{xval}, @var{yval}, @var{dval})
Resolve problemas de valores iniciais para equações diferenciais
de segunda ordem. Aqui @var{solução} é uma solução geral
para a equação, na forma dada por @code{ode2}, @var{xval} dá um
valor inicial para a variável independente, na forma @code{@var{x} =
@var{x0}}, @var{yval} dá o valor inicial para a variável dependente,
na forma @code{@var{y} = @var{y0}} e @var{dval} dá o valor inicial
para a primeira derivada da variável dependente, em função da
variável independente, na forma @code{diff(@var{y},@var{x}) =
@var{dy0}} (@code{diff} não tem que ser precedido por apóstrofo).

Veja um exemplo da sua utilização na documentação de
@code{ode2}.

@end deffn

@deffn {Função} ode2 (@var{eqn}, @var{dvar}, @var{ivar})
A função @code{ode2} resolve uma equação diferencial
ordinária (EDO) de primeira ou de segunda ordem.  Precisa de três
argumentos: uma EDO dada por @var{eqn}, a variável dependente
@var{dvar}, e a variável independente @var{ivar}.  Quando conseguir,
retorna uma solução para a variável dependente, na forma
explícita ou implícita. @code{%c} é usado
para representar a constante de integração no caso de
equações de primeira ordem, e @code{%k1} e @code{%k2} as
constantes para equações de segunda ordem. A dependência da
variável dependente na variável independente não tem que ser
escrita em forma explícita, como no caso de
@code{desolve}, mas a variável independente deverá ser indicada
sempre no terceiro argumento.

Se por alguma razão @code{ode2} não conseguir encontrar a
solução, retornará @code{false}, após talvez mostrar uma
mensagem de erro. Os métodos implementados para equações
diferenciais de primeira ordem, na ordem em que serão testados, são:
linear, separável, exacta - talvez requerendo um factor de
integração, homogénea, equação de Bernoulli, homogénea
generalizada. Os tipos de equações de segunda ordem que podem ser
resolvidas são: coeficientes constantes, exactas, linear homogéneas
com coeficientes não-constantes que possam ser transformados para
constates, equação de Euler ou equi-dimensional, equações que
possam ser resolvidas pelo método de variação dos parâmetros,
e equações que não dependam ou da variável independente ou da
variável dependente de modo que possam ser reduzidas a duas
equações lineares de primeira ordem a serem resolvidas
sequêncialmente.

Durante o processo de resolução da EDO, serão dados valores a
várias variáveis locais, com fins puramente informativos:
@code{método} denota o método de solução usado (por exemplo,
@code{linear}), @code{intfactor} denota qualquer factor integrante
utilizado, @code{odeindex} denota o índice para o método
de Bernoulli ou para o método homogéneo generalizado, e @code{yp}
denota a solução particular no método de variação dos
parâmetros.

Para resolver problemas de valores iniciais (PVI) estão
dispon@'{i}veis as funções @code{ic1} e @code{ic2}e, para
equações de primeira e segunda ordem, e para resolver problemas de
valores fronteira (PVF) de segunda ordem pode usar-se a função
@code{bc2}.

Exemplo:

@c ===beg===
@c x^2*'diff(y,x) + 3*y*x = sin(x)/x;
@c ode2(%,y,x);
@c ic1(%o2,x=%pi,y=0);
@c 'diff(y,x,2) + y*'diff(y,x)^3 = 0;
@c ode2(%,y,x);
@c ratsimp(ic2(%o5,x=0,y=0,'diff(y,x)=2));
@c bc2(%o5,x=0,y=1,x=1,y=3);
@c ===end===
@example
(%i1) @b{@t{x^2*'diff(y,x) + 3*y*x = sin(x)/x;}}
                      2 dy           sin(x)
(%o1)                x  -- + 3 x y = ------
                        dx             x
(%i2) @b{@t{ode2(%,y,x);}}
                             %c - cos(x)
(%o2)                    y = -----------
                                  3
                                 x
(%i3) @b{@t{ic1(%o2,x=%pi,y=0);}}
                              cos(x) + 1
(%o3)                   y = - ----------
                                   3
                                  x
(%i4) @b{@t{'diff(y,x,2) + y*'diff(y,x)^3 = 0;}}
                         2
                        d y      dy 3
(%o4)                   --- + y (--)  = 0
                          2      dx
                        dx
(%i5) @b{@t{ode2(%,y,x);}}
                      3
                     y  + 6 %k1 y
(%o5)                ------------ = x + %k2
                          6
(%i6) @b{@t{ratsimp(ic2(%o5,x=0,y=0,'diff(y,x)=2));}}
                             3
                          2 y  - 3 y
(%o6)                   - ---------- = x
                              6
(%i7) @b{@t{bc2(%o5,x=0,y=1,x=1,y=3);}}
                         3
                        y  - 10 y       3
(%o7)                   --------- = x - -
                            6           2

@end example

@end deffn

