dsolve.mws

El comando dsolve

Obtener una solución para una ecuación diferencial puede algunas veces resultar en un proceso bastante simple, es solo cuestion de pedirle al programa que nos busque  la solución, como se muestra en el siguiente ejemplo.

>    restart;with(DEtools):

Se escribe la ecuación diferencial,

>    ed1:= diff(y(x),x) = x^2*y(x);

ed1 := diff(y(x),x) = x^2*y(x)

y con el comando "dsolve" pedimos la solución. El maple la escribira siempre y cuando esto sea posible.

>    sol:=dsolve(ed1,y(x));

sol := y(x) = _C1*exp(1/3*x^3)

Es importante notar que podemos sacar mas información de todo este proceso, como por ejemplo preguntar por el tipo de ecuación diferencial en cuestión

>    odeadvisor(ed1);

[_separable]

Asi como pedirle el programa que verifique si es en relidad una solución de la ecuación diferencial.

>    odetest(sol,ed1);

0

Existe tambien la posiblidad del que Maple  nos vaya mostrando en pantalla las técnicas que esta utilizando durante el proceso de la busqueda de una solución. La manera de proceder es activando la opción "linfolevel". Para mayor información escriba:

> ?infolevel

>    infolevel[dsolve] := 5:

Consideremos la siguiente ecuación diferencial:

>    ed2 := sin(x)*diff(y(x),x)-cos(x)*y(x)+a=0;

ed2 := sin(x)*diff(y(x),x)-cos(x)*y(x)+a = 0

A simple vista notamos que es una ecuación diferencial lineal de primer orden, pero de todos modos preguntemos por su clasificación

>    odeadvisor(ed2);

[_linear]

Como sabemos exactamente del tipo de ecuacion que estamos considrando le podemos pedirle a Maple   que vaya directamente  al grano cuando busque la solución

>    dsolve(ed2, [linear]);

Classification methods on request

Methods to be used are: [linear]

----------------------------

* Tackling ODE using method: linear

--- Trying classification methods ---

trying 1st order linear

<- 1st order linear successful

y(x) = sin(x)*a/tan(x)+sin(x)*_C1

Ahora tenemos en pantalla los metodos utilizados por el programa cuando se buscaba la solución.

Estudiemos otro ejemplo, en este caso una ecuación diferencial no lineal de primer orden pero que no es exacta

>    ed3 := diff(y(x),x) = 2*a/x^2/(-y(x)+2*((x*y(x)^2-4*a)/x)*a);

ed3 := diff(y(x),x) = 2*a/x^2/(-y(x)+2*(x*y(x)^2-4*a)/x*a)

>    odeadvisor(ed3);

-> The symmetry found is, [exp(4*a*y)*x^2, 0]

[[_1st_order, `_with_symmetry_[F(x)*G(y),0]`]]

>    odeadvisor(ed3,[exact]);

[NONE]

Tambien podemos averiguar que no es exacta porque al pedir su solución utilizando un algoritmo para ecuaciones exactas el programa falla

>    dsolve(ed3, [exact]);

Classification methods on request

Methods to be used are: [exact]

----------------------------

* Tackling ODE using method: exact

--- Trying classification methods ---

trying exact

Veamos si existe un factor integrante

>    mu := intfactor(ed3);

   -> Computing symmetries using: way = 2

   -> Computing symmetries using: way = 3

[y*x^2, -2*a]

   <- successful computation of symmetries.

mu := (-y(x)*x+2*a*y(x)^2*x-8*a^2)/(x*y(x)^2-4*a)

Sabemos que si multiplicamos la ecuación diferencial por este factor integrante se convertirá en una ecuación diferencial exacta

>    dsolve( mu*ed3,[exact]);

Classification methods on request

Methods to be used are: [exact]

----------------------------

* Tackling ODE using method: exact

--- Trying classification methods ---

trying exact

<- exact successful

-1/2*ln(x*y(x)^2-4*a)+1/2*ln(x)+2*a*y(x)+_C1 = 0

>    odetest(%,ed3);

0

Consideremos una ecuación diferencial más compleja

>    ed4 := diff(y(x),x)-y(x)^2+y(x)*sin(x)-cos(x)=0;

ed4 := diff(y(x),x)-y(x)^2+y(x)*sin(x)-cos(x) = 0

>    odeadvisor(ed4,[exact]);

[NONE]

>    odeadvisor(ed4);

[_Riccati]

>    sol:=dsolve(ed4);

Methods for first order ODEs:

--- Trying classification methods ---

trying a quadrature

trying 1st order linear

trying Bernoulli

trying separable

trying inverse linear

trying homogeneous types:

trying Chini

Chini's absolute invariant is:, 1/4*sin(x)^2*(-1+2*cos(x))^2/cos(x)^3

differential order: 1; looking for linear symmetries

trying exact

Looking for potential symmetries

trying Riccati

trying Riccati sub-methods:

   <- Riccati with symmetry of the form [0, exp(-Int(f,x))/P*(y*P-f)^2] successful

sol := y(x) = -1/(_C1+Int(exp(-cos(x)),x))*exp(-cos(x))+sin(x)

>    odetest(sol,ed4);

0

Para solicitar más información sobre las ecuaciones del tipo Riccati se escribe lo siguiente

>    odeadvisor(ed4, help);

Este ultimo comando nos abrirá una nueva ventana con mucha más información sobre las ecuaciones diferenciales del tipo Riccati.

Sabemos tambien que si quitamos el ultimo termino de la ecuación diferencial anterior la ecuación pasa a ser una ecuación diferencial del tipo Bernoulli

ed_B := diff(y(x),x)+f(x)*y(x)+g(x)*y(x)^a = 0

>    ed5:=diff(y(x),x)-y(x)^2+y(x)*sin(x)=0;

ed5 := diff(y(x),x)-y(x)^2+y(x)*sin(x) = 0

>    sol:=dsolve(ed5);

Methods for first order ODEs:

--- Trying classification methods ---

trying a quadrature

trying 1st order linear

trying Bernoulli

<- Bernoulli successful

sol := y(x) = exp(cos(x))/(Int(-exp(cos(x)),x)+_C1)

>    odetest(sol,ed5);

0

Si no queremos que   Maple  no siga mostrando en pantalla la información para el usuario apagamos la opcion "infolevel" de la siguiente manera

>    infolevel[dsolve] := 0:

>    ed6:=diff(y(x),x)-y(x)+y(x)*sin(x);

ed6 := diff(y(x),x)-y(x)+y(x)*sin(x)

>    dsolve(ed6);

y(x) = _C1*exp(x+cos(x))

>    odetest(%,ed6);

0

>   

Fin.