{"id":2134,"date":"2017-10-07T09:25:34","date_gmt":"2017-10-07T14:25:34","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=2134"},"modified":"2026-08-10T08:00:59","modified_gmt":"2026-08-10T13:00:59","slug":"edp-elipticas-metodo-implicito","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u07\/edp-elipticas-metodo-implicito\/","title":{"rendered":"7.2.2 EDP El\u00edpticas m\u00e9todo impl\u00edcito 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>EDP El\u00edpticas<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas-metodo-iterativo\/#ejercicio\">ejercicio<\/a><\/p>\n\n\n\n<p>M\u00e9todo impl\u00edcito:<\/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<\/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\">1. EDP El\u00edpticas: M\u00e9todo Impl\u00edcito \u2013 Desarrollo Anal\u00edtico<\/h2>\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>Con el resultado desarrollado en <strong><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas\/\" data-type=\"post\" data-id=\"2102\">EDP el\u00edpticas<\/a><\/strong> para:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\partial ^2 u}{\\partial x^2} + \\frac{\\partial ^2 u}{ \\partial y^2} = 0<\/span>\n\n\n\n<p>y con el supuesto que: <\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\lambda = \\frac{(\\Delta y)^2}{(\\Delta x)^2} = 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 size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"417\" height=\"411\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/10\/EDP_ElipticasIterativo02.png\" alt=\"EDP El\u00edpticas Iterativo gr\u00e1fica 3D\" class=\"wp-image-13894\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>se puede plantear que:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{i+1,j}-4u_{i,j}+u_{i-1,j} + u_{i,j+1} +u_{i,j-1} = 0 <\/span>\n\n\n\n<p>con lo que para el m\u00e9todo impl\u00edcito, se plantea un sistema de ecuaciones para determinar los valores en cada punto desconocido.<\/p>\n\n\n\n<p>j=1, i =1<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,1}-4u_{1,1}+u_{0,1} + u_{1,2} +u_{1,0} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,1}-4u_{1,1}+Ta + u_{1,2} +Tc= 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -4u_{1,1}+u_{2,1}+u_{1,2} = -(Tc+Ta) <\/span>\n\n\n\n<p>j=1, i =2<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{3,1}-4u_{2,1}+u_{1,1} + u_{2,2} +u_{2,0} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{3,1}-4u_{2,1}+u_{1,1} + u_{2,2} +Tc = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{1,1}-4u_{2,1}+u_{3,1}+ u_{2,2}= -Tc <\/span>\n\n\n\n<p>j=1, i=3<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{4,1}-4u_{3,1}+u_{2,1} + u_{3,2} +u_{3,0} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> Tb-4u_{3,1}+u_{2,1} + u_{3,2} +Tc = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,1} -4u_{3,1} + u_{3,2} = -(Tc+Tb) <\/span>\n\n\n\n<p>j=2, i=1<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,2}-4u_{1,2}+u_{0,2} + u_{1,3} +u_{1,1} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,2}-4u_{1,2}+Ta + u_{1,3} +u_{1,1} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -4u_{1,2}+u_{2,2}+u_{1,1}+u_{1,3} = -Ta <\/span>\n\n\n\n<p>j = 2, i = 2<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{1,2}-4u_{2,2}+u_{3,2} + u_{2,3} +u_{2,1} = 0 <\/span>\n\n\n\n<p>j = 2, i = 3<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{4,2}-4u_{3,2}+u_{2,2} + u_{3,3} +u_{3,1} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> Tb-4u_{3,2}+u_{2,2} + u_{3,3} +u_{3,1} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,2} -4u_{3,2}+ u_{3,3} +u_{3,1} = -Tb <\/span>\n\n\n\n<p>j=3, i = 1<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,3}-4u_{1,3}+u_{0,3} + u_{1,4} +u_{1,2} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,3}-4u_{1,3}+Ta + Td +u_{1,2} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -4u_{1,3}+u_{2,3}+u_{1,2} = -(Td+Ta) <\/span>\n\n\n\n<p>j=3, i = 2<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{3,3}-4u_{2,3}+u_{1,3} + u_{2,4} +u_{2,2} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{3,3}-4u_{2,3}+u_{1,3} + Td +u_{2,2} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> +u_{1,3} -4u_{2,3}+u_{3,3} +u_{2,2} = -Td <\/span>\n\n\n\n<p>j=3, i=3<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{4,3}-4u_{3,3}+u_{2,3} + u_{3,4} +u_{3,2} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> Tb-4u_{3,3}+u_{2,3} + Td +u_{3,2} = 0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{2,3}-4u_{3,3}+u_{3,2} = -(Td+Tb) <\/span>\n\n\n\n<p>con las ecuaciones se arma una matriz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091;-4, 1, 0, 1, 0, 0, 0, 0, 0],\n     &#091; 1,-4, 1, 0, 1, 0, 0, 0, 0],\n     &#091; 0, 1,-4, 0, 0, 1, 0, 0, 0],\n     &#091; 1, 0, 0,-4, 1, 0, 1, 0, 0],\n     &#091; 0, 1, 0, 1,-4, 1, 0, 1, 0],\n     &#091; 0, 0, 1, 0, 1,-4, 0, 0, 1],\n     &#091; 0, 0, 0, 1, 0, 0,-4, 1, 0],\n     &#091; 0, 0, 0, 0, 1, 0, 1,-4, 1],\n     &#091; 0, 0, 0, 0, 0, 1, 0, 1,-4]]\nB = &#091;-(Tc+Ta),-Tc,-(Tc+Tb),\n     -Ta,0,-Tb,\n     -(Td+Ta),-Td,-(Td+Tb)]<\/code><\/pre>\n\n\n\n<p>que al resolver el sistema de ecuaciones se obtiene:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>&gt;&gt;&gt; Xu\narray(&#091; 56.43,  55.71,  56.43,  60.  ,  60.  ,  60.  ,  63.57,  64.29,\n        63.57])<\/code><\/pre>\n\n\n\n<p>ingresando los resultados a la matriz u:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>EDP El\u00edptica - M\u00e9todo Impl\u00edcito\nxi: &#091;0.  0.5 1.  1.5 2. ]\nyj: &#091;0.   0.38 0.75 1.12 1.5 ]\nTabla de resultados en malla EDP El\u00edptica\nj, U&#091;i,j]\n4 &#091;70. 70. 70. 70. 70.]\n3 &#091;60.   61.07 57.72 48.57 25.  ]\n2 &#091;60.   56.56 51.25 41.56 25.  ]\n1 &#091;60.   53.93 49.15 41.43 25.  ]\n0 &#091;50. 50. 50. 50. 50.]\n&gt;&gt;&gt;<\/code><\/pre>\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 El\u00edpticas<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas-metodo-iterativo\/#ejercicio\">ejercicio<\/a><\/p>\n\n\n\n<p>M\u00e9todo impl\u00edcito:<\/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<\/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\">2. Algoritmo en Python. EDP El\u00edpticas: M\u00e9todo Impl\u00edcito<\/h2>\n\n\n\n<p>Instrucciones en Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# EDP Elipticas d2u\/dx2  + du\/dt = f(x,y)\n# M\u00e9todo impl\u00edcito\nimport numpy as np\n \n# INGRESO\nfxy = lambda x,y: 0*x+0*y # f(x,y) = 0 , ecuacion de Poisson\n\n# Valores de frontera\nTa = 60   # izquierda de la placa\nTb = 25   # derecha de la placa\nTc = 50   # inferior\nTd = 70   # superior\n\n# dimensiones de la placa\nx0 = 0    # longitud en x\nxn = 2\ny0 = 0    # longitud en y\nyn = 1.5\n\n# discretiza, supone dx=dy\ntramosx = 4\ntramosy = 4\ndx = (xn-x0)\/tramosx   # Tama\u00f1o de paso\ndy = (yn-y0)\/tramosy\n\niteramax = 100   # maximo de iteraciones\ntolera = 0.0001\nverdigitos = 2   # decimales a mostrar en tabla de resultados\nvertabla = True  # ver iteraciones\n \nA = &#x5B;&#x5B;-4, 1, 0, 1, 0, 0, 0, 0, 0],\n     &#x5B; 1,-4, 1, 0, 1, 0, 0, 0, 0],\n     &#x5B; 0, 1,-4, 0, 0, 1, 0, 0, 0],\n     &#x5B; 1, 0, 0,-4, 1, 0, 1, 0, 0],\n     &#x5B; 0, 1, 0, 1,-4, 1, 0, 1, 0],\n     &#x5B; 0, 0, 1, 0, 1,-4, 0, 0, 1],\n     &#x5B; 0, 0, 0, 1, 0, 0,-4, 1, 0],\n     &#x5B; 0, 0, 0, 0, 1, 0, 1,-4, 1],\n     &#x5B; 0, 0, 0, 0, 0, 1, 0, 1,-4]]\nB = &#x5B;-(Tc+Ta),-Tc,-(Tc+Tb),\n     -Ta,0,-Tb,\n     -(Td+Ta),-Td,-(Td+Tb)]\n \n# PROCEDIMIENTO\n# Matrices como arreglo, numeros reales\nA = np.array(A,dtype=float)\nB = np.array(B,dtype=float)\n# Resuelve sistema ecuaciones\nXu = np.linalg.solve(A,B)\n&#x5B;nx,mx] = np.shape(A)\n\n# xi,yj : ancho,profundidad\nxi = np.linspace(x0,xn,tramosx+1)\nyj = np.linspace(y0,yn,tramosy+1)\nn = len(xi)\nm = len(yj)\n\n# Matriz u&#x5B;xi,yj], tabla de resultados\nu = np.zeros(shape=(n,m),dtype=float)\n\n# llena u con valores en fronteras\nu&#x5B;0,:]   = Ta   # izquierda\nu&#x5B;n-1,:] = Tb   # derecha\nu&#x5B;:,0]   = Tc   # inferior\nu&#x5B;:,m-1] = Td   # superior\n\n# u&#x5B;1:n-1,1] = Xu&#x5B;0:0+(n-2)]\n# u&#x5B;1:n-1,2] = Xu&#x5B;3:3+(n-2)]\n# u&#x5B;1:n-1,3] = Xu&#x5B;6:6+(n-2)]\nfor j in range(1,n-1,1):\n    u&#x5B;1:n-1,j] = Xu&#x5B;(j-1)*(n-2):(j-1)*(n-2)+(n-2)]\n\n# SALIDA\nnp.set_printoptions(precision=2)\nprint('EDP El\u00edptica - M\u00e9todo Impl\u00edcito')\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<p>La gr\u00e1fica de resultados se obtiene de forma semejante al ejercicio con m\u00e9todo iterativo.<\/p>\n\n\n\n<p>Se podr\u00eda estandarizar un poco m\u00e1s el proceso para que sea realizado por el algoritmo y sea m\u00e1s sencillo generar la matriz con m\u00e1s puntos. <em><strong>Tarea<\/strong><\/em>.<\/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 El\u00edpticas<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas-metodo-iterativo\/#ejercicio\">ejercicio<\/a><\/p>\n\n\n\n<p>M\u00e9todo impl\u00edcito:<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>EDP El\u00edpticas ejercicio M\u00e9todo impl\u00edcito: Anal\u00edtico Algoritmo 1. EDP El\u00edpticas: M\u00e9todo Impl\u00edcito \u2013 Desarrollo Anal\u00edtico Con el resultado desarrollado en EDP el\u00edpticas para: y con el supuesto que: se puede plantear que: con lo que para el m\u00e9todo impl\u00edcito, se plantea un sistema de ecuaciones para determinar los valores en cada punto desconocido. j=1, i [&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":[41],"tags":[],"class_list":["post-2134","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\/2134","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=2134"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2134\/revisions"}],"predecessor-version":[{"id":25343,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2134\/revisions\/25343"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=2134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=2134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=2134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}