{"id":2028,"date":"2017-09-06T09:20:53","date_gmt":"2017-09-06T14:20:53","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=2028"},"modified":"2026-03-24T09:25:35","modified_gmt":"2026-03-24T14:25:35","slug":"sistemas-edo-runge-kutta","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u06\/sistemas-edo-runge-kutta\/","title":{"rendered":"6.4 Sistemas EDO con Runge-Kutta en Python"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>Sistemas EDO<\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ejercicio\">1. Ejercicio - Modelo depredador-presa<\/h2>\n\n\n\n<p><strong>Referencia<\/strong>: Chapra 28.2 p831 pdf855, Rodr\u00edguez 9.2.1 p263<br><a href=\"https:\/\/es.wikipedia.org\/wiki\/Ecuaciones_Lotka%E2%80%93Volterra\">wikipedia.org - Ecuaciones Lotka Volterra<\/a> ,<a href=\"https:\/\/en.wikipedia.org\/wiki\/Lotka%E2%80%93Volterra_equations\">wikipedia.org - Lotka Volterra equations<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"319\" height=\"189\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/predadorpresaLinceConejo01.png\" alt=\"predador presa Lince Conejo\" class=\"wp-image-13837\" \/><\/figure>\n\n\n\n<p>Los modelos depredador-presa y caos descritos en las ecuaciones Lotka-Volterra tienen como variables:<\/p>\n\n\n\n<p>t = tiempo de observaci\u00f3n<br>x = n\u00famero de presas<br>y = n\u00famero de depredadores<br><\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{dx}{dt} = ax - bxy <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{dy}{dt} = -cy + dxy <\/span>\n\n\n\n<p>Los <em><strong>coeficientes<\/strong><\/em> en la ecuaci\u00f3n se describen como:<\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/EdoSistemaRK_presapredador_ani.gif\" alt=\"EDO Sistema Runge-Kutta presa-predador gr\u00e1fica animada\" class=\"wp-image-22953\" \/><\/figure>\n\n\n\n<p>a = raz\u00f3n de crecimiento de la presa, (0.5)<\/p>\n\n\n\n<p>b = efecto de la interacci\u00f3n depredador-presa sobre la muerte de la presa (0.7)<\/p>\n\n\n\n<p>c = raz\u00f3n de muerte del depredador (0.35)<\/p>\n\n\n\n<p>d = efecto de la interacci\u00f3n depredador-presa sobre el crecimiento del depredador, (0.35)<\/p>\n\n\n\n<p>Para el ejercicio, considere como puntos iniciales en la observaci\u00f3n de las especies:<br>t=0, x=2, y=1, h=0.5<\/p>\n\n\n\n<p>Los t\u00e9rminos que multiplican <strong>xy<\/strong> hacen que las ecuaciones sean no lineales.<\/p>\n\n\n\n<p>Observe que la variable tiempo no se encuentra en las expresiones f y g, h se aplica a la variable tiempo.<\/p>\n\n\n\n<p><strong>Referencia<\/strong>: Can You Spot This Leopard Before Its Prey Does? | Nat Geo Wild. Nat Geo Animals. 1 octubre-2017<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Can You Spot This Leopard Before Its Prey Does? | Nat Geo Wild\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/600iuVctfcM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>Sistemas EDO<\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"analitico\">2. Desarrollo anal\u00edtico - paso a paso<\/h2>\n\n\n\n<p>Para resolver el sistema, se plantean las ecuaciones de forma simplificada para el algoritmo:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(t,x,y) = 0.5 x - 0.7 xy <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> g(t,x,y) = -0.35y + 0.35xy <\/span>\n\n\n\n<p>Las expresiones se adaptan al m\u00e9todo de Runge-Kutta para primeras derivadas por cada variable de poblaci\u00f3n. Se deben usar de forma simult\u00e1nea para cada tiempo t.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1x = h f(t,x,y) = 0.5 \\Big( 0.5 x - 0.7 xy \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1y = h g(t,x,y) = 0.5 \\Big(-0.35y + 0.35xy \\Big) <\/span>\n\n\n\n<p>..<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2x = h f(t+h,x+K1x,y+K1y) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = 0.5 \\Big( 0.5 (x+K1x) - 0.7 (x+K1x)(y+K1y) \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2y = h g(t+h,x+K1x,y+K1y) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = 0.5 \\Big(-0.35(y+K1y) + 0.35(x+K1x)(y+K1y) \\Big) <\/span>\n\n\n\n<p>..<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x[i+1] = x[i] + \\frac{K1x+K2x}{2} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y[i+1] = y[i] + \\frac{K1y+K2y}{2} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> t[i+1] = t[i] + h <\/span>\n\n\n\n<p>con lo que se puede aplicar al ejercicio en cada iteraci\u00f3n,dadas las condiciones iniciales. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><strong>itera = 0<\/strong><\/p>\n\n\n\n<p>t = 0, x = 2, y = 1, h = 0.5<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1x = 0.5 f(0,2,1) = 0.5 \\Big( 0.5 (2) - 0.7 (2)(1) \\Big) = -0.2<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1y = 0.5 g(0,2,1) = 0.5 \\Big(-0.35(1) + 0.35(2)(1) \\Big) =0.175 <\/span>\n\n\n\n<p>..<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2x = 0.5 f(0+0.5, 2+(-0.2), 1+0.175) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = 0.5 \\Big( 0.5 (2+(-0.2)) - 0.7 (2+(-0.2))(1+0.175) \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = -0.29025 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2y = 0.5 g(0+0.5, 2+(-0.2), 1+0.175) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = 0.5 \\Big(-0.35(1+0.175) + 0.35(2+(-0.2))(1+0.175) \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">= 0.1645 <\/span>\n\n\n\n<p>..<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x[1] = x[0] + \\frac{K1x+K2x}{2} = 2 + \\frac{-0.2+(-0.29025)}{2} = 1.7548<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y[1] = y[0] + \\frac{K1y+K2y}{2} = 1 + \\frac{0.175+0.1645}{2}= 1.1697 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> t[1] = t[0] + h = 0 +0.5 = 0.5<\/span>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/edoSistemasRK2orden_itera0.gif\" alt=\"EDO Sistemas Runge-Kutta 2orden itera=0 gr\u00e1fica\" class=\"wp-image-22959\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><strong>itera = 1<\/strong><\/p>\n\n\n\n<p>t = 0.5, x = 1.7548, y = 1.1697, h = 0.5<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1x = 0.5 \\Big( 0.5 (0,1.7548) - 0.7 (0,1.7548)(1.1697) \\Big)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = -0.2797<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1y = 0.5 \\Big(-0.35(1.1697) + 0.35(1.7548)(1.1697) \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = 0.1545 <\/span>\n\n\n\n<p>..<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2x = 0.5 \\Big( 0.5 (1.7548+(-0.2797)) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> - 0.7 (1.7548+(-0.2797))(1.1697+0.1545) \\Big) =-0.3149 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2y = 0.5 \\Big(-0.35(1.1697+0.1545) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">+ 0.35(1.7548+(-0.2797))(1.1697+0.1545) \\Big) = 0.1645 <\/span>\n\n\n\n<p>..<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x[2] = 1.7548 + \\frac{-0.2797+(-0.3149)}{2} = 1.4575 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y[2] = 1.1697 + \\frac{0.1545+0.1645}{2} = 1.3020 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> t[2] = t[0] + h = 0.5 +0.5 = 1<\/span>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/edoSistemasRK2orden_itera1.gif\" alt=\"EDO Sistemas Runge-Kutta 2orden itera=1 gr\u00e1fica\" class=\"wp-image-22958\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><strong>itera=2<\/strong><\/p>\n\n\n\n<p>t = 1, x = 1.4575, y = 1.3020, h = 0.5<\/p>\n\n\n\n<p>continuar como tarea ...<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/edoSistemasRK2orden_itera2.gif\" alt=\"EDO Sistemas Runge-Kutta 2orden itera=2 gr\u00e1fica\" class=\"wp-image-22957\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>Sistemas EDO<\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmo\">3. Algoritmo en Python para Sistemas EDO con Runge-Kutta<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Sistemas EDO con Python. Modelo Predador-Presa\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/bM_P6UwmhzQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Planteamiento que se ingresan al algoritmo con el algoritmo <em><strong>rungekutta2_fg<\/strong><\/em>(fx,gx,x0,y0,z0,h,muestras), propuesto en<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/analisisnumerico\/runge-kutta-d2y-dx2\/\">EDO con Runge-Kutta d2y\/dx2<\/a><\/p>\n\n\n\n<p>Al ejecutar el algoritmo se obtienen los siguientes resultados:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Runge-Kutta Segunda derivada\ni  &#091; xi,  yi,  zi ]\n   &#091; K1y,  K1z,  K2y,  K2z ]\n0 &#091;0. 2. 1.]\n   &#091;0. 0. 0. 0.]\n1 &#091;0.5      1.754875 1.16975 ]\n  &#091;-0.2      0.175   -0.29025  0.1645 ]\n2 &#091;1.       1.457533 1.302069]\n  &#091;-0.279749  0.154528 -0.314935  0.11011 ]\n3 &#091;1.5      1.167405 1.373599]\n  &#091;-0.29985   0.104254 -0.280406  0.038807]\n4 &#091;2.       0.922773 1.381103]\n  &#091;-0.26939   0.040241 -0.219874 -0.025233]\n5 &#091;2.5      0.734853 1.33689 ]\n  &#091;-0.215362 -0.018665 -0.160478 -0.069761]\n6 &#091;3.       0.598406 1.258434]\n  &#091;-0.160133 -0.062033 -0.11276  -0.09488 ]\n... <\/code><\/pre>\n\n\n\n<p>Los resultados de la tabla se muestran parcialmente, pues se usaron mas de 100 iteraciones.<\/p>\n\n\n\n<p>Los resultados se pueden observar de diferentes formas:<\/p>\n\n\n\n<p>a) Cada variable x<sub>i<\/sub>, y<sub>i<\/sub> versus t<sub>i<\/sub>, es decir cantidad de animales de cada especie durante el tiempo de observaci\u00f3n<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/edoSistemasRK2orden_itera_n.gif\" alt=\"EDO Sistemas Runge-Kutta 2orden gr\u00e1fica\" class=\"wp-image-22960\" \/><\/figure>\n\n\n\n<p>b) Independiente de la unidad de tiempo, x<sub>i<\/sub> vs y<sub>i<\/sub>, muestra la relaci\u00f3n entre la cantidad de presas y predadores. Relaci\u00f3n que es c\u00edclica y da la forma a la gr\u00e1fica.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/edoSistemasRK2orden_y_vs_z.gif\" alt=\"EDO Sistemas Runge-Kutta 2orden presa vs predador gr\u00e1fica\" class=\"wp-image-22961\" \/><\/figure>\n\n\n\n<p>Las instrucciones del algoritmo en Python usadas en el problema son:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Modelo predador-presa de Lotka-Volterra\n# Sistemas EDO con Runge Kutta de 2do Orden\nimport numpy as np\n\n# INGRESO\n# Par\u00e1metros de las ecuaciones\na = 0.5\nb = 0.7\nc = 0.35\nd = 0.35\n\n# Ecuaciones\nf = lambda t,x,y : a*x -b*x*y\ng = lambda t,x,y : -c*y + d*x*y\n\n# Condiciones iniciales\nt0 = 0\nx0 = 2\ny0 = 1\n\n# par\u00e1metros del algoritmo\nh = 0.5\nmuestras = 101\n\n# Algoritmo como funci\u00f3n\ndef rungekutta2_fg(f,g,x0,y0,z0,h,muestras,\n                   vertabla=False, precision=6):\n    ''' solucion a EDO d2y\/dx2 con Runge-Kutta 2do Orden,\n    f(x,y,z) = z #= y'\n    g(x,y,z) = expresion d2y\/dx2 con z=y'\n    tambien es solucion a sistemas edo f() y g()\n    x0,y0,z0 son valores iniciales, h es tamano de paso,\n    muestras es la cantidad de puntos a calcular.\n    '''\n    tamano = muestras + 1\n    tabla = np.zeros(shape=(tamano,3+4),dtype=float)\n    # incluye el punto &#x5B;x0,y0,z0,K1y,K1z,K2y,K2z]\n    tabla&#x5B;0] = &#x5B;x0,y0,z0,0,0,0,0]\n     \n    xi = x0 # valores iniciales\n    yi = y0\n    zi = z0\n    for i in range(1,tamano,1):\n        K1y = h * f(xi,yi,zi)\n        K1z = h * g(xi,yi,zi)\n         \n        K2y = h * f(xi+h, yi + K1y, zi + K1z)\n        K2z = h * g(xi+h, yi + K1y, zi + K1z)\n \n        yi = yi + (K1y+K2y)\/2\n        zi = zi + (K1z+K2z)\/2\n        xi = xi + h\n         \n        tabla&#x5B;i] = &#x5B;xi,yi,zi,K1y,K1z,K2y,K2z]\n         \n    if vertabla==True:\n        np.set_printoptions(precision)\n        print('EDO f,g con Runge-Kutta 2 Orden')\n        print('i ','&#x5B; xi,  yi,  zi',']')\n        print('   &#x5B; K1y,  K1z,  K2y,  K2z ]')\n        for i in range(0,tamano,1):  \n            txt = ' '\n            if i&gt;=10:\n                txt = '  '\n            print(str(i),tabla&#x5B;i,0:3])\n            print(txt,tabla&#x5B;i,3:])\n     \n    return(tabla)\n\n# PROCEDIMIENTO\ntabla = rungekutta2_fg(f,g,t0,x0,y0,h,\n                       muestras,vertabla=True)\n# SALIDA\nprint('Sistemas EDO: Modelo presa-predador')\n##print('i ','&#x5B; xi,  yi,  zi',']')\n##print('   &#x5B; K1y,  K1z,  K2y,  K2z ]')\n##for i in range(0,tamano,1):  \n##    txt = ' '\n##    if i&gt;=10:\n##        txt = '  '\n##    print(str(i),tabla&#x5B;i,0:3])\n##    print(txt,tabla&#x5B;i,3:])\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>Sistemas EDO<\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"grafica\">4. Gr\u00e1fica en Python<\/h2>\n\n\n\n<p>Los resultados num\u00e9ricos se usan para generar las gr\u00e1ficas presentadas, a\u00f1adiendo las instrucciones:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA ---------------------\nimport matplotlib.pyplot as plt\n \ntitulo = 'Sistemas EDO Runge-Kutta 2ord - Modelo predador-presa'\ni = muestras # iteraci\u00f3n en gr\u00e1fica\n \ntitulo = titulo+', i='+str(i)\nxi = tabla&#x5B;:,0]\nyi = tabla&#x5B;:,1]\nzi = tabla&#x5B;:,2]\nK1y = tabla&#x5B;:,3]\nK1z = tabla&#x5B;:,4]\nK2y = tabla&#x5B;:,5]\nK2z = tabla&#x5B;:,6]\n \nplt.subplot(211)\nplt.plot(xi&#x5B;0],yi&#x5B;0],'o',\n         color='red', label ='&#x5B;t0,y0]')\nif i&lt;20: # evita muchos puntos\n    plt.plot(xi&#x5B;1:i+2],yi&#x5B;1:i+2],'o',\n             color='green', label ='&#x5B;t&#x5B;i],y&#x5B;i]]')\nplt.plot(xi&#x5B;0:i+2],yi&#x5B;0:i+2],\n         color='blue',label='y(t)')\nif i&lt;muestras: # gr\u00e1fica para una iteraci\u00f3n\n    plt.plot(xi&#x5B;i+1],yi&#x5B;i+1],'o',color='orange',\n             label ='&#x5B;x&#x5B;i+1],y&#x5B;i+1]]')\n    plt.plot(xi&#x5B;i:i+3],yi&#x5B;i:i+3],'.',color='gray')\n    plt.plot(xi&#x5B;i:i+2],&#x5B;yi&#x5B;i],yi&#x5B;i]], color='orange',\n             label='h',linestyle='dashed')\n    plt.plot(&#x5B;xi&#x5B;i+1]-0.02*h,xi&#x5B;i+1]-0.02*h],\n             &#x5B;yi&#x5B;i],yi&#x5B;i]+K1y&#x5B;i+1]],\n             color='green',label='K1y',linestyle='dashed')\n    plt.plot(&#x5B;xi&#x5B;i+1]+0.02*h,xi&#x5B;i+1]+0.02*h],\n             &#x5B;yi&#x5B;i],yi&#x5B;i]+K2y&#x5B;i+1]],\n             color='magenta',label='K2y',linestyle='dashed')\n    plt.plot(&#x5B;xi&#x5B;i+1]-0.02*h,xi&#x5B;i+1]+0.02*h],\n             &#x5B;yi&#x5B;i]+K1y&#x5B;i+1],yi&#x5B;i]+K2y&#x5B;i+1]],\n             color='magenta')\nif np.min(yi&#x5B;0:i+1])&lt;0: # linea 0\n    plt.axhline(0, color='red')\nplt.ylabel('y = presa')\nplt.title(titulo)\nplt.legend()\nplt.grid()\nplt.tight_layout()\n \nplt.subplot(212)\nplt.plot(xi&#x5B;0],zi&#x5B;0],'o',\n         color='red', label ='&#x5B;t0,z0]')\nif i&lt;20: # evita muchos puntos\n    plt.plot(xi&#x5B;1:i+2],zi&#x5B;1:i+2],'o',\n             color='green', label ='&#x5B;t&#x5B;i],v&#x5B;i]]')\nplt.plot(xi&#x5B;0:i+2],zi&#x5B;0:i+2],\n         color='green',label='z(t)')\nif i&lt;muestras: # gr\u00e1fica para una iteraci\u00f3n\n    plt.plot(xi&#x5B;i+1],zi&#x5B;i+1],'o',color='orange',\n             label ='&#x5B;t&#x5B;i+1],z&#x5B;i+1]]')\n    plt.plot(xi&#x5B;i:i+3],zi&#x5B;i:i+3],'.',color='gray')\n    plt.plot(xi&#x5B;i:i+2],&#x5B;zi&#x5B;i],zi&#x5B;i]], color='orange',\n             label='h',linestyle='dashed')\n    plt.plot(&#x5B;xi&#x5B;i+1]-0.02*h,xi&#x5B;i+1]-0.02*h],\n             &#x5B;zi&#x5B;i],zi&#x5B;i]+K1z&#x5B;i+1]],\n             color='green',label='K1z',linestyle='dashed')\n    plt.plot(&#x5B;xi&#x5B;i+1]+0.02*h,xi&#x5B;i+1]+0.02*h],\n             &#x5B;zi&#x5B;i],zi&#x5B;i]+K2z&#x5B;i+1]],\n             color='magenta',label='K2z',linestyle='dashed')\n    plt.plot(&#x5B;xi&#x5B;i+1]-0.02*h,xi&#x5B;i+1]+0.02*h],\n             &#x5B;zi&#x5B;i]+K1z&#x5B;i+1],zi&#x5B;i]+K2z&#x5B;i+1]],\n             color='magenta')\n \nplt.xlabel('x = tiempo')\nplt.ylabel('z = predador')\nplt.legend()\nplt.grid()\nplt.tight_layout()\n \n#plt.show() #comentar para la siguiente gr\u00e1fica\n\n# gr\u00e1fica yi vs zi\ntitulo = 'Sistemas EDO Runge-Kutta 2ord - presa vs predador'\ntitulo = titulo+', i='+str(i)\nfig_yz, graf3 = plt.subplots()\ngraf3.plot(yi,zi)\n \ngraf3.set_title(titulo)\ngraf3.set_xlabel('presa')\ngraf3.set_ylabel('predador')\ngraf3.grid()\nplt.show() #comentar para la siguiente gr\u00e1fica\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>Sistemas EDO<\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>El Problema de los Tres Cuerpos, una Visualizaci\u00f3n del CAOS del Cosmos. Mates Mike, 8 febrero 2024.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"El Problema de los Tres Cuerpos, una Visualizaci\u00f3n del CAOS del Cosmos\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/427vNUBNguw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Sistemas EDO Ejercicio Anal\u00edtico Algoritmo gr\u00e1fica 1. Ejercicio - Modelo depredador-presa Referencia: Chapra 28.2 p831 pdf855, Rodr\u00edguez 9.2.1 p263wikipedia.org - Ecuaciones Lotka Volterra ,wikipedia.org - Lotka Volterra equations Los modelos depredador-presa y caos descritos en las ecuaciones Lotka-Volterra tienen como variables: t = tiempo de observaci\u00f3nx = n\u00famero de presasy = n\u00famero de depredadores Los [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-mn-unidades","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[],"class_list":["post-2028","post","type-post","status-publish","format-standard","hentry","category-mn-u06"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2028","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=2028"}],"version-history":[{"count":16,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2028\/revisions"}],"predecessor-version":[{"id":23105,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2028\/revisions\/23105"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=2028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=2028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=2028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}