Ecuaciones diferenciales exactas y factores integrantes#
Dada una familia de curvas \(F(x,y)=C\), diferenciando se obtiene una ecuación diferencial:
La resolución de ecuaciones exactas trata precisamente de invertir el proceso anterior, es decir, dada una ecuación de la forma
encontrar una función de dos variables cuya diferencial total sea la expresión anterior. No siempre es posible encontrar esa función, de manera que se necesita conocer alguna condición que permita identificar si dicha función existe.
Ecuaciones exactas:
Una ecuación diferencial de primer orden
se dice exacta cuando existe una función \(F(x,y)\) tal que
En ese caso, la solución general de la ecuación queda definida de forma implícita por
Se puede comprobar que, bajo ciertas condiciones sobre el dominio de definición de la ecuación, una condición necesaria y suficiente para que la ecuación sea exacta es:
Una vez que se tiene comprobado que una ecuación es exacta, el proceso de resolución implica encontrar la función \(F(x,y)\) resolviendo el sistema de ecuaciones en derivadas parciales:
Ejemplo:
La ecuación
es exacta, ya que
Para resolver la ecuación se considera el sistema:
Integrando respecto a la variable \(x\) en la primera ecuación se obtiene:
siendo \(\phi(y)\) una función arbitraria de \(y\). Para determinar cómo es esa función se traslada la expresión obtenida de \(F(x,y)\) a la segunda de las condiciones que debe cumplirse:
Por tanto
Por tanto la solución general de la ecuación es
o equivalentemente
Debe destacarse que la solución de las ecuaciones exactas conduce siempre a una expresión que define la función solución de forma implícita, y en muchas ocasiones resulta imposible obtener una solución explícita \(y=y(x)\).
De hecho, eso dificulta la obtención de soluciones simbólicas con el paquete SymPy de Python. De entrada, para intentarlo la ecuación debería expresarse de otra manera, ya que SymPy la resolución simbólica no acepta expresiones en forma de diferenciales totales. La ecuación equivalente sería:
y la solución con Python se trataría de obtener con el siguiente código. Sin embargo, se puede comprobar que Python no llega a encontrar una solución simbólica para esa ecuación. La ejecución del siguiente código Python entraría en un bucle sin salida y deberíamos abortar bruscamente la ejecución.
import sympy as sp x = sp.Symbol('x') y = sp.Function('y') ecuacion = sp.Eq(y(x).diff(x), -(2*x*y(x)+y(x)**2)/(x**2+2*x*y(x)-6)) sp.dsolve(ecuacion)
Como se verá más adelante, una alternativa para los casos en los que las ecuaciones no puedan resolverse de forma simbólica es la utilización de métodos numéricos de aproximación de las soluciones.
Factores integrantes#
En ocasiones una ecuación del tipo
no es exacta pero se puede encontrar una función \(\mu(x,y)\) de manera que la ecuación equivalente
sí que es exacta. La función \(\mu(x,y)\) en ese caso se dice que es un factor integrante.
Encontrar un factor integrante no siempre es fácil, por lo que se suele recurrir a tratar de encontrar factores que respondan a un perfil especial, por ejemplo, factores que sean únicamente función de \(x\), \(\mu(x)\), o función de \(y\), \(\mu(y)\), o factores de la forma \(\mu(x+y)\), \(\mu(xy)\),…
Ejemplo:
La ecuación
no es exacta ya que
Se podría tratar de buscar un factor integrante que sea función únicamente de x, es decir, de la forma \(\mu(x)\). Con ese factor, la ecuación equivalente sería:
Para que esta última ecuación sea exacta se necesitaría que
En definitiva, \(\mu(x)\) debería cumplir:
Operando sobre esta última expresión, se obtiene
que es una ecuación diferencial separable que permite obtener un factor integrante:
Como lo que se necesita es un único factor integrante, en las integrales anteriores no se considera la constante de integración.
Multiplicando por el factor obtendido \(\mu(x)=x\) se obtiene una ecuación exacta:
Ahora se trata de encontrar una función \(F(x,y)\) tal que:
Integrando la primera expresión se obtiene
que llevado sobre la segunda condición conduce a
En definitiva, la solución de la ecuación inicial es
siendo \(C\) una constante arbitraria.
De nuevo, SymPy no sería capaz de encontrar una solución explícita simbólica para esa ecuación diferencial.
Ejemplo:
La ecuación
tampoco es exacta. Se va a buscar en este caso un factor integrante de la forma \(\mu(y)\). Multiplicando por ese factor la ecuación resultante es
y la condición para que esta nueva ecuación sea exacta es
De esta expresión se obtiene
De nuevo se obtiene una ecuación diferencial cuya resolución conduce a un factor integrante.
Multiplicando por ese factor se obtiene una ecuación exacta:
La resolución de esta ecuación exacta exige encontrar una función \(F(x,y)\) tal que:
Integrando la primera expresión se obtiene
que llevado sobre la segunda condición conduce a
En definitiva, la solución de la ecuación inicial es
siendo \(C\) una constante arbitraria.
En este caso Python sí que es capaz de encontrar una expresión simbólica explícita de la solución de la ecuación:
import sympy as sp
x = sp.Symbol('x')
y = sp.Function('y')
ecuacion = sp.Eq(y(x).diff(x), (y(x)-x*y(x)**2)/(x+2*y(x)**2))
sp.dsolve(ecuacion)
Ejercicios propuestos#
Comprobar que las siguientes ecuaciones son exactas y encontrar su solución general
Comprobar que la siguiente ecuación no es exacta pero que admite un factor integrante \(\mu(x,y)=\frac{1}{xy^2}\).
Resolver las siguientes ecuaciones diferenciales buscando factores integrantes de la forma \(\mu(x)\):
Resolver las siguientes ecuaciones diferenciales buscando factores integrantes de la forma \(\mu(y)\):
Dada la ecuación \((3x-y-3xy+3y^2)dx+(5xy-x^2-4y^2-2x)dy=0\) tratar de convertirla en exacta buscando un factor integrante de la forma \(\mu(x-y)\). Encontrar además la solución general.