{"id":10171,"date":"2017-10-09T07:00:23","date_gmt":"2017-10-09T12:00:23","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/analisisnumerico\/?p=10171"},"modified":"2026-04-04T10:17:49","modified_gmt":"2026-04-04T15:17:49","slug":"edp-graficos-animados-python","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u07\/edp-graficos-animados-python\/","title":{"rendered":"7.4 EDP con gr\u00e1ficos animados en Python"},"content":{"rendered":"\n<p>Solo para fines <strong>did\u00e1cticos<\/strong>, y como complemento para los <strong>ejercicios<\/strong> presentados en la unidad para Ecuaciones Diferenciales Parciales, se presentan las instrucciones para las animaciones usadas en la presentaci\u00f3n de los conceptos y ejercicios.<strong> Los algoritmos para animaci\u00f3n NO son necesarios para realizar los ejercicios<\/strong>, que requieren una parte anal\u00edtica con al menos tres iteraciones en papel y l\u00e1piz. Se lo adjunta como una herramienta did\u00e1ctica de asistencia para las clases.<\/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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/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 entry-title\" id=\"explicito\">1. EDP Parab\u00f3licas m\u00e9todo expl\u00edcito<\/h2>\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\/10\/EDP_ParabolicaAni01.gif\" alt=\"EDP_Parab\u00f3lica gr\u00e1fica Animada\" class=\"wp-image-13862\" \/><\/figure>\n\n\n\n<p><br>resultados del algoritmo<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>M\u00e9todo expl\u00edcito EDP Parab\u00f3lica\nlambda:  0.25\nx: &#091;0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]\nt: &#091;0.   0.01 0.02 0.03 0.04] ... 1.0\nTabla de resultados en malla EDP Parab\u00f3lica\nj, U&#091;:,: 5 ], primeras iteraciones de  100\n5 &#091;60.   44.21 32.93 27.29 25.41 25.05 25.18 25.98 28.4  33.23 40.  ]\n4 &#091;60.   42.77 31.29 26.37 25.14 25.   25.06 25.59 27.7  32.62 40.  ]\n3 &#091;60.   40.86 29.38 25.55 25.   25.   25.   25.23 26.88 31.8  40.  ]\n2 &#091;60.   38.12 27.19 25.   25.   25.   25.   25.   25.94 30.62 40.  ]\n1 &#091;60.   33.75 25.   25.   25.   25.   25.   25.   25.   28.75 40.  ]\n0 &#091;60. 25. 25. 25. 25. 25. 25. 25. 25. 25. 40.]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"algoritmoexplicito\">Algoritmo en Python<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# EDP parab\u00f3licas d2u\/dx2  = K du\/dt\n# m\u00e9todo expl\u00edcito,usando diferencias divididas\nimport numpy as np\n\n# INGRESO\n# Valores de frontera\nTa = 60  # izquierda de barra\nTb = 40  # derecha de barra\n#Tc = 25 # estado inicial de barra en x\nfxc = lambda x: 25 + 0*x # f(x) en tiempo inicial\n\n# dimensiones de la barra\na = 0  # longitud en x\nb = 1\nt0 = 0 # tiempo inicial, aumenta con dt en n iteraciones\n\nK = 4     # Constante K\ndx = 0.1  # muestreo en x, tama\u00f1o de paso\ndt = dx\/10\n\nn = 100  # iteraciones en tiempo\nverdigitos = 2   # decimales a mostrar en tabla de resultados\n\n# coeficientes de U&#x5B;x,t]. factores P,Q,R, \nlamb = dt\/(K*dx**2)\nP = lamb       # izquierda P*U&#x5B;i-1,j]\nQ = 1 - 2*lamb # centro Q*U&#x5B;i,j]\nR = lamb       # derecha R*U&#x5B;i+1,j]\n\n# PROCEDIMIENTO\n# iteraciones en x, longitud\nxi = np.arange(a,b+dx\/2,dx)\nm = len(xi) \nultimox = m-1\nultimot = n-1\n\n# u&#x5B;xi,tj], tabla de resultados\nu = np.zeros(shape=(m,n+1), dtype=float)\n\n# u&#x5B;i,j], valores iniciales\nu&#x5B;0,:] = Ta  # Izquierda\nu&#x5B;ultimox,:] = Tb  # derecha\n# estado inicial de barra en x, Tc\nfic = fxc(xi) # f(x) en tiempo inicial\nu&#x5B;1:ultimox,0] = fic&#x5B;1:ultimox]\n\n# Calcula U para cada tiempo + dt\ntj = np.arange(t0,(n+1)*dt,dt)\nfor j  in range(0,n,1):\n    for i in range(1,ultimox,1):\n        # ecuacion discreta, entre &#x5B;1,ultimox]\n        u&#x5B;i,j+1] = P*u&#x5B;i-1,j] + Q*u&#x5B;i,j] + R*u&#x5B;i+1,j]\n\n# SALIDA\nj_mostrar = 5\nnp.set_printoptions(precision=verdigitos)\nprint('M\u00e9todo expl\u00edcito EDP Parab\u00f3lica')\nprint('lambda: ',np.around(lamb,verdigitos))\nprint('x:',xi)\nprint('t:',tj&#x5B;0:j_mostrar],'...',tj&#x5B;-1])\nprint('Tabla de resultados en malla EDP Parab\u00f3lica')\nprint('j, U&#x5B;:,:',j_mostrar,'], primeras iteraciones de ',n)\nfor j in range(j_mostrar,-1,-1):\n    print(j,u&#x5B;:,j])\n\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"graf2Dexplicito\">1.1 Gr\u00e1ficas 2D, EDP Parab\u00f3lica, m\u00e9todo expl\u00edcito<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA 2D ------------\nimport matplotlib.pyplot as plt\ntramos = 10\nsalto = int(n\/tramos) # evita muchas l\u00edneas\nif (salto == 0):\n    salto = 1\nfor j in range(0,n,salto):\n    vector = u&#x5B;:,j]\n    plt.plot(xi,vector)\n    plt.plot(xi,vector, '.',color='red')\nplt.xlabel('x&#x5B;i]')\nplt.ylabel('u&#x5B;j]')\nplt.title('Soluci\u00f3n EDP parab\u00f3lica')\n#plt.show()\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"graf3Dexplicito\">1.3 Gr\u00e1ficas 3D,&nbsp; EDP Parab\u00f3lica, m\u00e9todo expl\u00edcito<\/h3>\n\n\n\n<p>Esta secci\u00f3n es la base para la generaci\u00f3n de las animaciones siguientes, por lo que <strong>debe ser incluida antes de las dos siguientes animaciones 2D o 3D<\/strong>. Al menos hasta la parte donde se realiza la transpuesta de U.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA 3D -----------\ntj = np.arange(0,n*dt,dt)\ntk = np.zeros(tramos,dtype=float)\n\n# Extrae parte de la matriz U,acorde a los tramos\nU = np.zeros(shape=(m,tramos),dtype=float)\nfor k in range(0,tramos,1):\n    U&#x5B;:,k] = u&#x5B;:,k*salto]\n    tk&#x5B;k] = tj&#x5B;k*salto]\n# Malla para cada eje X,Y\nXi, Yi = np.meshgrid(xi,tk)\nU = np.transpose(U)\n\nfig_3D = plt.figure()\ngraf_3D = fig_3D.add_subplot(111, projection='3d')\ngraf_3D.plot_wireframe(Xi,Yi,U, color ='blue')\ngraf_3D.plot(xi&#x5B;0],tk&#x5B;1],U&#x5B;1,0],'o',color ='orange')\ngraf_3D.plot(xi&#x5B;1],tk&#x5B;1],U&#x5B;1,1],'o',color ='green')\ngraf_3D.plot(xi&#x5B;2],tk&#x5B;1],U&#x5B;1,2],'o',color ='green')\ngraf_3D.plot(xi&#x5B;1],tk&#x5B;2],U&#x5B;2,1],'o',color ='salmon',\n             label='U&#x5B;i,j+1]')\ngraf_3D.set_title('EDP Parab\u00f3lica')\ngraf_3D.set_xlabel('x')\ngraf_3D.set_ylabel('t')\ngraf_3D.set_zlabel('U')\ngraf_3D.legend()\ngraf_3D.view_init(35, -45)\nplt.show()\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"graf2Daniexplicito\">1.4 Gr\u00e1ficas 2D animada, EDP Parab\u00f3lica, m\u00e9todo expl\u00edcito<\/h3>\n\n\n\n<p>La animaci\u00f3n en 2D para la EDP parab\u00f3lica m\u00e9todo expl\u00edcito se a\u00f1ade, luego de comentar el <code>#plt.show()<\/code> anterior<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/10\/EDP_ParabolicaAni01.gif\" alt=\"EDP_Parab\u00f3lica gr\u00e1fica Animada\" class=\"wp-image-13862\" \/><\/figure>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA 2D ANIMADA --------\n# import matplotlib.pyplot as plt\nimport matplotlib.animation as animation\nunmetodo = 'EDP Parab\u00f3lica - M\u00e9todo expl\u00edcito'\nnarchivo = 'EdpParabolica' # nombre archivo GIF\n\n# Parametros de trama\/foto\nretardo = 500   # milisegundos entre tramas\n\n# GRAFICA animada en fig_ani\nfig_ani, graf_ani = plt.subplots()\n\n# Lineas y puntos base\nlinea_f, = graf_ani.plot(xi,u&#x5B;:,0])\ngraf_ani.axhline(0, color='k')  # Eje en x=0\n\nmaximoy = np.max(u) \ntxt_y = maximoy*(1-0.1)\ntxt_f = graf_ani.text(xi&#x5B;0],txt_y,'tiempo:',\n                      horizontalalignment='left')\n# Configura gr\u00e1fica\ngraf_ani.set_xlim(&#x5B;xi&#x5B;0],xi&#x5B;ultimox]])\ngraf_ani.set_ylim(&#x5B; np.min(u),maximoy])\ngraf_ani.set_title(unmetodo)\ngraf_ani.set_xlabel('x')\ngraf_ani.set_ylabel('u')\n#graf_ani.legend()\ngraf_ani.grid()\n\n# Nueva Trama\ndef unatrama(i,xi,u):\n    # actualiza cada linea\n    linea_f.set_ydata(u&#x5B;:,i])\n    linea_f.set_xdata(xi)\n    linea_f.set_label('tiempo linea: '+str(i))\n    if (i&lt;=9): # color de la l\u00ednea\n        lineacolor = 'C'+str(i)\n    else:\n        numcolor = i%10\n        lineacolor = 'C'+str(numcolor)\n    linea_f.set_color(lineacolor)\n    txt_f.set_text('tiempo&#x5B;'+str(i)+'] = ' + str(i*dt))\n    return linea_f, txt_f,\n\n# Limpia Trama anterior\ndef limpiatrama(): \n    linea_f.set_ydata(np.ma.array(xi, mask=True))\n    linea_f.set_label('')\n    txt_f.set_text('')\n    return linea_f, txt_f,\n\n# contador de tramas\ni = np.arange(0,len(tk),1)\nani = animation.FuncAnimation(fig_ani, unatrama,\n                              i, fargs=(xi,u),\n                              init_func=limpiatrama,\n                              interval=retardo,\n                              blit=False)\n# Graba Archivo GIFAnimado y video\nani.save(narchivo+'_animado.gif',writer='pillow')\n#ani.save(narchivo+'.mp4')\nplt.draw()\nplt.show()\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"graf3Daniexplicito\">1.5 Gr\u00e1ficas 3D animada, EDP Parab\u00f3lica, m\u00e9todo expl\u00edcito<\/h3>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/10\/EdpParabolica2_animado.gif\" alt=\"EDP Parab\u00f3lica gr\u00e1fico 3D animado\" class=\"wp-image-13869\" \/><\/figure>\n\n\n\n<p>Para el caso de animaci\u00f3n 3D, se cambia la secci\u00f3n de animaci\u00f3n del algoritmo anterior por:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA 3D ANIMADA --------\n# import matplotlib.pyplot as plt\nimport matplotlib.animation as animation\nunmetodo = 'EDP Parab\u00f3lica - M\u00e9todo expl\u00edcito'\nnarchivo = 'EdpParabolica2' # nombre archivo GIF\n\n# Parametros de trama\/foto\nretardo = 500   # milisegundos entre tramas\n\n# GRAFICA animada en fig_ani\nfig_ani3D = plt.figure()\ngraf_ani3 = fig_ani3D.add_subplot(projection='3d')\n\n# Lineas y puntos base\n##graf_ani3.plot_wireframe(Xi,Yi,U,\n##                         color ='blue',label='EDP Parab\u00f3lica')\npunto_a, = graf_ani3.plot(xi&#x5B;0],tk&#x5B;0],U&#x5B;1,0],'o',color ='green')\npunto_b, = graf_ani3.plot(xi&#x5B;0],tk&#x5B;0],U&#x5B;1,0],'o',\n                          color ='salmon',label='U&#x5B;i,j+1]')\nlinea_c, = graf_ani3.plot(xi&#x5B;0],tk&#x5B;0],U&#x5B;1,0],'-',color ='blue')\n# Configura gr\u00e1fica\ngraf_ani3.set_xlim(min(xi),max(xi))\ngraf_ani3.set_ylim(min(tk),max(tk))\ngraf_ani3.set_title(unmetodo)\ngraf_ani3.set_xlabel('x')\ngraf_ani3.set_ylabel('t')\ngraf_ani3.set_zlabel('U')\ngraf_ani3.legend()\ngraf_ani3.grid()\ngraf_ani3.view_init(35, -45)\n\nmallaEDP = None\n# Nueva Trama\ndef unatrama(i,xi,tk,U,k):\n    f = i\/\/k\n    c = i%k\n    # actualiza cada punto\n    punto_a.set_data(&#x5B;&#x5B;xi&#x5B;c],xi&#x5B;c+1],xi&#x5B;c+2]],\n                      &#x5B;tk&#x5B;f],tk&#x5B;f],tk&#x5B;f]]])\n    punto_a.set_3d_properties(&#x5B;U&#x5B;f,c],U&#x5B;f,c+1],U&#x5B;f,c+2]])\n    punto_b.set_data(&#x5B;xi&#x5B;c+1]],&#x5B;tk&#x5B;f+1]])\n    punto_b.set_3d_properties(&#x5B;U&#x5B;f+1,c+1]])\n    linea_c.set_data(xi&#x5B;0:c+2],&#x5B;tk&#x5B;f+1]]*(c+2))\n    linea_c.set_3d_properties(&#x5B;U&#x5B;f+1,0:c+2]])\n    \n    global mallaEDP\n    if mallaEDP:\n        mallaEDP.remove()\n    mallaEDP = graf_ani3.plot_wireframe(Xi&#x5B;0:f+1,:],\n                                        Yi&#x5B;0:f+1,:],\n                                        U&#x5B;0:f+1,:],\n                                        color ='blue',\n                                        label='EDP Parab\u00f3lica')\n    return (punto_a,punto_b,linea_c)\n\n\n# contador de tramas\nk = len(xi)-2\nk2 = k*(len(tk)-1)\ni = np.arange(0,k2,1)\nani = animation.FuncAnimation(fig_ani3D, unatrama,\n                              i ,\n                              fargs=(xi,tk,U,k),\n                              interval=retardo,\n                              blit=False)\n# Graba Archivo GIFAnimado y video\nani.save(narchivo+'_animado.gif', writer='pillow')\n#ani.save(narchivo+'.mp4')\n#plt.draw()\nplt.show()\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/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=\"graf3Dimplicito\">1.6 Gr\u00e1fica 3D, EDP Parab\u00f3licas m\u00e9todo impl\u00edcito<\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/10\/EdpParabImpli_animado.gif\" alt=\"EDP Parab\u00f3lica Impl\u00edcito gr\u00e1fico 3D animado\" class=\"wp-image-13876\" \/><\/figure>\n\n\n\n<p>Puesto que la soluci\u00f3n de la tabla de resultados en U es la misma que el los dos m\u00e9todos expl\u00edcito e impl\u00edcito, solo se adjunta la parte de la animaci\u00f3n.<\/p>\n\n\n\n<p>Para el caso del la gr\u00e1fica 3D del m\u00e9todo impl\u00edcito se cambia la secci\u00f3n de gr\u00e1fica animada por:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA 3D ANIMADA --------\n# import matplotlib.pyplot as plt\nimport matplotlib.animation as animation\nunmetodo = 'EDP Parab\u00f3lica - M\u00e9todo expl\u00edcito'\nnarchivo = 'EdpParabolica2' # nombre archivo GIF\n\n# Parametros de trama\/foto\nretardo = 500   # milisegundos entre tramas\n\n# GRAFICA animada en fig_ani\nfig_ani3D = plt.figure()\ngraf_ani3 = fig_ani3D.add_subplot(projection='3d')\n\n# Lineas y puntos base\n##graf_ani3.plot_wireframe(Xi,Yi,U,\n##                         color ='blue',label='EDP Parab\u00f3lica')\npunto_a, = graf_ani3.plot(xi&#x5B;0],tk&#x5B;0],U&#x5B;1,0],'o',color ='green')\npunto_b, = graf_ani3.plot(xi&#x5B;0],tk&#x5B;0],U&#x5B;1,0],'o',\n                          color ='salmon',label='U&#x5B;i,j+1]')\nlinea_c, = graf_ani3.plot(xi&#x5B;0],tk&#x5B;0],U&#x5B;1,0],'-',color ='blue')\n# Configura gr\u00e1fica\ngraf_ani3.set_xlim(min(xi),max(xi))\ngraf_ani3.set_ylim(min(tk),max(tk))\ngraf_ani3.set_title(unmetodo)\ngraf_ani3.set_xlabel('x')\ngraf_ani3.set_ylabel('t')\ngraf_ani3.set_zlabel('U')\ngraf_ani3.legend()\ngraf_ani3.grid()\ngraf_ani3.view_init(35, -45)\n\nmallaEDP = None\n# Nueva Trama\ndef unatrama(i,xi,tk,U,k):\n    f = i\/\/k\n    c = i%k\n    # actualiza cada punto\n    punto_a.set_data(&#x5B;&#x5B;xi&#x5B;c],xi&#x5B;c+1],xi&#x5B;c+2]],\n                      &#x5B;tk&#x5B;f],tk&#x5B;f],tk&#x5B;f]]])\n    punto_a.set_3d_properties(&#x5B;U&#x5B;f,c],U&#x5B;f,c+1],U&#x5B;f,c+2]])\n    punto_b.set_data(&#x5B;xi&#x5B;c+1]],&#x5B;tk&#x5B;f+1]])\n    punto_b.set_3d_properties(&#x5B;U&#x5B;f+1,c+1]])\n    linea_c.set_data(xi&#x5B;0:c+2],&#x5B;tk&#x5B;f+1]]*(c+2))\n    linea_c.set_3d_properties(&#x5B;U&#x5B;f+1,0:c+2]])\n    \n    global mallaEDP\n    if mallaEDP:\n        mallaEDP.remove()\n    mallaEDP = graf_ani3.plot_wireframe(Xi&#x5B;0:f+1,:],\n                                        Yi&#x5B;0:f+1,:],\n                                        U&#x5B;0:f+1,:],\n                                        color ='blue',\n                                        label='EDP Parab\u00f3lica')\n    return (punto_a,punto_b,linea_c)\n\n\n# contador de tramas\nk = len(xi)-2\nk2 = k*(len(tk)-1)\ni = np.arange(0,k2,1)\nani = animation.FuncAnimation(fig_ani3D, unatrama,\n                              i ,\n                              fargs=(xi,tk,U,k),\n                              interval=retardo,\n                              blit=False)\n# Graba Archivo GIFAnimado y video\nani.save(narchivo+'_animado.gif', writer='pillow')\n#ani.save(narchivo+'.mp4')\n#plt.draw()\nplt.show()\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/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=\"elipticasoterativo\">2. EDP El\u00edpticas m\u00e9todo iterativo<\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/10\/EdpElipticaItera_animado.gif\" alt=\"EDP El\u00edptica Itera gr\u00e1fico 3D animado\" class=\"wp-image-13897\" \/><\/figure>\n\n\n\n<p>Al algoritmo desarrollado en EDP El\u00edpticas m\u00e9todo iterativo, se crean una lista para almacenar los valores de la matriz U por cada iteraci\u00f3n, se usan para graficar cada iteraci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"algoritmoelipticasitera\">Algoritmo en Python<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Ecuaciones Diferenciales Parciales\n# Elipticas. M\u00e9todo iterativo\nimport numpy as np\n\n# INGRESO\n# Condiciones iniciales en los bordes\nTa = 60     # izquierda\nTb = 25     # derecha\n#Tc = 50    # inferior \nfxc = lambda x: 50+0*x # funci\u00f3n inicial inferior\n# Td = 70   # superior\nfxd = lambda x: 70+0*x # funci\u00f3n inicial superior\n\n# dimensiones de la placa\nx0 = 0    # longitud en x\nxn = 2\ny0 = 0    # longitud en y\nyn = 1.5\n# discretiza, supone dx=dy\ndx = 0.25  # Tama\u00f1o de paso\ndy = dx\niteramax = 100\ntolera = 0.0001\nverdigitos = 2   # decimales a mostrar en tabla de resultados\n\n# PROCEDIMIENTO\nxi = np.arange(x0,xn+dx\/2,dx)\nyj = np.arange(y0,yn+dy\/2,dy)\nn = len(xi)\nm = len(yj)\n\n# Matriz u\nu = np.zeros(shape=(n,m),dtype = float)\n# llena u con valores en fronteras\nu&#x5B;0,:]   = Ta       # izquierda\nu&#x5B;n-1,:] = Tb       # derecha\nfic = fxc(xi)\nu&#x5B;:,0]   = fic  # Tc inferior\nfid = fxd(xi)\nu&#x5B;:,m-1] = fid  # Td superior\n# valor inicial de iteraci\u00f3n dentro de u\n# promedio = (Ta+Tb+Tc+Td)\/4\npromedio = (Ta+Tb+np.max(fic)+np.max(fid))\/4\nu&#x5B;1:n-1,1:m-1] = promedio\nnp.set_printoptions(precision=verdigitos)\nprint('u inicial:')\nprint(np.transpose(u))\n\n# iterar puntos interiores\nU_3D = &#x5B;np.copy(u)]\nU_error = &#x5B;'--']\nitera = 0\nconverge = False\nwhile (itera&lt;=iteramax and converge==False):\n    itera = itera +1\n    Uantes = np.copy(u)\n    for i in range(1,n-1):\n        for j in range(1,m-1):\n            u&#x5B;i,j] = (u&#x5B;i-1,j]+u&#x5B;i+1,j]+u&#x5B;i,j-1]+u&#x5B;i,j+1])\/4\n    diferencia = u - Uantes\n    errado_u = np.max(np.abs(diferencia))\n    if (errado_u&lt;tolera):\n        converge=True\n    U_3D.append(np.copy(u))\n    U_error.append(np.around(errado_u,verdigitos))\n    if itera&lt;=3:\n        np.set_printoptions(precision=verdigitos)\n        print('itera:',itera-1,'  ; ','u:')\n        print(np.transpose(u))\n        print('errado_u: ', errado_u)\n    if itera==4:\n        print('... continua')\n        \n# SALIDA\nprint('M\u00e9todo Iterativo EDP El\u00edptica')\nprint('iteraciones:',itera,' converge = ', converge)\nprint('xi:', xi)\nprint('yj:', yj)\nprint('Tabla de resultados en malla EDP El\u00edptica')\nprint('j, U&#x5B;i,j]')\nfor j in range(m-1,-1,-1):\n    print(j,u&#x5B;:,j])\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"graf3Delipticasitera\">2.1 Gr\u00e1fica 3D, EDP El\u00edpticas m\u00e9todo iterativo<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA en 3D ------\nimport matplotlib.pyplot as plt\n# Malla para cada eje X,Y\nXi, Yi = np.meshgrid(xi, yj)\nU = np.transpose(u) # ajuste de \u00edndices fila es x\n\nfig_3D = plt.figure()\ngraf_3D = fig_3D.add_subplot(111, projection='3d')\ngraf_3D.plot_wireframe(Xi,Yi,U,\n                       color ='blue')\ngraf_3D.plot(Xi&#x5B;1,0],Yi&#x5B;1,0],U&#x5B;1,0],'o',color ='orange')\ngraf_3D.plot(Xi&#x5B;1,1],Yi&#x5B;1,1],U&#x5B;1,1],'o',color ='red',\n             label='U&#x5B;i,j]')\ngraf_3D.plot(Xi&#x5B;1,2],Yi&#x5B;1,2],U&#x5B;1,2],'o',color ='salmon')\ngraf_3D.plot(Xi&#x5B;0,1],Yi&#x5B;0,1],U&#x5B;0,1],'o',color ='green')\ngraf_3D.plot(Xi&#x5B;2,1],Yi&#x5B;2,1],U&#x5B;2,1],'o',color ='salmon')\n\ngraf_3D.set_title('EDP el\u00edptica')\ngraf_3D.set_xlabel('x')\ngraf_3D.set_ylabel('y')\ngraf_3D.set_zlabel('U')\ngraf_3D.legend()\ngraf_3D.view_init(35, -45)\nplt.show()\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"graf3Danielipticasitera\">2.2 Gr\u00e1fica 3D animada, EDP El\u00edpticas m\u00e9todo iterativo<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA CON ANIMACION 3D--------\n# import matplotlib.pyplot as plt\nimport matplotlib.animation as animation\nunmetodo = 'EDP Eliptica - M\u00e9todo iterativo'\nnarchivo = 'EdpElipticaItera' # nombre archivo GIF\n\n# Parametros de trama\/foto\nretardo = 500   # milisegundos entre tramas\n\n# GRAFICA animada en fig_ani\nfig_ani3D = plt.figure()\ngraf_ani3 = fig_ani3D.add_subplot(projection='3d')\n\n# Lineas y puntos base\npunto_a, = graf_ani3.plot(xi&#x5B;0],yj&#x5B;0],U&#x5B;0,0],'.',color ='blue')\n\n# Configura gr\u00e1fica\ngraf_ani3.set_xlim(min(xi),max(xi))\ngraf_ani3.set_ylim(min(yj),max(yj))\ngraf_ani3.set_title(unmetodo)\ngraf_ani3.set_xlabel('x')\ngraf_ani3.set_ylabel('t')\ngraf_ani3.set_zlabel('U')\n# graf_ani3.legend()\ngraf_ani3.grid()\ngraf_ani3.view_init(35, -45)\n\netiqueta_i ='itera: '+str(0)\netiqueta_err = 'errado&#x5B;'+str(0)+']: '+str(U_error&#x5B;0]) \ntxt_i = graf_ani3.text2D(0.05, 0.95, etiqueta_i,\n                         transform=graf_ani3.transAxes)\ntxt_errado = graf_ani3.text2D(0.05, 0.90, etiqueta_err,\n                              transform=graf_ani3.transAxes)\n\nmallaEDP = None\n# Nueva Trama\ndef unatrama(i,xi,yj,U_3D,U_error):\n\n    etiqueta_i ='itera: '+str(i)\n    txt_i.set_text(etiqueta_i)\n    etiqueta_err = 'errado&#x5B;'+str(i)+']: '+str(U_error&#x5B;i])\n    txt_errado.set_text(etiqueta_err)\n    global mallaEDP\n    if mallaEDP:\n        graf_ani3.collections.remove(mallaEDP)\n    mallaEDP = graf_ani3.plot_wireframe(Xi,Yi,\n                                        np.transpose(U_3D&#x5B;i]),\n                                        color ='blue')\n    return (txt_i,txt_errado,)\n\n\n# contador de tramas\nk = 11 #len(U_3D)\ni = np.arange(0,k,1)\nani = animation.FuncAnimation(fig_ani3D, unatrama,\n                              i ,\n                              fargs=(xi,yj,U_3D,U_error),\n                              interval=retardo,\n                              blit=False)\n# Graba Archivo GIFAnimado y video\nani.save(narchivo+'_animado.gif', writer='pillow')\n#ani.save(narchivo+'.mp4')\n#plt.draw()\nplt.show()\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>EDP Parab\u00f3lica<\/p>\n\n\n\n<p><a href=\"#explicito\">expl\u00edcito<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmoexplicito\">algoritmo<\/a><\/p>\n\n\n\n<p>gr\u00e1f:<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Dexplicito\">3D<\/a><\/p>\n\n\n\n<p>animada<\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">2D<\/a><\/p>\n\n\n\n<p><a href=\"#graf2Daniexplicito\">3D<\/a><\/p>\n\n\n\n<p>impl\u00edcito gr\u00e1fica<\/p>\n\n\n\n<p><a href=\"#graf3Dimplicito\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p>EDP El\u00edpticas<\/p>\n\n\n\n<p> <a href=\"#elipticasoterativo\">iterativo<\/a><\/p>\n\n\n\n<p> <a href=\"#algoritmoelipticasitera\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Delipticasitera\">3D<\/a><\/p>\n\n\n\n<p><a href=\"#graf3Danielipticasitera\">3D animada<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Solo para fines did\u00e1cticos, y como complemento para los ejercicios presentados en la unidad para Ecuaciones Diferenciales Parciales, se presentan las instrucciones para las animaciones usadas en la presentaci\u00f3n de los conceptos y ejercicios. Los algoritmos para animaci\u00f3n NO son necesarios para realizar los ejercicios, que requieren una parte anal\u00edtica con al menos tres iteraciones [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"wp-custom-template-entrada-mn-unidades","format":"standard","meta":{"footnotes":""},"categories":[41],"tags":[],"class_list":["post-10171","post","type-post","status-publish","format-standard","hentry","category-mn-u07"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/10171","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=10171"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/10171\/revisions"}],"predecessor-version":[{"id":21225,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/10171\/revisions\/21225"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=10171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=10171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=10171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}