{"id":2372,"date":"2018-08-29T12:02:17","date_gmt":"2018-08-29T17:02:17","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=2372"},"modified":"2026-04-05T20:14:01","modified_gmt":"2026-04-06T01:14:01","slug":"s2eva2018ti_t3-edp-eliptica","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s2eva20\/s2eva2018ti_t3-edp-eliptica\/","title":{"rendered":"s2Eva2018TI_T3 EDP Eliptica"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-2eva20\/2eva2018ti_t3-edp-eliptica\/\" data-type=\"post\" data-id=\"2341\">2Eva2018TI_T3 EDP El\u00edptica<\/a><\/p>\n\n\n\n<p>Generar las ecuaciones a resolver usando diferencias finitas divididas centradas:<\/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} = 2(x^2+y^2)<\/span>\n\n\n\n<p>por facilidad se sustituye tambi\u00e9n en la forma discreta de la ecuaci\u00f3n:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f[i,j] = f(x_i,y_j) = 2(x_{i} ^2+y_{j} ^2) <\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{u[i-1,j]-2u[i,j]+u[i+1,j]}{\\Delta x^2} +<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + \\frac{u[i,j-1]-2u[i,j]+u[i,j+1]}{\\Delta y^2} = f[i,j]<\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\Delta y^2}{\\Delta x^2}\\Big(u[i-1,j]-2u[i,j]+u[i+1,j]\\Big) +<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + u[i,j-1]-2u[i,j]+u[i,j+1] = \\Delta y^2 f[i,j]<\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>dado que hx = hy = 1\/3<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\Delta y^2}{\\Delta x^2} = 1<\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> (u[i-1,j]-2u[i,j]+u[i+1,j]) + <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + u[i,j-1]-2u[i,j]+u[i,j+1] =<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = \\Delta y^2 f[i,j]<\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u[i-1,j]-4u[i,j]+u[i+1,j] + <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + u[i,j-1]+u[i,j+1] = \\Delta y^2 f[i,j] <\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 4u[i,j] = u[i-1,j]+u[i+1,j] + <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + u[i,j-1]+u[i,j+1]-\\Delta y^2 f[i,j] <\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u[i,j] = \\frac{1}{4} \\Big(u[i-1,j]+u[i+1,j] +<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + u[i,j-1]+u[i,j+1]-\\Delta y^2 f[i,j] \\Big)<\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>La \u00faltima ecuaci\u00f3n puede ser usada de forma iterativa, para lo cual hay que definir los valores iniciales de la matriz u.<\/p>\n\n\n\n<p>Al conocer el rango de operaci\u00f3n para los ejes x, y, hx, hy se realizan los c\u00e1lculos para:<\/p>\n\n\n\n<p>1. Evaluar los valores para cada eje x[i], y[j]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>x&#091;i]:\n&#091; 0.    0.33  0.67  1.  ]\ny&#091;j]:\n&#091; 0.    0.33  0.67  1.  ]<\/code><\/pre>\n\n\n\n<p>2. Evaluar en cada punto generando una matriz f(i,j):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>f&#091;i,j]:\n&#091;&#091; 0.    0.22  0.89  2.  ]\n &#091; 0.22  0.44  1.11  2.22]\n &#091; 0.89  1.11  1.78  2.89]\n &#091; 2.    2.22  2.89  4.  ]]<\/code><\/pre>\n\n\n\n<p>3. Se evaluan las funciones indicadas para la frontera y se tiene la matriz inicial para u:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>matriz inicial u&#091;i,j]:\n&#091;&#091; 1.    1.33  1.67  2.  ]\n &#091; 1.33  0.    0.    2.44]\n &#091; 1.67  0.    0.    3.11]\n &#091; 2.    2.44  3.11  4.  ]]<\/code><\/pre>\n\n\n\n<p>con lo que se puede trabajar cada punto i,j de forma iterativa, teniendo como resultado para la matriz u:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>resultado para u, iterando: \nconverge =  1\n&#091;&#091; 1.    1.33  1.67  2.  ]\n &#091; 1.33  1.68  2.05  2.44]\n &#091; 1.67  2.05  2.53  3.11]\n &#091; 2.    2.44  3.11  4.  ]]<\/code><\/pre>\n\n\n\n<p>La gr\u00e1fica usando una mayor resoluci\u00f3n para tener una idea de la soluci\u00f3n:<\/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\/2018\/08\/2Eva2018TI_T3Eliptica01.png\" alt=\"2eva2018ti_t3 el\u00edptica 01\" class=\"wp-image-18506\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Los resultados se obtienen usando las siguientes instrucciones:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 2da Evaluaci\u00f3n I T\u00e9rmino 2018\n# Tema 3. EDP Eliptica\nimport numpy as np\n \n# INGRESO\n# ejes x,y\nx0 = 0 ; xn = 1 ; hx = (1\/3)# (1\/3)\/10\ny0 = 0 ; yn = 1 ; hy = (1\/3) # (1\/3)\/10\n# Fronteras\nfux0 = lambda x: x+1\nfu0y = lambda y: y+1\nfux1 = lambda x: x**2 + x + 2\nfu1y = lambda y: y**2 + y + 2\n \nfxy = lambda x,y: 2*(x**2+y**2)\n \n# PROCEDIMIENTO\nxi = np.arange(x0,xn+hx,hx)\nyj = np.arange(y0,yn+hy,hy)\nn = len(xi)\nm = len(yj)\n# funcion f&#x5B;xi,yi]\nfij = np.zeros(shape=(n,m), dtype = float)\nfor i in range(0,n,1):\n    for j in range(0,m,1):\n        fij&#x5B;i,j]=fxy(xi&#x5B;i],yj&#x5B;j])\n# matriz inicial u&#x5B;i,j]\nu = np.zeros(shape=(n,m), dtype = float)\nu&#x5B;:,0] = fux0(xi)\nu&#x5B;0,:] = fu0y(yj)\nu&#x5B;:,m-1] = fux1(xi)\nu&#x5B;n-1,:] = fu1y(yj)\n \nuinicial = u.copy()\n \n# Calcular de forma iterativa\nmaxitera = 100\ntolera = 0.0001\n# valor inicial de iteraci\u00f3n\npromedio = (np.max(u)+np.min(u))\/2\nu&#x5B;1:n-1,1:m-1] = promedio\n# iterar puntos interiores\nitera = 0\nconverge = 0\nerroru = 2*tolera # para calcular al menos una matriz\nwhile not(erroru=maxitera):\n    itera = itera +1\n    nueva = 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]-(hy**2)*fij&#x5B;i,j])\/4\n    diferencia = nueva-u\n    erroru = np.linalg.norm(np.abs(diferencia))\nif (erroru&lt;tolera):\n    converge=1\n \n# SALIDA\nnp.set_printoptions(precision=2)\nprint('x&#x5B;i]:')\nprint(xi)\nprint('y&#x5B;j]:')\nprint(yj)\nprint('f&#x5B;i,j]:')\nprint(fij)\nprint('matriz inicial u&#x5B;i,j]:')\nprint(uinicial)\nprint('resultado para u, iterando: ')\nprint('converge = ', converge)\nprint('iteraciones = ', itera)\nprint(u)\n<\/pre><\/div>\n\n\n<p>para obtener la gr\u00e1fica se debe a\u00f1adir:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nimport matplotlib.pyplot as plt\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.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>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 2Eva2018TI_T3 EDP El\u00edptica Generar las ecuaciones a resolver usando diferencias finitas divididas centradas: por facilidad se sustituye tambi\u00e9n en la forma discreta de la ecuaci\u00f3n: dado que hx = hy = 1\/3 La \u00faltima ecuaci\u00f3n puede ser usada de forma iterativa, para lo cual hay que definir los valores iniciales de la matriz u. [&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":[48],"tags":[58,54],"class_list":["post-2372","post","type-post","status-publish","format-standard","hentry","category-mn-s2eva20","tag-ejemplos-python","tag-mnumericos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2372","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=2372"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2372\/revisions"}],"predecessor-version":[{"id":23862,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2372\/revisions\/23862"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=2372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=2372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=2372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}