{"id":3104,"date":"2019-01-03T08:08:07","date_gmt":"2019-01-03T13:08:07","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=3104"},"modified":"2026-08-02T08:06:50","modified_gmt":"2026-08-02T13:06:50","slug":"s2eva2010ti_t2-edo-movimiento-angular","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s2eva10\/s2eva2010ti_t2-edo-movimiento-angular\/","title":{"rendered":"s2Eva2010TI_T2 EDO Movimiento angular"},"content":{"rendered":"\n<p><strong>Ejercicio<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-2eva10\/2eva2010ti_t2-movimiento-angular\/\" data-type=\"post\" data-id=\"734\">2Eva2010TI_T2 EDO Movimiento angular<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"525\" height=\"212\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/11\/columpioCasaArbolBanosEcuador01.png\" alt=\"columpio Casa \u00c1rbol Ba\u00f1os Ecuador\" class=\"wp-image-17315\" style=\"width:645px;height:auto\" \/><\/figure>\n\n\n\n<p>Para resolver, se usa Runge-Kutta_fg de 2do Orden como ejemplo<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y'' + 10 \\sin (y) =0 <\/span>\n\n\n\n<p>Para simplificar a primera derivada se plantea:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y' = z = f(t,y,z) <\/span>\n\n\n\n<p>convirtiendo la ecuaci\u00f3n a:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y'' =z'= -10 \\sin (y) = g(t,y,z) <\/span>\n\n\n\n<p>teniendo como punto de partida t<sub>0<\/sub>=0, y<sub>0<\/sub>=0 y z<sub>0<\/sub>=0.1<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">y(0)=0, y'(0)=0.1 <\/span>\n\n\n\n<p>La tabla inicia como:<\/p>\n\n\n\n<figure class=\"wp-block-table alignwide\"><table><thead><tr><th>i<\/th><th>ti<\/th><th>yi<\/th><th>vi<\/th><th>K1y<\/th><th>K1v<\/th><th>K2y<\/th><th>K2v<\/th><th>K3y<\/th><th>K3v<\/th><th>K4y<\/th><th>K4v<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>0<\/td><td>0<\/td><td>0.1<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td>-<\/td><\/tr><tr><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">itera = 0<\/h3>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1y = 0.1\\left( 0.1\\right) =0.01 <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1v = 0.1\\left( -10 \\sin (0)\\right) =0 <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2y = 0.1\\left( 0.1+\\frac{0}{2}\\right) =0.01<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2v = 0.1\\left( -10 \\sin \\left(0+\\frac{0.01}{2}\\right)\\right) =-0.005<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K3y = 0.1\\left( 0.1+\\frac{-0.005}{2}\\right) =0.0098<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K3v = 0.1\\left( -10 \\sin \\left(0+\\frac{0.01}{2}\\right)\\right) =-0.005<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">K3y = 0.1\\left( 0.1+(-0.005)\\right) =0.0095<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K4v = 0.1\\left( -10 \\sin (0+0.0098)\\right) =-0.0097<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">yi = 0+\\frac{0.01+2(0.01)+2(0.0098)+0.0095}{6}=0.0098 <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">yi = 0.1+\\frac{0+2(-0.005)+2(-0.005)+(-0.0097)}{6}=0.095 <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ti = 0+0.1 = 0.1<\/span>\n\n\n\n<figure class=\"wp-block-table alignwide\"><table><thead><tr><th>i<\/th><th>ti<\/th><th>yi<\/th><th>vi<\/th><th>K1y<\/th><th>K1v<\/th><th>K2y<\/th><th>K2v<\/th><th>K3y<\/th><th>K3v<\/th><th>K4y<\/th><th>K4v<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>0<\/td><td>0<\/td><td>0.1<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>1<\/td><td>0.1<\/td><td>0.0098<\/td><td>0.095<\/td><td>0.01<\/td><td>0<\/td><td>0.01<\/td><td>-0.005<\/td><td>0.0098<\/td><td>-0.005<\/td><td>0.0095<\/td><td>-0.0097<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">itera =1 <\/h3>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1y = 0.1\\left( 0.095\\right) =0.0095 <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K1v = 0.1\\left( -10 \\sin (0.0098)\\right) =-0.0098 <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2y = 0.1\\left( 0.095+\\frac{-0.0098}{2}\\right) =0.009<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> K2v = 0.1\\left( -10 \\sin \\left(0+\\frac{0.0095}{2}\\right)\\right) =-0.0146<\/span>\n\n\n\n<p>...<\/p>\n\n\n\n<p><strong>continua como tarea<\/strong> ..<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ti = 0.1+0.1 = 0.2<\/span>\n\n\n\n<figure class=\"wp-block-table alignwide\"><table><thead><tr><th>i<\/th><th>ti<\/th><th>yi<\/th><th>vi<\/th><th>K1y<\/th><th>K1v<\/th><th>K2y<\/th><th>K2v<\/th><th>K3y<\/th><th>K3v<\/th><th>K4y<\/th><th>K4v<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>0<\/td><td>0<\/td><td>0.1<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td>-<\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>1<\/td><td>0.1<\/td><td>0.0098<\/td><td>0.095<\/td><td>0.01<\/td><td>0<\/td><td>0.01<\/td><td>-0.005<\/td><td>0.0098<\/td><td>-0.005<\/td><td>0.0095<\/td><td>-0.0097<\/td><\/tr><tr><td>2<\/td><td>0.2<\/td><td>0.0187<\/td><td>0.0807<\/td><td>0.0095<\/td><td>-0.0098<\/td><td>0.009<\/td><td>-0.0146<\/td><td>0.0088<\/td><td>-0.0143<\/td><td>0.0081<\/td><td>-0.0186<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Se desarrolla el algoritmo para obtener los valores:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EDO f,g con Runge-Kutta 4 Orden\ni  &#091; xi,  yi,  zi ]\n   &#091; K1y,  K1z,  K2y,  K2z ]\n   &#091; K3y,  K3z,  K4y,  K4z ]\n0 &#091;0.  0.  0.1]\n  &#091;0. 0. 0. 0.]\n  &#091;0. 0. 0. 0.]\n1 &#091;0.1    0.0098 0.095 ]\n  &#091; 0.01  -0.     0.01  -0.005]\n  &#091; 0.0098 -0.005   0.0095 -0.0097]\n2 &#091;0.2    0.0187 0.0807]\n  &#091; 0.0095 -0.0098  0.009  -0.0146]\n  &#091; 0.0088 -0.0143  0.0081 -0.0186]\n3 &#091;0.3    0.0257 0.0583]\n  &#091; 0.0081 -0.0187  0.0071 -0.0227]\n  &#091; 0.0069 -0.0223  0.0058 -0.0256]<\/code><\/pre>\n\n\n\n<p>que permiten generar la gr\u00e1fica de respuesta:<\/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\/2019\/01\/MovimientoAngular01.png\" alt=\"EDO Runge kutta 4Orden Movimiento Angular 01\" class=\"wp-image-25218\" style=\"object-fit:cover\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 2Eva_IT2010_T2 Movimiento angular\n# EDO dy\/dx. Metodo de RungeKutta 4to Orden \n# estima la solucion para muestras espaciadas h en eje x\n# valores iniciales x0,y0\nimport numpy as np\n  \n# INGRESO\nf = lambda t,y,v: v\ng = lambda t,y,v: -10*np.sin(y)\n\nt0 = 0 # condiciones iniciales\ny0 = 0\nv0 = 0.1\nh  = 0.1\nmuestras = 20\n\ndef rungekutta4_fg(fx,gx,x0,y0,z0,h,muestras,\n                   vertabla=False, precision=6):\n    ''' solucion a EDO d2y\/dx2 con Runge-Kutta 4to 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+8),dtype=float)\n    # incluye el punto &#x5B;x0,y0]\n    tabla&#x5B;0] = &#x5B;x0,y0,z0,0,0,0,0,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 * fx(xi,yi,zi)\n        K1z = h * gx(xi,yi,zi)\n         \n        K2y = h * fx(xi+h\/2, yi + K1y\/2, zi + K1z\/2)\n        K2z = h * gx(xi+h\/2, yi + K1y\/2, zi + K1z\/2)\n         \n        K3y = h * fx(xi+h\/2, yi + K2y\/2, zi + K2z\/2)\n        K3z = h * gx(xi+h\/2, yi + K2y\/2, zi + K2z\/2)\n \n        K4y = h * fx(xi+h, yi + K3y, zi + K3z)\n        K4z = h * gx(xi+h, yi + K3y, zi + K3z)\n \n        yi = yi + (K1y+2*K2y+2*K3y+K4y)\/6\n        zi = zi + (K1z+2*K2z+2*K3z+K4z)\/6\n        xi = xi + h\n         \n        tabla&#x5B;i] = &#x5B;xi,yi,zi,K1y,K1z,K2y,K2z,K3y,K3z,K4y,K4z]\n     \n    if vertabla==True:\n        np.set_printoptions(precision)\n        print('EDO f,g con Runge-Kutta 4 Orden')\n        print('i ','&#x5B; xi,  yi,  zi',']')\n        print('   &#x5B; K1y,  K1z,  K2y,  K2z ]')\n        print('   &#x5B; K3y,  K3z,  K4y,  K4z ]')\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:7])\n            print(txt,tabla&#x5B;i,7:])\n \n    return(tabla)\n# PROCEDIMIENTO\ntabla = rungekutta4_fg(f,g,t0,y0,v0,h,muestras,\n                       vertabla=True, precision=4)\n# SALIDA\n# print('tabla de resultados')\n# print(tabla)\n\n# GRAFICA ---------------------\nimport matplotlib.pyplot as plt\n \ntitulo = 'EDO Runge-Kutta 2ord - Movimiento angular'\netiq_x = 't = tiempo'\netiq_y = 'y = altura'\netiq_z = 'v = velocidad'\n \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]')\nplt.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(etiq_y)\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,v0]')\nplt.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='v(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],v&#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.suptitle(titulo)\nplt.xlabel(etiq_x)\nplt.ylabel(etiq_z)\nplt.legend()\nplt.grid()\nplt.tight_layout()\n \nplt.show() #comentar para la siguiente gr\u00e1fica\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 2Eva2010TI_T2 EDO Movimiento angular Para resolver, se usa Runge-Kutta_fg de 2do Orden como ejemplo Para simplificar a primera derivada se plantea: convirtiendo la ecuaci\u00f3n a: teniendo como punto de partida t0=0, y0=0 y z0=0.1 La tabla inicia como: i ti yi vi K1y K1v K2y K2v K3y K3v K4y K4v 0 0 0 0.1 [&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":[47],"tags":[58,54],"class_list":["post-3104","post","type-post","status-publish","format-standard","hentry","category-mn-s2eva10","tag-ejemplos-python","tag-mnumericos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/3104","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=3104"}],"version-history":[{"count":10,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/3104\/revisions"}],"predecessor-version":[{"id":25219,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/3104\/revisions\/25219"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=3104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=3104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=3104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}