<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0120-5609</journal-id>
<journal-title><![CDATA[Ingeniería e Investigación]]></journal-title>
<abbrev-journal-title><![CDATA[Ing. Investig.]]></abbrev-journal-title>
<issn>0120-5609</issn>
<publisher>
<publisher-name><![CDATA[Facultad de Ingeniería, Universidad Nacional de Colombia.]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0120-56092010000300015</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[System-Solver: una herramienta de código abierto para la modelación de sistemas dinámicos]]></article-title>
<article-title xml:lang="en"><![CDATA[System Solver: an open source tool for mathematically modelling dynamical systems]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Domínguez]]></surname>
<given-names><![CDATA[Efraín]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Ardila]]></surname>
<given-names><![CDATA[Felipe]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Bustamante]]></surname>
<given-names><![CDATA[Santiago]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad Javeriana  ]]></institution>
<addr-line><![CDATA[Bogotá ]]></addr-line>
<country>Colombia</country>
</aff>
<pub-date pub-type="pub">
<day>30</day>
<month>12</month>
<year>2010</year>
</pub-date>
<pub-date pub-type="epub">
<day>30</day>
<month>12</month>
<year>2010</year>
</pub-date>
<volume>30</volume>
<numero>3</numero>
<fpage>157</fpage>
<lpage>164</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S0120-56092010000300015&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S0120-56092010000300015&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S0120-56092010000300015&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[En este artículo se presenta una herramienta de código abierto para la simulación de sistemas dinámicos, representados a través de ecuaciones diferenciales de distinto orden o de sistemas de ecuaciones diferenciales ordinarias (EDO). La idea principal que incentivó el desarrollo de esta herramienta consiste en que muchos procesos físicos, biológicos, ecológicos, económicos, químicos y sociales, y un sinnúmero de problemas ingenieriles, pueden ser expresados de esta forma. Adicionalmente, la solución de ese tipo de problemas exige experticia en métodos numéricos y programación. Este tipo de experticia no es muy común para los expertos de las áreas mencionadas; por ello, se requiere de una herramienta que permita sortear esta falta de experticia e incrementar la productividad en trabajos relacionados con tópicos de modelación. System-Solver es una aplicación que facilita la formulación de problemas de valor inicial en EDO y su solución numérica, y mediante un programa en Visual Basic la automatiza. El programa obtenido se puede compartir fácilmente con otros investigadores, facilitando la reproducción del ejercicio de modelación incluso en diferentes sistemas operativos. La presentación del software está acompañada con ejercicios de diversas áreas temáticas, incluyendo un ejemplo de modelación estocástica.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[The following paper presents a freeware modelling tool simulating dynamic systems that can be represented by either an ordinary differential equation (ODE) or a set of differential equations of different orders. The main idea leading to this software development is related to the fact that many physical, biological, ecological, economical, chemical, social and engineering problems can be expressed in this way. Furthermore, the solution to these problems requires some expertise in numerical methods and programming. Such knowledge is uncommon in some of the experts in such scientific domains. A tool to fill in this knowledge gap, increase productivity within modelling-related research and support the teaching of mathematical modelling topics is thus needed. This paper introduces System Solver, a computer application that facilitates the formulation of initial value problems for ODE systems, numerically solves these problems and provides a user with not only the solution but also debugged Visual Basic source code for the application. The obtained code can be easily shared among researchers, which facilitates the replication of numerical experiments even across different operating systems. This software's introduction is accompanied by examples from different domains, including one example from stochastic modelling.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[ODE Solver]]></kwd>
<kwd lng="es"><![CDATA[diferenciación por computadoras]]></kwd>
<kwd lng="es"><![CDATA[modelación]]></kwd>
<kwd lng="es"><![CDATA[sistema dinámicos]]></kwd>
<kwd lng="en"><![CDATA[ODE solver]]></kwd>
<kwd lng="en"><![CDATA[computational differentiation]]></kwd>
<kwd lng="en"><![CDATA[modelling]]></kwd>
<kwd lng="en"><![CDATA[dynamical system]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <font size = "2" face = "verdana">    <p>    <center><font size="4"><b> <i>System-Solver</i>: una herramienta de c&oacute;digo abierto para la modelaci&oacute;n       de sistemas din&aacute;micos </b></font>   </center> </p>     <p>       <center><font size="3">     <b>System Solver: an open source tool       for mathematically modelling dynamical systems </b></font>   </center> </p>     <p><b>Efra&iacute;n   Dom&iacute;nguez<sup>1</sup>, Felipe Ardila<sup>2</sup> y Santiago Bustamante<sup>3</sup></b></p>     <p><sup>1</sup> Ingeniero   Hidr&oacute;logo. M.Sc., en ecolog&iacute;a hidrometeorologia. Ph.D., en ciencias t&eacute;cnicas.   Universidad Javeriana, Bogot&aacute;, Colombia. <a href="mailto:e.dominguez@javeriana.edu.co">e.dominguez@javeriana.edu.co</a></p>     <p><sup>2</sup> Ingeniero   de Ssitemas, Universidad Distrital. Estudiante de M.Sc., en Hidrosistemas,   Universidad Javeriana, Bogot&aacute;, Colombia. Instituto Geof&iacute;sico. <a href="mailto:felipeardilac@gmail.com">felipeardilac@gmail.com</a>.</p>     <p><sup>3</sup> Pregrado, Universidad Javeriana,   Bogot&aacute;, Colombia. <a href="mailto:santiagobus@gmail.com">santiagobus@gmail.com</a></p> <hr size = "1">     <p><b>RESUMEN </b></p>     ]]></body>
<body><![CDATA[<p>En   este art&iacute;culo se presenta una herramienta de c&oacute;digo abierto para la simulaci&oacute;n   de sistemas din&aacute;micos, representados a trav&eacute;s de ecuaciones diferenciales de   distinto orden o de sistemas de ecuaciones diferenciales ordinarias (EDO). La   idea principal que incentiv&oacute; el desarrollo de esta herramienta consiste en que   muchos procesos f&iacute;sicos, biol&oacute;gicos, ecol&oacute;gicos, econ&oacute;micos, qu&iacute;micos y   sociales, y un sinn&uacute;mero de problemas ingenieriles, pueden ser expresados de   esta forma. Adicionalmente, la soluci&oacute;n de ese tipo de problemas exige experticia   en m&eacute;todos num&eacute;ricos y programaci&oacute;n. Este tipo de experticia no es muy com&uacute;n   para los expertos de las &aacute;reas mencionadas; por ello, se requiere de una   herramienta que permita sortear esta falta de experticia e incrementar la   productividad en trabajos relacionados con t&oacute;picos de modelaci&oacute;n. <i>System-Solver</i> es una aplicaci&oacute;n que facilita la formulaci&oacute;n de problemas de valor inicial en   EDO y su soluci&oacute;n num&eacute;rica, y mediante un programa en <i>Visual Basic</i> la   automatiza. El programa obtenido se puede compartir f&aacute;cilmente con otros   investigadores, facilitando la reproducci&oacute;n del ejercicio de modelaci&oacute;n incluso   en diferentes sistemas operativos. La presentaci&oacute;n del <i>software</i> est&aacute;   acompa&ntilde;ada con ejercicios de diversas &aacute;reas tem&aacute;ticas, incluyendo un ejemplo de   modelaci&oacute;n estoc&aacute;stica.</p>     <p><b>Palabras   claves</b>: ODE <i>Solver</i>,   diferenciaci&oacute;n por computadoras, modelaci&oacute;n, sistema din&aacute;micos.</p> <hr size = "1">     <p><b>ABSTRACT</b></p>     <p>The following paper presents a freeware modelling tool simulating   dynamic systems that can be represented by either an ordinary differential   equation (ODE) or a set of differential equations of different orders. The main   idea leading to this software development is related to the fact that many   physical, biological, ecological, economical, chemical, social and engineering   problems can be expressed in this way. Furthermore, the solution to these   problems requires some expertise in numerical methods and programming. Such   knowledge is uncommon in some of the experts in such scientific domains. A tool   to fill in this knowledge gap, increase productivity within modelling-related   research and support the teaching of mathematical modelling topics is thus needed.   This paper introduces System Solver, a computer application that facilitates the   formulation of initial value problems for ODE systems, numerically solves these   problems and provides a user with not only the solution but also debugged Visual   Basic source code for the application. The obtained code can be easily shared among   researchers, which facilitates the replication of numerical experiments even across   different operating systems. This software's introduction is accompanied by examples   from different domains, including one example from stochastic modelling.</p>     <p><b>Keywords</b>: ODE solver, computational   differentiation, modelling, dynamical system.</p> <hr size = "1">     <p>Recibido:   junio 23 de 2009    <br>   Aceptado:   noviembre 15 de 2010</p>     <p><font size="3"><b>Introducci&oacute;n</b></font></p>     <p> Muchos   problemas del mundo real pueden ser estudiados utilizando modelaci&oacute;n   matem&aacute;tica. El operador diferencial es una herramienta matem&aacute;tica ampliamente   utilizada para describir procesos f&iacute;sicos, biol&oacute;gicos, ecol&oacute;gicos, etc&eacute;tera.   Usualmente el problema en estudio se describe a trav&eacute;s de una EDO de orden r o a trav&eacute;s de un sistema de EDO. Y   con frecuencia la soluci&oacute;n de esa ecuaci&oacute;n, o sistema de ecuaciones, se   establece con la aplicaci&oacute;n de m&eacute;todos num&eacute;ricos. Los interesados en solucionar   num&eacute;ricamente un modelo matem&aacute;tico deben estar familiarizados con lenguajes de   programaci&oacute;n y algoritmos num&eacute;ricos. Sin esta experiencia el proceso de   investigaci&oacute;n del modelo matem&aacute;tico se retrasa hasta que haya disponibilidad de   un especialista en las &aacute;reas mencionadas.</p>     <p>La   integraci&oacute;n autom&aacute;tica de sistemas de EDO siempre ha sido un tema de inter&eacute;s   para la comunidad cient&iacute;fica. El desarrollo de esta tem&aacute;tica comenz&oacute; en 1970 (Moore, 1979). Tolsma y Barton (1998) sugieren cinco aproximaciones para la derivaci&oacute;n   computacional: 1) codificaci&oacute;n manual, 2) aproximaci&oacute;n por diferencias finitas,   3) derivaci&oacute;n simb&oacute;lica, 4) aplicaci&oacute;n de la notaci&oacute;n polaca inversa (RPN, por   su sigla en ingl&eacute;s) (Bardsley y Prasad, 1997), 5) diferenciaci&oacute;n autom&aacute;tica. Iri (1991) postul&oacute; los prerrequisitos de un buen m&eacute;todo de integraci&oacute;n:   debe ser r&aacute;pido, libre de error de truncamiento y preferiblemente aplicado en   forma autom&aacute;tica. Adicionalmente, se requiere a&ntilde;adir otro prerrequisito: el   m&eacute;todo a utilizar debe permitir su generalizaci&oacute;n a sistemas de cualquier   complejidad. De los m&eacute;todos enunciados, el quinto y el sexto cumplen con casi   todos los requerimientos planteados. El error de truncamiento se mantiene   presente en el segundo m&eacute;todo. El quinto m&eacute;todo requiere alta intervenci&oacute;n del   usuario, quien debe programar un procedimiento inicial para iniciar la   integraci&oacute;n de un sistema de EDO concreto. Adicionalmente, la diferenciaci&oacute;n   autom&aacute;tica puede requerir alg&uacute;n esfuerzo de adaptaci&oacute;n de c&oacute;digo para resolver   problemas planteados en forma discreta (tabulada). Los m&eacute;todos mencionados se   aplican en la soluci&oacute;n de problemas de modelaci&oacute;n para variadas &aacute;reas   cient&iacute;ficas, y usualmente todas estas t&eacute;cnicas son estudiadas en cursos estandarizados   de modelamiento matem&aacute;tico. En el mercado hay una cantidad considerable de   programas especializados en la soluci&oacute;n de sistemas de EDO. La mayor&iacute;a de &eacute;stos   son de licencia privativa y se pueden acceder s&oacute;lo compr&aacute;ndolos y generalmente   no son transparentes para el usuario en el sentido de los algoritmos utilizados,   ya que no proveen libre acceso al c&oacute;digo fuente de los algoritmos preprogramados   en ellos.</p>     ]]></body>
<body><![CDATA[<p>Este art&iacute;culo ofrece los fundamentos   te&oacute;ricos, m&eacute;todos, algoritmos, y la implementaci&oacute;n de un programador autom&aacute;tico   de soluciones num&eacute;ricas para sistemas de EDO. Dicho sistema de modelaci&oacute;n   implementa los m&eacute;todos expl&iacute;citos de Euler y Runge–Kutta y exporta la soluci&oacute;n   num&eacute;rica para visualizaci&oacute;n en <i>Scilab</i> o <i>Matlab</i>. Tal aplicaci&oacute;n   representa la primera versi&oacute;n de un sistema de modelamiento que implementa la   generaci&oacute;n autom&aacute;tica de programas que resuelven ecuaciones deferenciales para   el estudio de sistemas complejos.  </p>     <p><i>System–Solver</i> es una herramienta de distribuci&oacute;n gratuita, recomendada para personas que   quieren resolver EDO en forma num&eacute;rica pero que no son programadores. Su aplicaci&oacute;n   es m&aacute;s f&aacute;cil de usar que programas como <i>Matlab</i> porque no requiere   conocimientos de programaci&oacute;n, usa pocos comandos y est&aacute; dise&ntilde;ada   espec&iacute;ficamente para resolver sistemas de EDO. <i>System-Solver</i> es un <i>software</i> pedag&oacute;gico de alta calidad para la introducci&oacute;n al mundo de la modelaci&oacute;n. La   ventaja de usarlo en lugar de los bien conocidos <i>Matlab, Scilab</i> u <i>Octave</i> consiste en su dise&ntilde;o, orientado a la ense&ntilde;anza. Este dise&ntilde;o permite   desarrollar habilidades programadoras y de modelaci&oacute;n matem&aacute;tica a la vez. Otra   ventaja potencial reside en la posibilidad de escoger el lenguaje de   programaci&oacute;n que el usuario desea aprender y utilizar para compartir los   programas de los sistemas modelados. Dicha habilidad ser&aacute; habilitada en la   siguiente versi&oacute;n del paquete.  </p>     <p><i>System-Solver</i> se cre&oacute; en Java utilizando una   librer&iacute;a especializada llamada <i>Qt Jambi</i>, una tecnolog&iacute;a con soporte   oficial para programadores que desean crear interfaces gr&aacute;ficas muy ricas   aplicando c&oacute;digo en lenguaje Java.</p>     <p>Comparado   con herramientas de modelamiento conceptual como <i>Stella</i>, <i>Powersim</i>, <i>Simile</i> o <i>Vensim</i>, <i>System-Solver</i> explica en forma m&aacute;s clara   los conceptos b&aacute;sicos en modelaci&oacute;n. De hecho, un usuario puede ver las EDO que   explican el sistema que se modela, y tambi&eacute;n tiene el control total del c&oacute;digo   num&eacute;rico desarrollado para el sistema en estudio. El dise&ntilde;o de problemas   n-dimensionales en modelamiento conceptual puede ser problem&aacute;tico a trav&eacute;s de   la representaci&oacute;n visual del diagrama para el problema propuesto. La estructura   de <i>System–Solver </i>fue dise&ntilde;ada para permitir la configuraci&oacute;n amigable de   sistemas n-dimensionales, de modo que se facilite la modelaci&oacute;n de sistemas   distribuidos.</p>     <p><font size="3"><b>Estructura de System-Solver </b></font></p>     <p>Se   propone la siguiente notaci&oacute;n:</p>     <p>       <center>     <img src="img/revistas/iei/v30n3/v30n3a15e01.jpg">   </center> </p>     <p>El   sistema (1) sugiere un algoritmo c&iacute;clico que aplique un m&eacute;todo num&eacute;rico (Euler o Runge-Kutta en nuestro   caso) n-veces para encontrar el   vector y (&#1041;&#1086;&#1075;&#1083;&#1072;&#1077;&#1074;,   1990). <i>System-Solver</i> implementa un esquema de diferencias finitas expl&iacute;citas de Euler como el   siguiente:</p>     <p>       ]]></body>
<body><![CDATA[<center>     <img src="img/revistas/iei/v30n3/v30n3a15e02.jpg">   </center> </p>     <p>Tambi&eacute;n   es posible seleccionar un esquema expl&iacute;cito de Runge-Kutta de cuarto orden de   la forma:</p>     <p>       <center>     <img src="img/revistas/iei/v30n3/v30n3a15e03.jpg">   </center> </p>     <p>En ambas ecuaciones &#91;(2) y (3)&#93;, n<sub>i</sub><sup>j</sup> representa   un error inducido por el truncamiento de las derivadas de alto orden en la   serie de Taylor durante la deducci&oacute;n de las diferencias finitas para la EDO j. De hecho, n<sub>i</sub>&rarr;0 si &Delta;x&rarr;0. Los esquemas (1) y (2) son   expl&iacute;citos, y su desempe&ntilde;o depende fuertemente del tama&ntilde;o del paso &Delta;x. El &iacute;ndice i fija el nodo x que est&aacute; siendo evaluado. </p>     <p>Para un programador experimentado es   f&aacute;cil reconocer un comportamiento gen&eacute;rico en las ecuaciones (1), (2) y (3) para   la soluci&oacute;n de un sistema de EDO. Tambi&eacute;n se debe tener una rutina para evaluar y<sup>j</sup><sub>i+1</sub> (procedimiento 3 en la <a href="#fig01">Figura 1</a>),   y la parte derecha de la ecuaci&oacute;n (1) debe resolverse con un procedimiento   externo (2 en la <a href="#fig01">Figura 1</a>). La configuraci&oacute;n de condiciones iniciales, del   intervalo de soluci&oacute;n, los coeficientes de la EDO y el paso de integraci&oacute;n (&Delta;x deben ser especificados. Esto   puede realizarse al comienzo de los c&aacute;lculos (procedimiento 1 en la <a href="#fig01">Figura 1</a>). Para   resolver la funci&oacute;n de la parte derecha se implement&oacute; un procedimiento   parcelador de ecuaciones que permite identificar las variables requeridas y los   par&aacute;metros de la EDO. Estos par&aacute;metros tambi&eacute;n pueden ser funci&oacute;n del tiempo o   de las variables de estado del sistema (1).</p>     <p>       <center>     <a name="fig01"><img src="img/revistas/iei/v30n3/v30n3a15f01.jpg"></a>   </center> </p>     <p>En   la <a href="#fig02">Figura 2</a> se muestra la estructura b&aacute;sica de <i>System-Solver</i>. Esta   estructura propone una interface para configurar la cantidad de ecuaciones en   el sistema de EDO y campos para las expresiones que definen las funciones de la   parte derecha de las EDO. Un m&eacute;todo llamado "Solve" activa la traslaci&oacute;n de la   notaci&oacute;n algebraica hacia la notaci&oacute;n de registro polaco inverso (RPN). De la   cadena de caracteres RPN se deducen y clasifican los par&aacute;metros, las variables independientes   y variables de estado, que son insertados en una plantilla de c&oacute;digo preparado   previamente. La primera plantilla (RPEvaluator) eval&uacute;a las funciones de la parte   derecha.</p>     <p>       ]]></body>
<body><![CDATA[<center>     <a name="fig02"><img src="img/revistas/iei/v30n3/v30n3a15f02.jpg"></a>   </center> </p>     <p>Una   vez se rellena la plantilla RPEvaluator con el n&uacute;mero correcto de variables y   los par&aacute;metros requeridos por la EDO, se completa otra plantilla con el   intervalo de discretizaci&oacute;n, vectores de condiciones iniciales y el n&uacute;mero de   pasos en el tiempo. EDOSystem es la implementaci&oacute;n del diagrama de flujo   presentado en la <a href="#fig01">Figura 1</a>. Este procedimiento es el subprograma principal que   invoca una instancia de RPEvaluator, el cual retorna un vector soluci&oacute;n para   las funciones de la parte derecha requerido por los subprocedimientos Runge-Kutta   o Euler y se crea una nueva evaluaci&oacute;n de  y<sup>j</sup><sub>i+1</sub> para   cada nodo de tiempo x.</p>     <p>Como   ejemplo, se examinan algunos sistemas din&aacute;micos y se compara el c&oacute;digo generado   por <i>System-Solver </i>contra el c&oacute;digo escrito a mano por un programador.   Consid&eacute;rese un sistema predador-presa del siguiente tipo:</p>     <p>       <center>     <img src="img/revistas/iei/v30n3/v30n3a15e04.jpg">   </center> </p>     <p>Donde r y q son   los coeficientes de crecimiento, mientras que ay b son las tasas de beneficio por   ataque del predador y la tasa de perjuicio de la presa, respectivamente.</p>     <p>Dadas   las siguientes condiciones iniciales,</p>     <p>       <center>     <img src="img/revistas/iei/v30n3/v30n3a15e05.jpg">   </center> </p>     <p>Un modelador experimentado   encontrar&iacute;a la soluci&oacute;n num&eacute;rica de (4) utilizando el m&eacute;todo de Euler.</p>     ]]></body>
<body><![CDATA[<p>Siguiendo   la estructura propuesta en la <a href="#fig01">Figura 1</a>, el procedimiento Sistema_ODE_Euler es   equivalente al procedimiento 1 en la <a href="#fig01">Figura 1</a>; el procedimiento de la subderecha   (…) equivale al procedimiento 2, y el subprograma Euler (…) eval&uacute;a x<sub>t+1 </sub>y y<sub>t+1</sub> (procedimiento   3 en la <a href="#fig01">Figura 1</a>).</p>     <p>Para resolver el mismo problema en <i>System-Solver </i>se debe configurar el sistema EDO a&ntilde;adiendo cada ecuaci&oacute;n usando la   notaci&oacute;n algebraica com&uacute;nmente aplicada en hojas de c&aacute;lculo para definir f&oacute;rmulas.   El orden del sistema EDO est&aacute; limitado s&oacute;lo por las capacidades computacionales   del ordenador. La <a href="#fig02">Figura 2</a> describe la ventana principal de <i>System-Solver</i>.   Esta aplicaci&oacute;n ofrece una interface amigable incluso para investigadores con   m&iacute;nima experiencia en modelaci&oacute;n, m&eacute;todos num&eacute;ricos y programaci&oacute;n. La   configuraci&oacute;n de un modelo requiere no m&aacute;s de un par de minutos. El   investigador debe invertir su tiempo encontrando las ecuaciones necesarias para   su sistema, definiendo los valores de los par&aacute;metros en estas ecuaciones e   interpretando resultados, en lugar de gastarlo definiendo, codificando y   depurando el c&oacute;digo de un algoritmo num&eacute;rico.</p>     <p>Para el caso del modelo predador-presa   (ecuaci&oacute;n 4), <i>System-Solver </i>genera el c&oacute;digo en <i>Visual Basic</i>, que   se puede consultar en <a href="http://www.mathmodelling.org/home/system-solver-1" target="_blank">http://www.mathmodelling.org/home/system-solver-1</a>.</p>     <p>El c&oacute;digo <i>Visual Basic</i> generado por <i>System-Solver </i>puede ser copiado directamente en un m&oacute;dulo <i>Visual   Basic</i> de <i>Microsoft Excel</i> para ser utilizado como un macro guardado   directamente en un libro de <i>Excel</i>. El c&oacute;digo generado tambi&eacute;n puede ser   preparado para el compilador de <i>Microsoft Visual Basic</i> (versi&oacute;n <i>Stand     Alone</i>). Una versi&oacute;n gratuita de este compilador se puede obtener desde el   sitio <i>web</i> <a href="http://www.microsoft.com" target="_blank">http://www.microsoft.com</a>. Adicionalmente, el proyecto de   c&oacute;digo abierto "Mono" financiado por <i>Novell</i> incluye un compilador de <i>Visual     Basic</i>, con entorno de desarrollo integrado, que puede ser ejecutado en   diferentes sistemas operativos, incluyendo: <i>Linux, Mac OS X, Sun Solaris,     BSD - OpenBSD, FreeBSD, NetBSD</i> y <i>Microsoft Windows</i>. (M&aacute;s informaci&oacute;n   sobre el proyecto "Mono", en: <a href="http://www.mono-project.com" target="_blank">http://www.mono-project.com</a>).</p>     <p>Si el c&oacute;digo generado por <i>System-Solver </i>es preparado para la versi&oacute;n <i>Stand Alone</i> del compilador de <i>Microsoft   Visual Basic</i>, se deber&aacute; editar el c&oacute;digo para implementar procedimientos de   pre y posprocesamiento. Independientemente de la plataforma para la cual fue   generado el c&oacute;digo, las herramientas <i>Scilab</i> y <i>Matlab</i> ofrecen una   opci&oacute;n de posprocesamiento. <i>System-Solver </i>puede guardar los resultados   del experimento num&eacute;rico en formato ASCII y generar autom&aacute;ticamente el <i>script</i> que realizar&aacute; la salida gr&aacute;fica en los entornos de <i>Scilab</i> o <i>Matlab</i>. </p>     <p>Muchos   problemas de modelaci&oacute;n incluyen sistemas de tres o m&aacute;s EDO para describir los   sistemas reales que se estudian. Estos sistemas multidimensionales requieren   gr&aacute;ficas 3D para el posprocesamiento. En este caso <i>System-Solver </i>ofrece   una opci&oacute;n para exportar resultados, la cual los prepara para ser procesados   con <i>Scilab</i> o <i>Matlab</i>. La soluci&oacute;n discreta se guarda en un archivo   de texto y luego se importa en <i>Scilab</i> o <i>Matlab</i> con un <i>script </i>generado   por <i>System-Solver. </i>Para examinar esta opci&oacute;n se resuelve el siguiente   sistema predador-presa 3-dimensional (S&aacute;ez et al., 2007):</p>     <p>       <center>     <img src="img/revistas/iei/v30n3/v30n3a15e06.jpg">   </center> </p>     <p>Con   las siguientes condiciones iniciales:</p>     <p>       ]]></body>
<body><![CDATA[<center>     <img src="img/revistas/iei/v30n3/v30n3a15e07.jpg">   </center> </p>     <p>y   utilizando los siguientes par&aacute;metros: a=1.5, b=5.0, c=8.0,q=1.0, f=0.16, g=0.1, w=1.1 , l=2.0, m=0.16, &Delta;t=0.1, t<sub>min</sub>=0,t<sub>max</sub>=500. Desarrollando esta configuraci&oacute;n   en <i>System-Solver </i>se obtiene el c&oacute;digo Visual Basic presentado en la <a href="#fig02">Figura 2</a>.</p>     <p>La   funci&oacute;n "export" de <i>System-Solver</i> guarda los resultados y genera un <i>script</i> de <i>Scilab</i> en una ubicaci&oacute;n seleccionada por el usuario. El <i>script</i> generado por <i>System-Solver</i> se presenta en la <a href="#fig03">Figura 3</a>.</p>     <p>       <center>     <a name="fig03"><img src="img/revistas/iei/v30n3/v30n3a15f03.jpg"></a>   </center> </p>     <p>Cargando   y ejecutando este <i>script</i> en el entorno de <i>Scilab, </i>se produce la   gr&aacute;fica presentada en la <a href="#fig04">Figura 4</a>.</p>     <p>       <center>     <a name="fig04"><img src="img/revistas/iei/v30n3/v30n3a15f04.jpg"></a>   </center> </p>     <p><font size="3"><b>Conclusiones</b></font></p>     <p>Los   ejemplos presentados aqu&iacute; muestran que el primer prototipo de <i>System-Solver </i>es   capaz de manejar problemas EDO de diferente complejidad. Esta versi&oacute;n puede   generar programas de soluciones num&eacute;ricas eficientes y tiene herramientas para   exportar los resultados de los experimentos num&eacute;ricos a <i>Scilab</i> o <i>Matlab</i>,   habilitando posprocesamiento 3D de los resultados. Esa aplicaci&oacute;n ofrece una   herramienta &uacute;til para el modelamiento de sistemas representados por conjuntos   de EDO, acelerando la investigaci&oacute;n relacionada a sistemas de EDO. <i>System-Solver</i> tambi&eacute;n puede acompa&ntilde;ar los esfuerzos de ense&ntilde;anza en curso de modelaci&oacute;n   matem&aacute;tica, programaci&oacute;n y m&eacute;todos num&eacute;ricos. Usar <i>System-Solver</i> cierra   el ciclo de definici&oacute;n del modelo matem&aacute;tico, desarrollo del algoritmo num&eacute;rico   y codificaci&oacute;n del programa para la simulaci&oacute;n de un sistema din&aacute;mico (Samarsky y Mikhailov, 1997).</p>     ]]></body>
<body><![CDATA[<p> La   facilidad de <i>System-Solver</i> para aplicar el m&eacute;todo de Euler, o el de   Runge-Kutta de cuarto orden, permite la exploraci&oacute;n de sus propiedades para el   sistema de EDO investigado.</p>     <p><i>SystemSolver</i> se desarrolla como herramienta   multiplataforma. Se proyecta que las futuras versiones generen c&oacute;digo para diversos   compiladores como: <i>C#, C++, Java, Object Oriented Pascal, Component Pascal</i> y <i>Fortran</i>. En este momento el c&oacute;digo generado se escribe para   compiladores de <i>Visual Basic</i> (como el incluido en las aplicaciones de <i>MS     Office</i>). Un compilador de <i>Visual Basic</i> est&aacute; disponible en el   proyecto "Mono", por ello el c&oacute;digo <i>Visual Basic </i>generado por <i>System-Solver</i> tambi&eacute;n puede ser ejecutado en <i>Linux</i> y otros sistemas operativos. Una   versi&oacute;n beta de <i>System-Solver </i>puede descargarse gratuitamente desde: <a href="http://www.mathmodelling.org/home/system-solver-1" target="_blank">http://www.mathmodelling.org/home/system-solver-1</a>.</p>     <p>Se proyecta que distintos algoritmos   num&eacute;ricos de soluci&oacute;n de sistemas EDO, incluidos algoritmos para ecuaciones   r&iacute;gidas, ser&aacute;n implementados en <i>System-Solver</i> en el futuro cercano.   Algoritmos para la soluci&oacute;n de ecuaciones diferenciales estoc&aacute;sticas est&aacute;n   siendo asimilados. Las sugerencias con requerimientos de los usuarios de <i>System-Solver</i> tambi&eacute;n son bienvenidas. </p>     <p><font size="3"><b>Bibliograf&iacute;a</b></font> </p>     <!-- ref --><p>Bardsley, W.G., Prasad, N.,  Using ASCII text files in post-fix notation (reverse Polish) to define  mathematical models and systems of differential equations for simulation and  non-linear regression., Computers &amp; Chemistry, 21(2), 1997, pp. 71-82.</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000077&pid=S0120-5609201000030001500001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Iri, M., History of automatic differentiation and rounding error  estimation., Automatic differentiation of algorithms: Theory, implementation  and application. SIAM, Philadelphia, PA., 1991.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000078&pid=S0120-5609201000030001500002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Moore, R.E., Methods and applications of interval analysis., SIAM  Publications, Philadelphia, 1979.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000079&pid=S0120-5609201000030001500003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Saez, E., Stange, E., Szanto, I., Chaotic Dynamics and Coexistence in an  Interaction Model Between Three Species., Universidad T&eacute;cnica Federico  Santa Mar&iacute;a - Departamento de Matem&aacute;ticas, 2007, pp. 5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000080&pid=S0120-5609201000030001500004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Samarsky, A., Mikhailov, A., P., Matematicheskoie  modelirovanie: Idei, metodi, primieri., Nauka, Moscow, 1997, 316 pp.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000081&pid=S0120-5609201000030001500005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Tolsma, J.E., Barton, P.I., On computational  differentiation., Computers &amp; Chemical Engineering, 22(4-5), 1998, pp. 475-490.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000082&pid=S0120-5609201000030001500006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bardsley]]></surname>
<given-names><![CDATA[W.G]]></given-names>
</name>
<name>
<surname><![CDATA[Prasad]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Using ASCII text files in post-fix notation (reverse Polish) to define mathematical models and systems of differential equations for simulation and non-linear regression]]></article-title>
<source><![CDATA[Computers & Chemistry]]></source>
<year>1997</year>
<volume>21</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>71-82</page-range></nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Iri]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[History of automatic differentiation and rounding error estimation.]]></article-title>
<source><![CDATA[Automatic differentiation of algorithms: Theory, implementation and application]]></source>
<year>1991</year>
<publisher-loc><![CDATA[Philadelphia^ePA PA]]></publisher-loc>
<publisher-name><![CDATA[SIAM]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Moore]]></surname>
<given-names><![CDATA[R.E]]></given-names>
</name>
</person-group>
<source><![CDATA[Methods and applications of interval analysis]]></source>
<year>1979</year>
<publisher-loc><![CDATA[Philadelphia ]]></publisher-loc>
<publisher-name><![CDATA[SIAM Publications]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Saez]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Stange]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Szanto]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<source><![CDATA[Chaotic Dynamics and Coexistence in an Interaction Model Between Three Species]]></source>
<year>2007</year>
<page-range>5</page-range><publisher-name><![CDATA[Universidad Técnica Federico Santa María - Departamento de Matemáticas]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Samarsky]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Mikhailov]]></surname>
<given-names><![CDATA[A., P]]></given-names>
</name>
</person-group>
<source><![CDATA[Matematicheskoie modelirovanie: Idei, metodi, primieri]]></source>
<year>1997</year>
<page-range>316 pp</page-range><publisher-loc><![CDATA[Moscow ]]></publisher-loc>
<publisher-name><![CDATA[Nauka]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tolsma]]></surname>
<given-names><![CDATA[J.E]]></given-names>
</name>
<name>
<surname><![CDATA[Barton]]></surname>
<given-names><![CDATA[P.I]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[On computational differentiation]]></article-title>
<source><![CDATA[Computers & Chemical Engineering]]></source>
<year>1998</year>
<volume>22</volume>
<numero>4-5</numero>
<issue>4-5</issue>
<page-range>475-490</page-range></nlm-citation>
</ref>
</ref-list>
</back>
</article>
