{"id":8763,"date":"2023-01-24T14:00:57","date_gmt":"2023-01-24T19:00:57","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/analisisnumerico\/?p=8763"},"modified":"2026-04-05T20:45:33","modified_gmt":"2026-04-06T01:45:33","slug":"s2eva2022paoii_t2-edo-poblacion-de-protestantes-en-una-sociedad","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s2eva30\/s2eva2022paoii_t2-edo-poblacion-de-protestantes-en-una-sociedad\/","title":{"rendered":"s2Eva2022PAOII_T2 EDO - poblaci\u00f3n de protestantes en una sociedad"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-2eva30\/2eva2022paoii_t2-edo-poblacion-protestantes-sociedad\/\" data-type=\"post\" data-id=\"8758\">2Eva2022PAOII_T2 EDO - poblaci\u00f3n de protestantes en una sociedad<\/a><\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\delta}{\\delta t}x(t) = b x(t) - d (x(t))^2<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\delta}{\\delta t}y(t) = b y(t) - d (y(t))^2 +r b (x(t)-y(t))<\/span>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>simplificando la nomenclatura<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x' = b x - d x^2 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y' = b y - d y^2 +r b (x-y)<\/span>\n\n\n\n<p>sustituyendo constantes, y considerando x(0)=1 ; y(0)=0.01 ; h=0.5<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x' = 0.02 x - 0.015 x^2 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y' = 0.02 y - 0.015 y^2 +0.1(0.02) (x-y)<\/span>\n\n\n\n<p>el planteamiento de Runge Kutta se hace junto a la primera iteraci\u00f3n, adem\u00e1s de encontrarse en las instrucciones con Python.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Se describen 3 iteraciones usando los resultados de la tabla con el algoritmo, para mostrar la comprensi\u00f3n del algoritmo.<\/p>\n\n\n\n<p>t = 0<br>K1x = 0.5 (0.02 (1) - 0.015 (1)<sup>2<\/sup> = 0.0025<br>K1y = 0.5(0.02 (0.01) - 0.015 (0.01)<sup>2<\/sup> +0.1(0.02) (1-0.01)= 0.001089<\/p>\n\n\n\n<p>K2x = 0.5 (0.02 (1+0.0025) - 0.015 (1+0.0025)<sup>2<\/sup>= 0.00248<br>K2y = 0.5(0.02 (0.01+0.00108) - 0.015 (0.01+0.00108)<sup>2<\/sup>+0.1(0.02) ((1+0.0025)-(0.01+0.00108)) = 0.001101<\/p>\n\n\n\n<p>x<sub>1<\/sub> = 1 + (1\/2)(0.0025+0.00248) = 1.0025<br>y<sub>1<\/sub> = 0.01 + (1\/2)(0.001089+0.001101) = 0.01109<br>t<sub>1<\/sub> = 0 + 0.5 =0.5<\/p>\n\n\n\n<p>t=0.5<br>K1x = 0.5 (0.02 (1.0025) - 0.015 (1.0025)<sup>2<\/sup> = 0.002487<br>K1y = 0.5(0.02 (0.01109) - 0.015 (0.01109)<sup>2<\/sup> +0.1(0.02) (1.0025-0.01109)= 0.001101<\/p>\n\n\n\n<p>K2x = 0.5 (0.02 (1.0025+ 0.002487) - 0.015 (1.0025+ 0.002487)<sup>2<\/sup>= 0.002474<br>K2y = 0.5(0.02 (0.01109+0.001101) - 0.015 (0.01109+0.001101)<sup>2<\/sup>+0.1(0.02) ((1.0025+ 0.002487)-(0.01109+0.001101)) = 0.001113<\/p>\n\n\n\n<p>x<sub>2<\/sub> = 1.0025 + (1\/2)(0.002487+0.002474) = 1.0050<br>y<sub>2<\/sub> = 0.01109 + (1\/2)(0.001101+0.001113) = 0.01220<br>t<sub>2<\/sub> = 0.5 + 0.5 = 1<\/p>\n\n\n\n<p>t=1<br>K1x = 0.5 (0.02 (1.0050) - 0.015 (1.0050)<sup>2<\/sup> = 0.002474<br>K1y = 0.5(0.02 (0.01220) - 0.015 (0.01220)<sup>2<\/sup> +0.1(0.02) (1.0050-0.01220)= 0.001113<\/p>\n\n\n\n<p>K2x = 0.5 (0.02 (1.0050+ 0.002474) - 0.015 (1.0050+ 0.002474)<sup>2<\/sup>= 0.002462<br>K2y = 0.5(0.02 (0.01220+0.001113) - 0.015 (0.01220+0.001113)<sup>2<\/sup>+0.1(0.02) ((1.0050+ 0.002474)-(0.01220+0.001113)) = 0.001126<\/p>\n\n\n\n<p>x<sub>3<\/sub> = 1.0050 + (1\/2)(0.002474+0.002462) = 1.0074<br>y<sub>3<\/sub> = 0.01220 + (1\/2)(0.001113+0.001126) = 0.01332<br>t<sub>3<\/sub> = 1 + 0.5 = 1.5<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resultado con el algoritmo<\/h2>\n\n\n\n<p>Para obtener los datos de las iteraciones, primero se ejecuta el algoritmo para pocas iteraciones.<br>Para la pregunta sobre 200 a\u00f1os, se incrementa las iteraciones a 2 por a\u00f1o y las condiciones iniciales, es decir 401 muestras.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code> &#091; ti, xi, yi]\n &#091; ti, xi, yi]\n&#091;&#091;0.0000e+00 1.0000e+00 1.0000e-02 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00]\n &#091;5.0000e-01 1.0025e+00 1.1095e-02 2.5000e-03 1.0892e-03 2.4875e-03 1.1014e-03]\n &#091;1.0000e+00 1.0050e+00 1.2203e-02 2.4875e-03 1.1014e-03 2.4749e-03 1.1136e-03]\n &#091;1.5000e+00 1.0074e+00 1.3323e-02 2.4749e-03 1.1137e-03 2.4623e-03 1.1260e-03]\n &#091;2.0000e+00 1.0099e+00 1.4455e-02 2.4624e-03 1.1260e-03 2.4497e-03 1.1384e-03]\n &#091;2.5000e+00 1.0123e+00 1.5600e-02 2.4498e-03 1.1384e-03 2.4371e-03 1.1509e-03]\n &#091;3.0000e+00 1.0148e+00 1.6757e-02 2.4371e-03 1.1509e-03 2.4245e-03 1.1634e-03]\n &#091;3.5000e+00 1.0172e+00 1.7926e-02 2.4245e-03 1.1635e-03 2.4118e-03 1.1761e-03]\n &#091;4.0000e+00 1.0196e+00 1.9109e-02 2.4118e-03 1.1761e-03 2.3991e-03 1.1888e-03]\n...\n &#091;1.9950e+02 1.3252e+00 1.1561e+00 ... 1.7202e-03 8.1217e-05 1.7059e-03]\n &#091;2.0000e+02 1.3252e+00 1.1578e+00 ... 1.7060e-03 8.0418e-05 1.6918e-03]\n &#091;2.0050e+02 1.3253e+00 1.1595e+00 ... 1.6919e-03 7.9628e-05 1.6778e-03]]\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<p><strong>Observaci\u00f3n<\/strong>: La poblaci\u00f3n identificada como protestante, continua creciendo, mientras que la proporci\u00f3n de \"conformistas\" se reduce seg\u00fan los par\u00e1metros indicados en el ejercicio. Los valores de natalidad y defunci\u00f3n cambian con el tiempo mucho m\u00e1s en a\u00f1os por otras variables, por lo que se deben realizar ajustes si se pretende extender el modelo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"440\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2023\/01\/2Eva2022PAOII_T2_poblacionprotestantes.png\" alt=\"2Eva2022PAOII_T2 poblaci\u00f3n protestantes\" class=\"wp-image-18375\" \/><\/figure>\n\n\n\n<p>Algoritmo en Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><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\ndef rungekutta2_fg(f,g,t0,x0,y0,h,muestras):\n    tamano = muestras +1\n    tabla = np.zeros(shape=(tamano,7),dtype=float)\n    tabla&#x5B;0] = &#x5B;t0,x0,y0,0,0,0,0]\n    ti = t0\n    xi = x0\n    yi = y0\n    for i in range(1,tamano,1):\n        K1x = h * f(ti,xi,yi)\n        K1y = h * g(ti,xi,yi)\n        \n        K2x = h * f(ti+h, xi + K1x, yi+K1y)\n        K2y = h * g(ti+h, xi + K1x, yi+K1y)\n\n        xi = xi + (1\/2)*(K1x+K2x)\n        yi = yi + (1\/2)*(K1y+K2y)\n        ti = ti + h\n        \n        tabla&#x5B;i] = &#x5B;ti,xi,yi,K1x,K1y,K2x,K2y]\n    tabla = np.array(tabla)\n    return(tabla)\n\n# PROGRAMA ------------------\n\n# INGRESO\n# Par\u00e1metros de las ecuaciones\nb = 0.02\nd = 0.015\nr = 0.1\n\n# Ecuaciones\nf = lambda t,x,y : (b-d*x)*x\ng = lambda t,x,y : (b-d*y)*y + r*b*(x-y)\n\n# Condiciones iniciales\nt0 = 0\nx0 = 1\ny0 = 0.01\n\n# par\u00e1metros del algoritmo\nh = 0.5\nmuestras = 401\n\n# PROCEDIMIENTO\ntabla = rungekutta2_fg(f,g,t0,x0,y0,h,muestras)\nti = tabla&#x5B;:,0]\nxi = tabla&#x5B;:,1]\nyi = tabla&#x5B;:,2]\n\n# SALIDA\nnp.set_printoptions(precision=6)\nprint(' &#x5B; ti, xi, yi, K1x, K1y, K2x, K2y]')\nprint(tabla)\n\n# Grafica tiempos vs poblaci\u00f3n\nimport matplotlib.pyplot as plt\n\nplt.plot(ti,xi, label='xi poblacion')\nplt.plot(ti,yi, label='yi protestante')\n\nplt.title('poblaci\u00f3n y protestantes')\nplt.xlabel('t a\u00f1os')\nplt.ylabel('poblaci\u00f3n')\nplt.legend()\nplt.grid()\nplt.show()\n\n# gr\u00e1fica xi vs yi\nplt.plot(xi,yi)\n\nplt.title('poblaci\u00f3n y protestantes &#x5B;xi,yi]')\nplt.xlabel('x poblaci\u00f3n')\nplt.ylabel('y protestantes')\nplt.grid()\nplt.show()\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 2Eva2022PAOII_T2 EDO - poblaci\u00f3n de protestantes en una sociedad literal a simplificando la nomenclatura sustituyendo constantes, y considerando x(0)=1 ; y(0)=0.01 ; h=0.5 el planteamiento de Runge Kutta se hace junto a la primera iteraci\u00f3n, adem\u00e1s de encontrarse en las instrucciones con Python. literal b Se describen 3 iteraciones usando los resultados de la [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-mn-ejemplo","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[58,54],"class_list":["post-8763","post","type-post","status-publish","format-standard","hentry","category-mn-s2eva30","tag-ejemplos-python","tag-mnumericos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8763","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=8763"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8763\/revisions"}],"predecessor-version":[{"id":23895,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8763\/revisions\/23895"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=8763"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=8763"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=8763"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}