Estimación de Error y Convergencia de los Métodos en Diferencias Finitas y el Método de los Elementos Finitos usando GNU-Octave | GMath
spanish·@abdulmath·
0.000 HBDEstimación de Error y Convergencia de los Métodos en Diferencias Finitas y el Método de los Elementos Finitos usando GNU-Octave | GMath
<div class="text-justify"> <div class="pull-left"><img src="https://cdn.steemitimages.com/DQma113DXU747pJ5oj4uRU2LrhTUbzZp3RytqAjHSBJq2xR/Algoritmo.png"/><center><sub>Imagen elaborada con GIMP por @abdulmath.</sub></center></div> Saludos queridos lectores, bienvenidos nuevamente. Luego de unos días de descanso forzado, he vuelto con fuerzas renovadas, en esta oportunidad les traigo una publicación orientada dentro área del Análisis Numérico. En específico, mostraremos las diferencias marcadas entre dos métodos clásicos numéricos, como lo son: el <b>Método en Diferencias Finitas</b> y el <b>Método de los Elementos Finitos</b>. Para el estudio, tomaremos la ecuación convección - difusión en 1D, con condiciones de frontera Robin. El post está dirigido al público en general, pero con atención especial a profesionales, investigadores, estudiantes universitarios de ciencias, ingeniería y carreras afines. Estoy abierto a sus comentarios y dudas que puedan surgir en el desarrollo del mismo. Sin perder más tiempo, iniciemos. <hr> https://cdn.steemitimages.com/DQmdpxUb7HtnNdmxthWLKfUjnPA5sind9336Fgw5iy7pfv3/SeparadorGMath12.png <hr> Muchas veces es necesario usar métodos numéricos para poder encontrar una solución aproximada de algunos problemas en diversas áreas de la ciencia y la ingeniería. Muchos de esos problemas como ya hemos visto anteriormente en mis otras publicaciones (<a href="https://steemit.com/spanish/@abdulmath/aplicaciones-de-las-ecuaciones-diferenciales-ordinarias-leccin-8-1530075515">Aplicaciones de las Ecuaciones Diferenciales Ordinarias | Lección #8,</a> <a href=""></a><a href="https://steemit.com/spanish/@abdulmath/aplicaciones-de-las-ecuaciones-diferenciales-ordinarias-leccin-9-1530140830">Aplicaciones de las Ecuaciones Diferenciales Ordinarias | Lección #9,</a> <a href="https://steemit.com/spanish/@abdulmath/aplicaciones-de-las-ecuaciones-diferenciales-ordinarias-leccin-10-1530157756">Aplicaciones de las Ecuaciones Diferenciales Ordinarias | Lección #10,</a> <a href="https://steemit.com/spanish/@abdulmath/aplicacion-de-la-ecuaciones-diferenciales-ordinarias-a-la-biologia-marina-or-gmath">Aplicación de la Ecuaciones Diferenciales Ordinarias a la Biología Marina</a>) se pueden modelar usando ecuaciones diferenciales. Existen muchos métodos numéricos para abordar la aproximación de soluciones de estas ecuaciones, hoy abordaremos dos de estos métodos, a saber: + el Método en Diferencias Finitas (MDF) y + el Método de los Elementos Finitos (MEF). En general, podemos decir, que estos métodos son unos de los más usados, y es por ellos que algunos autores los han llamados <i>"métodos clásicos"</i>. Los mismos podemos decir, que tienen sus ventajas y desventajas sobre el otro, dependiendo del tipo de problema que se desee resolver. <hr> https://cdn.steemitimages.com/DQmXanvyUygrhHmwWK3pchZxqeNvtg1pLNoHVF5RAxtQbUw/SeparadorGMath26.png <hr> <h2><div class="phishy">El Problema Modelo</div></h2> Consideremos la siguiente ecuación: <center> https://cdn.steemitimages.com/DQmbddbmrHcHTjQs9RvWPoszaanBkiJNm48XEMN4Rk9u9tg/Img01.png</center> sujeto a las condiciones de frontera <center> https://cdn.steemitimages.com/DQmfMgRmuMvoARspvZCW2DTCuNThhCF7QBCANhnFGCAfnyn/Img02.png</center> Básicamente la ecuación mostrada en (1) describe la propagación del calor, a través de la convección - difusión en régimen estacionario. La función <b>u(x)</b> describe la temperatura en cualquier punto de su domino, <b>k(x)>0</b> describe el coeficiente de difusión térmica, <b>v(x)</b> es la velocidad de <a href="https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiUs7qUyojcAhWht1kKHVUdDuQQFggmMAA&url=https%3A%2F%2Fes.wikipedia.org%2Fwiki%2FConvecci%25C3%25B3n&usg=AOvVaw3gDFN1wXp_BGc-7LvBBuPZ">convección</a> (o <a href="https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwi8xo2FyojcAhXMjVkKHSe-AR4QFggoMAE&url=https%3A%2F%2Fes.wikipedia.org%2Fwiki%2FAdvecci%25C3%25B3n&usg=AOvVaw0SXFkttRs0IISVaZrIlzn1">advección</a>) y <b>f(x)</b> es una función escalar que describe la existencia de una fuente o sumidero para el problema. Los parámetros <center> https://cdn.steemitimages.com/DQmdZHPxtNmHrZPyuXaCbUNp6cfJZi3yEePTe69YZfhDAag/Img03.png</center> toman diferentes valores dependiendo de las condiciones de frontera, es decir, condiciones de frontera <b>Dirichlet, Neumann</b> o <b>Robin.</b> Notemos que la solución a la ecuación descrita en (1) sujeta a las condiciones de contorno dadas en (2) la podemos encontrar explícitamente mediante métodos analíticos. Sin embargo, usaremos fuertemente este hecho para establecer un cuadro comparativo entre los métodos numéricos ya mencionados. <hr> https://cdn.steemitimages.com/DQmb1xkUoq6R4w4Rnq5LeYsLc5jPeGXgQGj89Z9erMasMWD/SeparadorGMath27.png <hr> <h2><div class="phishy">Métodos Numéricos</div></h2> Vamos a describir muy brevemente los métodos que usaremos para realizar la comparación de los métodos, los lectores interesado en estudiar con detalles los métodos que estamos usando, pueden consultar las siguientes referencias: * Strikwerda, John C. <i>Finite difference schemes and partial differential equations.</i> Vol. 88. SIAM, 2004. * Ŝolín, Pavel. <i>Partial differential equations and the finite element method.</i> Vol. 73. John Wiley & Sons, 2005. <h4><div class="phishy">Método en Diferencias Finitas (MDF)</div></h4> Ahora bien, el Método en Diferencias Finitas consiste en la discretización de los operadores diferenciales involucrados en el problema, suponiendo el dominio físico lo podemos discretizar en una malla que consta de <b>n+1</b> nodos o puntos de malla, es decir, <b>x<sub>i</sub></b> como lo podemos apreciar en la figura siguiente: <center> https://cdn.steemitimages.com/DQmatH6ENAjwjczrw5G8dvQ8BJjAuFTAEDf9rYsEdgz8Acs/fig09.png <sub>Malla Unidimensional para el Método en Diferencias Finitas. Elaborado por @abdulmath con https://cdn.steemitimages.com/DQmXoxKPPHhVqoqdwzk8R2yiZhuFPw1qYC69PQLey7XSZmE/LateXp.png</sub></center> Usando desarrollos de Taylor, podemos obtener las siguientes fórmulas para la primera y segunda derivada de la solución que queremos encontrar del problema, a saber: <center> https://cdn.steemitimages.com/DQmX3MvT5b1jtzNenkfhFMKrzJTgpYTDaRWGKTeZ8HPtcwa/Img04.png</center> Ahora, restringiendo nuestra atención a la ecuación (1) con las condiciones de contorno de Robin (2), entonces al aplicar el método de diferencia finita obtenemos el siguiente esquema para el cálculo de la solución numérica del problema de valores en la frontera dado en (1)-(2), como lo mostramos a continuación: <center> https://cdn.steemitimages.com/DQmer7YyER5E4HDqUGS8WUE9MHusWY3p6rrWDFBz9ZkjRos/Img05.png</center> donde <center> https://cdn.steemitimages.com/DQmUCMk2Kajk2edP1dJj9vSJhFkA1RaJyAbeMMKS4gRoz9T/Img06.png</center> <h4><div class="phishy">Método de los Elementos Finitos (MEF)</div></h4> Supongamos, que ya hemos definido un problema concreto. El método de los elementos finitos consiste en hallar la solución de ese problema de la forma <center> https://cdn.steemitimages.com/DQmRTgCUnea1XyaVfgbe5TUoqDtmVTVPVfWhaTis6NENouJ/Img07.png</center> donde los coeficientes <b> a<sub>i</sub></b> son desconocidos y deben determinarse a lo largo de un proceso iterativo. Las funciones forman una base para un espacio finito dimensional <center> https://cdn.steemitimages.com/DQmZENe4SVNc318ByJLQSQ8V8vLDQgafW8AGSx92a4RqSwn/Img08.png</center> y este es el espacio de las funciones adecuadas que resuelven la versión débil o forma variacional del siguiente problema, en nuestro caso elegiremos a este espacio de funciones como un espacio de Sobolev, <center> https://cdn.steemitimages.com/DQmbXNGuVG2orfUytzEm7vLRZDYCoqyQmwqCGxbHP6j5WFL/Img09.png</center> la formulación variacional es: <center> https://cdn.steemitimages.com/DQmXiLjbnkYfvgvjTZPyxPobBtHBYhrVWdZ5tGVCa5bMkUh/Img10.png</center> donde el funcional bilineal <b>B(u(x),s(x))</b> y el funcional lineal <b>l(s(x))</b> vienen dado por: <center> https://cdn.steemitimages.com/DQmRq7yt7GBFZw4DwSp7SBLRvFncP2SkqkE9E2mcodVNEcn/Img11.png</center> donde <center> https://cdn.steemitimages.com/DQmbFVMKX9ZZ4UEG2sAVk1hBZj8waaEdTCGkwQ5FhwLgGX1/Img12.png</center> <hr> https://cdn.steemitimages.com/DQmchWnBDaXtwaHe6P4Xods6WkjKQjHZtXQJA9x6nGkGCzc/SeparadorGMath20.png <hr> <h2><div class="phishy">Resultados Numéricos</div></h2> Recordemos que nuestro problema de frontera es de la forma presentada en (1)-(2) cuyo dominio es el intervalo [0,1]. El error los estimaremos utilizando las normas siguientes: <center> https://cdn.steemitimages.com/DQmTB9ZQ7jM2R3J7pbrA8MpGUdVUXfDYEKPWSkKrpgWy7Hf/Img13.png</center> donde <b>u<sub>j</sub></b> con tilde denota la solución numérica obtenida por alguno de los métodos numéricos mencionadas anteriormente y <b>u<sub>j</sub></b> denota la solución exacta del problema de frontera (1)-(2). <hr> https://cdn.steemitimages.com/DQmdwpTiZhCAht5GDF1Qe2wWL3FcdF6viaDH56XM38DPft4/SeparadorGMath22.png <hr> <h2><div class="phishy">Experimento 01</div></h2> Consideremos el problema de frontera dado por (1)-(2) con coeficiente de difusión <b>k=1</b>, velocidad convectiva <b>v=0</b>, condiciones de frontera de Robin de la forma siguiente: <center> https://cdn.steemitimages.com/DQmUUjfFkC9btAivpKYE6nmF9h3vEDSwoKnejgtjejQCbVJ/Img14.png</center> y el término fuente <b>f(x)</b> se define de tal manera que la solución exacta está dada por <center> https://cdn.steemitimages.com/DQmX9S4z31Cphksq39pQFM2DLzQ9cDzWjGG8dczss3Xe9A6/Img15.png</center> A continuación mostraremos cuatro gráficos, donde mostraremos la solución exacta, la solución aproximada con el método en Diferencias Finitas y el método de los Elementos Finitos, con una malla compuesta con 10, 20, 50, y 100 nodos o puntos de malla respectivamente: <center> https://cdn.steemitimages.com/DQmTEnuzvjF8zCSywULpYsW5YuU4neidn9cE5tEhb7TFDB1/figSuaveVariosNodos.png <sub>Gráficos elaborados con <b>GNU-Octave</b>. Elaborados por @abdulmath.</sub></center> Como podemos apreciar, cuando la malla tiene pocos nodos o puntos de mallas, la solución aproximada usando el método de los elementos finitos se acerca más visualmente, sin embargo más adelante veremos que no es tan así, de la misma manera vemos que la aproximación usando el método en Diferencias Finitas, sin embargo cuando aumentamos la cantidad de nodos mejora mucho la aproximación. En las siguientes gráficas mostramos el grado de convergencia de los métodos, así como una tabla donde se muestran los cálculos del orden de convergencia con las diferentes normas. <center> https://cdn.steemitimages.com/DQmeJd4kyx3hLtfofoRdCkrmNuW4HSKhr3vDEaFRRJ3rJT6/figSuaveErrorMaxL2.png <sub>Gráficos elaborados con <b>GNU-Octave</b>. Elaborados por @abdulmath.</sub></center> |# nodos|MDF (Máx)|MEF (Máx)|MDF (L<sub>2</sub>)|MEF (L<sub>2</sub>)| |---|---|---|---|---| |1000|1.999944|4.000306|0.986027|1.999880| |3000|1.999990|4.022705|0.994014|1.999978| |5000|1.999998|3.485599|0.997404|1.999996| |7000|2.000000|-10.558|0.998307|1.99996| |9000|1.999999|15.251|0.998740|2.000043| Como podemos apreciar, la norma del máximo para este problema con el método de elementos finitos presenta una super-convergencia que alcanza el epsilon máquina. Por lo tanto, las oscilaciones que tienen el gráfico en el caso del método de elementos finitos se deben a los errores de redondeo lo que causa pérdida de precisión de la máquina para el método de los elementos finitos. <hr> https://cdn.steemitimages.com/DQmWncXNeXBtVkp1oZyphCEN2ArpmXdBpHtPVfAQkw95RcU/SeparadorGMath23.png <hr> <h2><div class="phishy">Experimento 02</div></h2> Consideremos el problema de frontera dado como en (1)-(2), donde el coeficiente de difusión esta dado por <center> https://cdn.steemitimages.com/DQmaigXsRLG8ia7o3YtV5HvNB6abRVZ2CxrFXCVowfNAhBN/Img16.png</center> la velocidad convectiva esta dada por: <center> https://cdn.steemitimages.com/DQmbvBdi94oTHKXLRZm6yDukuWsuTeb4ecN4uMQ9V5Gax4T/Img17.png</center> con <center> https://cdn.steemitimages.com/DQmZba4PTwjmWXEspZWEwPBeTqcc88scDi84vdZEbAArocF/Img18.png</center> y las condiciones de frontera tipo Robin dadas por <center> https://cdn.steemitimages.com/DQmP5csiyVoP61XdvxQpQEkf3Q1mM7PnkAiC8uB3kLp1p5P/Img19.png</center> La función fuente <b>f(x)</b> se determina de tal manera que la solución analítica de nuestro problema sea: <center> https://cdn.steemitimages.com/DQmZugtByGqDiEPvao3dJxSBLbGGU92qK5MKvRGyZx79y9v/Img20.png</center> Es las gráficas anexas, comparamos la solución exacta contra la solución aproximada para mallas uniformes con 10, 20, 50, 60, 80, y 100 nodos o puntos de mallas. Como podemos observar, las primeras gráficas muestra comportamientos oscilatorios para la solución aproximada usando el método en Diferencias Finitas, a medida que se aumentan los nodos en la malla, el movimiento oscilatorio desaparece, tal cuál lo podemos apreciar a continuación: <center> https://cdn.steemitimages.com/DQmYuknWuX5w9HqcCJ9pDijWvc4mDcaFoFggZy5hRqnbMJ9/figDienteVariosNodos.png <sub>Gráficos elaborados con <b>GNU-Octave</b>. Elaborados por @abdulmath.</sub></center> A continuación mostramos el grado de convergencia de los métodos, así como una tabla donde se muestran los cálculos realizados. <center> https://cdn.steemitimages.com/DQmTubd7qs9jQS3fvcYV7vwdYFeBFNuqmc4JaEj37foW93d/figDienteErrorMaxL2.png <sub>Gráficos elaborados con <b>GNU-Octave</b>. Elaborados por @abdulmath.</sub></center> |# nodos|MDF (Máx)|MEF (Máx)|MDF (L<sub>2</sub>)|MEF (L<sub>2</sub>)| |---|---|---|---|---| |1000|1.154080|1.993329|1.004321|1.996938| |3000|1.000175|1.998233|0.998419|1.998873| |5000|1.000073|1.999533|0.998652|1.999803| |7000|1.000047|1.999993|0.999021|1.999919| |9000|1.000035|1.999783|0.999236|1.999950| <hr> https://cdn.steemitimages.com/DQmZne2kvXmUvL8qD6Bsa9iwnX8M6i4NMd8QCQSmNhsnqqb/SeparadorGMath08.png <hr> <h2><div class="phishy">Algunas Consideraciones</div></h2> * Resulta claro, que el MEF presenta mejores resultados en precisión y convergencia que el MDF. * En gran medida, se ha justificado el uso de MEF ante MDF en cuanto a la precisión del mismo, pero el MEF envuelve una complejidad teórica grande, para aquellos que no son matemáticos. Tal dificultad se acrecienta, si requiere aumentar la precisión y el orden de convergencia del método, sin embargo el MEF lo logra con mucha facilidad. * Además, hay que añadir que existe una eficiente implementación computacional, pues el uso de matrices para definir operadores y condiciones de contorno puede resultar en un rápido desbordamiento de memoria en el método MDF. * Otro aspecto que vale la pena mencionar es el alto grado de complejidad y dificultad que presenta MDF para trabajar en mallas que se ajusten a dominios cuyas geometrías son arbitrarias. <hr> https://cdn.steemitimages.com/DQmdpxUb7HtnNdmxthWLKfUjnPA5sind9336Fgw5iy7pfv3/SeparadorGMath12.png <hr> Queridos amigos y lectores, espero hayan disfrutado de esta publicación en la cual mostramos la eficiencia y precisión, así como el orden de convergencia de los métodos ya mencionados. Espero que esto pueda servir de apoyo a ustedes, hijos, nietos, sobrinos o amigos que quieran aprender un poco más del maravilloso mundo de las matemáticas y sus aplicaciones. No olviden dejar sus comentarios. Saludos y nos leemos pronto. <br>Si desean consultar un poco más del tema pueden usar las siguientes referencias. * Strikwerda, John C. <i>Finite difference schemes and partial differential equations.</i> Vol. 88. SIAM, 2004. * Ŝolín, Pavel. <i>Partial differential equations and the finite element method.</i> Vol. 73. John Wiley & Sons, 2005. Las imágenes, separadores y las ecuaciones fueron creadas y editadas con https://cdn.steemitimages.com/DQmYbufK9HG9LpAUVgEcFSNVmZG2irkjVy1duWbYqVyVtf4/LateX.png, y GIMP. Los gráficos y cálculos fueron realizados con <b>GNU-Octave.</b> Elaborados por @abdulmath. El software usado es completamente <b>Software Libre.</b> <center> https://cdn.steemitimages.com/DQmPqz2gevojVdxDQRk7wFj5uHqtD8VrmDKaAC3FYqrDKfJ/FinalGMath01.png <br><sub>Imagen elaborada por @abdulmath, diseñadas y editada con Karbon y GIMP.</sub></center> </div>
👍 abdulmath, steemitstats, ubg, djredimi2, delpilar, angelica7, carmenmdm, rmartinezpoeta, fenix7, odontologa7, bboomerang, martsteem, boomeranng, bittrecx, vidaparasita, polbot, lupafilotaxia, alaiza, lapp, lupabotane, steemtpistia, crassipes, josephace135, elvigia, dracrow, henjos, geadriana, alejandro7, gabybarboza, onthewayout, viannis, steemitboard, fermionico, engranaje, juanfb, bawer, anabel23, aidnessanchez, ricardo993, adrian11, ricodarly, vicky13, niklaus22, braulio, armandofd, chamovnzl, rmm31, jbermudezutrera, evero, porestelente, victorrojas4, maribelanzola, arletv, jesuskin, dinaudic, nachica, leopetitpp, jenrry2404, mariart1, mvangel94, visionfractal, khrisaeroth, eleazarvo, aliriera, andrick, yohamartinez, valquerales, petterjosph, kingmoi, empoweredmafer28, soniabalzan, damarysvibra, adrianachenille, miedoyficcion, psico, alisalof, dirur, franvnz, drumeraonline, valquiria666, miguelqd, sampraise, javyeslava.photo, jazmin112000, adalbertodrums, dianacatalina, afrikablr, carolinacardoza, josmerlys-bf, chrisrendon, sebastiaaanb, danargy, juandvg, barbivicotoria, hyroniz, tecniautojose, ender-salazar, unamenteenblanco, gabyx3-ber03, vicokiwi, canserbero, joseangelvs, drakkomaximo1234, jbfa, untaljames, jennylu, pollyanna, betza, titina, nina29arias, jetsurypadilla, endopediatria, juancarlos2906, lucas-alma, monarcaazul, gabovillalba, procolombia, masdelminimo, yuliarez, adri525, steemstem, alexzicky, anarchyhasnogods, justtryme90, lemouth, mahdiyari, alexander.alexis, fancybrothers, howo, planetenamek, metmuseum, felixrodriguez, espoem, mayowadavid, enzor, pratik27, tfcoates, robotics101, sco, adetola, rharphelle, shoganaii, terrylovejoy, olajidekehinde, kingabesh, joseleogon, ajpacheco1610, lianaakobian, anyes2013, cryptoitaly, effofex, de-stem, serylt, yann85, temitayo-pelumi, astrophoto.kevin, osariemen, mr-hades, up-quark, zest, borislavzlatanov, mountain.phil28, monie, croctopus, doctor-cog-diss, biomimi, schlunior, thevenusproject, laylahsophia, the-devil, youtake, foundation, himal, star-vc, lamouthe, dna-replication, curie, liberosist, meerkat, awesomianist, locikll, cryptokrieg, rachelsmantra, skycae, vact, nitesh9, kerriknox, indy8phish, peaceandwar, anikekirsten, moksamol, sohailahmed, trishy, stahlberg, didic, charlie777pt, fanstaf, neumannsalva, janine-ariane, drmake, mathowl, mrday, call-me-howie, hansmast, gatis-photo, saunter, anwenbaumeister, hendrikdegrote, emekasegun, stem-espanol, saunter-pl, steem-hikers, event-horizon, florae, conficker, gra, rjbauer85, kryzsec, amavi, dber, blessing97, kenadis, carloserp-2000, mountainwashere, hadji, fredrikaa, abigail-dantes, dysfunctional, ksolymosi, ertwro, churchboy, lesshorrible, physics.benjamin, sakura1012, alexdory, chloroform, ugonma, dexterdev, akeelsingh, suravsingh, whileponderin, mrbreeziewrites, masterwriter, joelagbo, jade56, bearded-benjamin, drsensor, wackou, michelios, spederson, thinknzombie, massivevibration, happychild, benleemusic, eurogee, kelos, serialfiller, aamin, steepup, derbesserwisser, vanessahampton, culgin, theunlimited, utopian-io, lafona-miner, bue, boy, reyito, roelandp,