En realidad el título debería ser "Resolver sistemas de EDOs de primer orden con coeficientes constantes con Maxima", pero obviamente era demasiado largo. Lo que escribiré aquí se puede encontrar en la ayuda de Maxima (no sé donde está exactamente si se quiere acceder a pelo a los archivos, pero es accesible fácilmente desde la interfaz wxMaxima), pero creo que puede ser interesante explicar como se ejecutan cálculos como éstos para aquellos que no conozcan demasiado este programa.
Como ya he indicado en el título, hago referencia a EDOs con coeficientes constantes porque Maxima (almenos con al versión instalada en Ubuntu Jaunty 9.04) tiene algunas dificultades para trabajar con ecuaciones más complejas, en todo caso puede ser muy útil tener una herramienta como ésta a mano si no se dispone de otras como Maple (mi caso, por ejemplo).
Entonces, para resolver las siguientes ecuaciones relacionadas con el típico problema de los tanques interconectados entre los que fluyen líquidos (aquí luciré el nuevo plugin para mostrar latex en WordPress
):
\( \begin{cases} \dot{QA_{T}}(t) = 3 + \frac{4}{100}QB_{T}(t) - \frac{5+8}{100}QA_{T}(t) \\ \dot{QB_{T}}(t) = 3 + \frac{5}{100}QA_{T}(t) - \frac{4+9}{100}QB_{T}(t) \\ QA_{T}(0) = 0 \\ QB_{T}(0) = 0 \end{cases} \)
Lo haremos con los siguientes comandos:
eq1: 'diff(x(t), t) = (-13/100)*x(t) + (4/100)*y(t) + 3; eq2: 'diff(y(t), t) = (5/100)*x(t) + (-13/100)*y(t) + 3; atvalue(x(t), t=0, 0); atvalue(y(t), t=0, 0); desolve([eq1, eq2], [x(t), y(t)]);
En las primeras dos líneas definimos las dos ecuaciones diferenciales (les damos nombre poniendo el nombre seguido de dos puntos y seguidamente la ecuación). En las siguientes dos líneas se escriben las restricciones que tienen que satisfacer las soluciones (que, no lo olvidemos, son funciones). Y por último se le passa un array con las ecuaciones a la función dsolve, así como un array con el nombre de las funciones que queremos encontrar. Ésto es todo amigos, espero que os sirva
.
Muy buen artículo y genialmente explicado. El plugin de LaTeX esta genial, me lo apunto, pero desde el feed de Google Reader no se visualiza correctamente y solo muestra el código LaTeX, aun así esta muy bien.
Hola:
Interesantes artículos. Enhorabuena por tu mención en El País del día de Nochebuena.
Tengo algunas herramientas de cálculo numérico en mi sitio web. En especial unos microframeworks no demasiado ambiciosos pero fácilmente incluibles en proyectos de C++. Quizá te pueda servir algo en tus futuros proyectos:
http://rumigaculum.com/index.php/computacion/48-microentornos-de-desarrollo-de-calculo-numerico
Tengo otras cosas en el sitio web que quizá te sean igualmente útiles.
Aprovecho para desearte Feliz Navidad y mucha suerte en tu próximo fututo profesional (seguro que brillante).
David Serrano
Gracias David por tu soporte
. Me miraré tu código para ver si puede servir dentro de Unitarium4C , si lo hago ya te daré un toque
y obviamente lo mencionaré en los créditos del proyecto ^_^ .
Sobre lo del artículo de El País, creo que tuve más suerte que otra cosa jeje, el proyecto está todavía en pañales y no es para nada algo importante, estoy seguro de que por ahí andan muchos otros proyectos mucho mejores sin que nadie les haga ni caso... en fín, que le haremos.
Saludos!