{"id":1959,"date":"2017-09-04T09:15:19","date_gmt":"2017-09-04T14:15:19","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=1959"},"modified":"2026-03-07T09:12:30","modified_gmt":"2026-03-07T14:12:30","slug":"runge-kutta-4to-orden-dy-dx","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u06\/runge-kutta-4to-orden-dy-dx\/","title":{"rendered":"6.2.1 EDO dy\/dx, Runge-Kutta 4to Orden con 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>Runge Kutta <a href=\"#concepto\">4to Orden<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">Funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#video\">Ejercicio<\/a> en video<\/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=\"concepto\">1. EDO&nbsp;<span class=\"wp-katex-eq\" data-display=\"false\"> \\frac{\\delta y}{\\delta x}<\/span>&nbsp;Runge-Kutta 4to Orden<\/h2>\n\n\n\n<p><strong>Referencia<\/strong>: Chapra 25.3.3 p746, Rodr\u00edguez 9.1.8 p358<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"464\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/09\/rungekutta4toorden_01.png\" alt=\"EDO Runge-Kutta 4to Orden Esquema gr\u00e1fico\" class=\"wp-image-13820\" \/><\/figure>\n\n\n\n<p>Para una ecuaci\u00f3n diferencial de primera derivada (primer orden) con una condici\u00f3n de inicio:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\delta y}{\\delta x} + etc =0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y'(x) = f(x_i,y_i)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y(x_0) = y_0 <\/span>\n\n\n\n<p>La f\u00f3rmula de <strong>Runge-Kutta de 4to orden<\/strong> realiza una correcci\u00f3n con 4 valores de K:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y_{i+1} = y_i + \\frac{K_1 + 2K_2 + 2K_3 + K_4}{6} <\/span>\n\n\n\n<p>debe ser equivalente a la serie de Taylor de 5 t\u00e9rminos:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y_{i+1} = y_i + h f(x_i,y_i) + <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + \\frac{h^2}{2!} f'(x_i,y_i) + \\frac{h^3}{3!} f''(x_i,y_i) + <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> +\\frac{h^4}{4!} f'''(x_i,y_i) + O(h^5)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_{i+1} = x_i + h<\/span>\n\n\n\n<p>Runge-Kutta 4do Orden tiene error de truncamiento O(h<sup>5<\/sup>)<\/p>\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>Runge Kutta <a href=\"#concepto\">4to Orden<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">Funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#video\">Ejercicio<\/a> en video<\/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\">2. Ejercicio<\/h2>\n\n\n\n<p>Para el desarrollo anal\u00edtico se tienen las siguientes expresiones para el ejercicio usado en Runge-Kutta de orden 2, que ahora ser\u00e1 con orden 4:<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(x,y) = y' = y -x^2 +x +1 <\/span>\n\n\n\n<p>Se usa las expresiones de Runge-Kutta en orden, K1 corresponde a una correcci\u00f3n de EDO con Taylor de dos t\u00e9rminos (m\u00e9todo de Euler). K2 considera el c\u00e1lculo a medio tama\u00f1o de paso m\u00e1s adelante.<\/p>\n\n\n\n<p><strong>iteraci\u00f3n<\/strong>:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K_1 = h f(x_i,y_i) = 0.1 (y_i -x_i^2 +x_i +1) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K_2 = h f\\Big(x_i+\\frac{h}{2}, y_i + \\frac{K_1}{2} \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K_2 = 0.1 \\Big(\\big(y_i+\\frac{K_1}{2}\\big) -\\big(x_i+\\frac{h}{2}\\big)^2 +\\big(x_i+\\frac{h}{2}\\big) +1 \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K_3 = h f\\Big(x_i+\\frac{h}{2}, y_i + \\frac{K_2}{2} \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K_3 = 0.1 \\Big(\\big(y_i+\\frac{K_2}{2}\\big) -\\big(x_i+\\frac{h}{2}\\big)^2 +\\big(x_i+\\frac{h}{2}\\big) +1 \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K_4 = h f(x_i+h, y_i + K_3 ) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K_4 = 0.1 \\Big((y_i+K_3) -(x_i+h)^2 +(x_i+h) +1 \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y_{i+1} = y_i + \\frac{K_1+2K_2+2K_3+K_4}{6} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_{i+1} = x_i + h <\/span>\n\n\n\n<p>Las iteraciones se dejan como <strong>tarea<\/strong><\/p>\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>Runge Kutta <a href=\"#concepto\">4to Orden<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">Funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#video\">Ejercicio<\/a> en video<\/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\">3. Algoritmo en Python como Funci\u00f3n<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\ndef rungekutta4(d1y,x0,y0,h,muestras, vertabla=False, precision=6):\n    ''' solucion a EDO con Runge-Kutta 4do Orden primera derivada,\n        x0,y0 son valores iniciales, tama\u00f1o de paso h.\n        muestras es la cantidad de puntos a calcular.\n    '''\n    # Runge Kutta de 4do orden\n    tamano = muestras + 1\n    tabla = np.zeros(shape=(tamano,2+4),dtype=float)\n    \n    # incluye el punto &#x5B;x0,y0,K1,K2,K3,K4]\n    tabla&#x5B;0] = &#x5B;x0,y0,0,0,0,0]\n    xi = x0\n    yi = y0\n    for i in range(1,tamano,1):\n        K1 = h * d1y(xi,yi)\n        K2 = h * d1y(xi+h\/2, yi + K1\/2)\n        K3 = h * d1y(xi+h\/2, yi + K2\/2)\n        K4 = h * d1y(xi+h, yi + K3)\n\n        yi = yi + (1\/6)*(K1+2*K2+2*K3 +K4)\n        xi = xi + h\n        \n        tabla&#x5B;i] = &#x5B;xi,yi,K1,K2,K3,K4]\n        \n    if vertabla==True:\n        np.set_printoptions(precision)\n        titulo = ' &#x5B;xi,     yi,     K1,    K2,     K3,     K4 ]'\n        print(' EDO con Runge-Kutta 4do Orden primera derivada')\n        print(titulo)\n        print(tabla)\n    return(tabla)\n<\/pre><\/div>\n\n\n<p>Note que el m\u00e9todo de Runge-Kutta de 4to orden es similar a la regla de Simpson 1\/3. La ecuaci\u00f3n representa un promedio ponderado para establecer la mejor pendiente.<\/p>\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>Runge Kutta <a href=\"#concepto\">4to Orden<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">Funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#video\">Ejercicio<\/a> en video<\/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 entry-title\">4. Ejercicio en video<\/h2>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-eval\/mn-2e20\/2eva2018ti_t1-paracaidista-wingsuit\/\" data-type=\"post\" data-id=\"2250\">2Eva2018TI_T1 Paracaidista wingsuit<\/a><\/p>\n\n\n\n<p>Soluci\u00f3n Propuesta: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-ejemplos\/mn-s2e20\/s2eva2018ti_t1-paracaidista-wingsuit\/\" data-type=\"post\" data-id=\"2256\">s2Eva2018TI_T1 Paracaidista wingsuit<\/a><\/p>\n\n\n\n<p>&nbsp;https:\/\/youtu.be\/c1_vQRhl8Rg<\/p>\n\n\n\n<p>La segunda parte corresponde a Runge-Kutta de 4to Orden<\/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=\"EDO con el m\u00e9todo de  Runge-Kutta 4to Orden con Python - Paracaidista Wingsuit\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/1oAjmvriWc8?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>Runge Kutta <a href=\"#concepto\">4to Orden<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">Funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#video\">Ejercicio<\/a> en video<\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Runge Kutta 4to Orden Ejercicio Funci\u00f3n Ejercicio en video 1. EDO&nbsp;&nbsp;Runge-Kutta 4to Orden Referencia: Chapra 25.3.3 p746, Rodr\u00edguez 9.1.8 p358 Para una ecuaci\u00f3n diferencial de primera derivada (primer orden) con una condici\u00f3n de inicio: La f\u00f3rmula de Runge-Kutta de 4to orden realiza una correcci\u00f3n con 4 valores de K: debe ser equivalente a la serie [&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-1959","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\/1959","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=1959"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1959\/revisions"}],"predecessor-version":[{"id":22752,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1959\/revisions\/22752"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}