{"id":1143,"date":"2017-05-25T09:35:25","date_gmt":"2017-05-25T14:35:25","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=1143"},"modified":"2026-03-09T17:10:01","modified_gmt":"2026-03-09T22:10:01","slug":"metodo-punto-fijo","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u02\/metodo-punto-fijo\/","title":{"rendered":"2.3 M\u00e9todo del Punto fijo"},"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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"concepto\">1. M\u00e9todo del Punto fijo - \u00bfQu\u00e9 es?<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Burden 2.2 p41, Chapra 6.1 p143, Rodr\u00edguez 3.2 p44<\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"305\" height=\"222\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_balanza_animado.gif\" alt=\"m\u00e9todo del punto fijo balanza animado\" class=\"wp-image-13328\" \/><\/figure>\n\n\n\n<p>El m\u00e9todo del punto fijo es un m\u00e9todo abierto, tambi\u00e9n llamado de iteraci\u00f3n de un punto o sustituci\u00f3n sucesiva, que reordena la ecuaci\u00f3n planteada para ra\u00edces de ecuaciones<\/p>\n\n\n\n<p class=\"has-text-align-center\">f(x) = 0<\/p>\n\n\n\n<p>separando una <strong>x<\/strong> al lado izquierdo de la igualdad.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>x <\/strong>= g(<strong>x<\/strong>)<\/p>\n\n\n\n<p>Esto permite buscar la <strong>intersecci\u00f3n<\/strong> entre la recta Identidad <strong>y=x<\/strong> y la curva <strong>g(x)<\/strong>, que es lo que qued\u00f3 del lado derecho de la igualdad.<br>Una representaci\u00f3n gr\u00e1fica del proceso de muestra en la gr\u00e1fica.<\/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\/05\/puntofijo_converge_animado.gif\" alt=\"m\u00e9todo del punto fijo converge animado\" class=\"wp-image-13329\" \/><\/figure>\n\n\n\n<p>Observe que la <strong>ra\u00edz<\/strong> de f(<strong>x<\/strong>) se encuentra en el mismo valor de x donde ocurre la <strong>intersecci\u00f3n<\/strong> entre la recta identidad <strong>y=x <\/strong>, en color verde, y la funci\u00f3n g(<strong>x<\/strong>), en color naranja. Como referencia, se usa la linea vertical en <strong>x<\/strong>=ra\u00edz en color morado.<\/p>\n\n\n\n<p>El m\u00e9todo consiste en establecer un punto inicial x<sub>0<\/sub> para la b\u00fasqueda, a partir del cual se calcula el valor g(x<sub>0<\/sub>).&nbsp;En la siguiente iteraci\u00f3n el nuevo valor para <strong>x<\/strong> es g(x<sub>0<\/sub>), que se refleja en la recta identidad y nuevamente se usa para calcular g(x).<\/p>\n\n\n\n<p>El resultado iterativo se muestra en la figura animada, donde se observa que el resultado es convergente.<\/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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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\">1.1 Ejemplos en gr\u00e1ficas<\/h2>\n\n\n\n<p>Se muestran algunos ejemplos para destacar lo indicado de forma gr\u00e1fica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><em>Ejemplo 1<\/em><\/h3>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(x):e^{-x} - x = 0<\/span>\n\n\n\n<p>se reordena para tener:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x = e^{-x}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> g(x) = e^{-x}<\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"435\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_ejemplo01.png\" alt=\"punto fijo ejemplo01\" class=\"wp-image-13330\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><em>Ejemplo 2<\/em><\/h3>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(x): x^2 - 2x -3 = 0<\/span>\n\n\n\n<p>se reordena para tener:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x = \\frac {x^2 - 3}{2} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> g(x) = \\frac {x^2 - 3}{2}<\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"530\" height=\"396\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_ejemplo02.png\" alt=\"punto fijo ejemplo02\" class=\"wp-image-13331\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\"><em>Ejemplo 3<\/em><\/h3>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(x): \\sin (x) = 0<\/span>\n\n\n\n<p>puede ser complicado despejar x, por lo que se simplifica el proceso sumando x en ambos lados.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x = \\sin (x) + x <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> g(x) = \\sin (x) + x<\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"531\" height=\"394\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_ejemplo03.png\" alt=\"punto fijo ejemplo 03\" class=\"wp-image-13332\" \/><\/figure>\n\n\n\n<p>El m\u00e9todo proporciona una f\u00f3rmula para predecir un valor nuevo de x en funci\u00f3n del valor anterior:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_{i+1} = g(x_i) <\/span>\n\n\n\n<p>con error aproximado calculado como:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\epsilon_a = \\left| \\frac{x_{i+1} - x_i}{x_{i+1}} \\right| 100\\% <\/span>\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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><em><strong>Tarea<\/strong><\/em><\/p>\n\n\n\n<p>Plantee como usar los siguientes conceptos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00bfcu\u00e1l ser\u00eda el valor de tolerancia?<\/li>\n\n\n\n<li>\u00bfpar\u00e1metros de inicio?<\/li>\n\n\n\n<li>compare con con otro m\u00e9todo conocido<\/li>\n\n\n\n<li>Revisar el resultado cuando no se cumple que |g'(x)|&lt;1<\/li>\n<\/ul>\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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"ejercicio\">2. Ejercicio<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Burden 2.2 p41, Chapra 6.1 p143, Rodr\u00edguez 3.2 p44<\/p>\n\n\n\n<p>Encontrar la soluci\u00f3n a la ecuaci\u00f3n, usando el m\u00e9todo del punto fijo, considerando <strong>tolera<\/strong>ncia de 0.001<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(x): e^{-x} - x = 0<\/span>\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\/05\/puntofijo_converge_animado.gif\" alt=\"m\u00e9todo del punto fijo converge animado\" class=\"wp-image-13329\" \/><\/figure>\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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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\">3. Desarrollo Anal\u00edtico - ejemplo paso a paso<\/h2>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"305\" height=\"222\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_balanza_animado.gif\" alt=\"m\u00e9todo del punto fijo balanza animado\" class=\"wp-image-13328\" \/><\/figure>\n\n\n\n<p>Al igual que los m\u00e9todos anteriores, es conveniente determinar el intervalo [a,b] donde es posible evaluar f(x). Se revisa si hay cambio de signo en el intervalo para buscar una ra\u00edz. Para el ejemplo, el intervalo de observaci\u00f3n ser\u00e1 [0,1], pues f(0)=1 es positivo y f(1)=-0.63 es negativo.<\/p>\n\n\n\n<p>Para el punto fijo, se reordena la ecuaci\u00f3n para para tener una ecuaci\u00f3n con la variable independiente separada. Se obtiene por un lado la recta identidad y=x, por otro se tiene la funci\u00f3n g(x).<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(x): e^{-x} - x = 0<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x = e^{-x}<\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"566\" height=\"436\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_ejercicio01.png\" alt=\"punto fijo ejercicio 01\" class=\"wp-image-13333\" \/><\/figure>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> g(x) = e^{-x}<\/span>\n\n\n\n<p>Se buscar\u00e1 la intersecci\u00f3n entre las dos expresiones .<\/p>\n\n\n\n<p>Se puede iniciar la b\u00fasqueda por uno de los extremos del intervalo [a,b].<\/p>\n\n\n\n<p><em>iteraci\u00f3n 1<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_itera0.gif\" alt=\"m\u00e9todo del punto fijo itera=0 gr\u00e1fica\" class=\"wp-image-22820\" style=\"width:350px\" \/><\/figure>\n\n\n\n<p>- iniciando desde el extremo izquierdo <code>c=a<\/code>,<\/p>\n\n\n\n<p class=\"has-text-align-center\">c = 0<\/p>\n\n\n\n<p>- se determina el valor nuevo de gc=g(<strong>c<\/strong>) ,<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> g(c) = g(0) = e^{-0} = 1 <\/span>\n\n\n\n<p>- se determina la diferencia de la aproximaci\u00f3n o <strong>error<\/strong> = |gc-c|<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> tramo = |1-0| = 1<\/span>\n\n\n\n<p>- se proyecta en la recta identidad, como el nuevo punto de evaluaci\u00f3n<\/p>\n\n\n\n<p class=\"has-text-align-center\">c = g(c) = 1<\/p>\n\n\n\n<p>- se repite el proceso para el nuevo valor de <strong>c<\/strong>, hasta que el error sea menor al <strong>tolera<\/strong>do. En caso que el proceso no converge, se utiliza un contador de iteraciones m\u00e1ximo, para evitar tener un bucle infinito.<\/p>\n\n\n\n<p><em>iteraci\u00f3n 2<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_itera1.gif\" alt=\"m\u00e9todo del punto fijo itera=1 gr\u00e1fica\" class=\"wp-image-22822\" style=\"width:350px\" \/><\/figure>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = 1 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> g(c) = g(1) = e^{-1} = 0.3678 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> tramo =|0.3678 - 1|= 0.6322<\/span>\n\n\n\n<p>El nuevo valor de c=0.3678<\/p>\n\n\n\n<p>Se observa tambi\u00e9n que el valor absoluto de tramo disminuye entre iteraciones.<\/p>\n\n\n\n<p><em>iteraci\u00f3n 3<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/puntofijo_itera2.gif\" alt=\"m\u00e9todo del punto fijo itera=2 gr\u00e1fica\" class=\"wp-image-22823\" style=\"width:350px\" \/><\/figure>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = 0.3678 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> g(c) = e^{-0.3678} = 0.6922 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> tramo =|0.6922-0.3678|= 0.3244<\/span>\n\n\n\n<p>El nuevo valor de c=0.6922<\/p>\n\n\n\n<p>Se observa tambi\u00e9n que el valor absoluto de tramo disminuye en cada iteraci\u00f3n, por lo que el m\u00e9todo es convergente.<\/p>\n\n\n\n<p>La tabla resumen de las iteraciones:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>iteraci\u00f3n<\/th><th><strong>c<\/strong><\/th><th><strong>g<\/strong>(c)<\/th><th>|tramo|<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>0<\/td><td>1.0<\/td><td>1<\/td><\/tr><tr><td>2<\/td><td>1.0<\/td><td><strong><em>0.3678<\/em><\/strong><\/td><td>0.6322<\/td><\/tr><tr><td>3<\/td><td><strong><em>0.3678<\/em><\/strong><\/td><td>0.6922<\/td><td>0.3244<\/td><\/tr><tr><td>4<\/td><td>0.6922<\/td><td>...<\/td><td>&nbsp;<\/td><\/tr><tr><td>5<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>El proceso realizado en la tabla se muestra en la gr\u00e1fica, para una funci\u00f3n que converge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ejemplo: M\u00e9todo Punto fijo No converge<\/h2>\n\n\n\n<p>Cuando la 'x' a separar en la expresi\u00f3n f(x) es otra, el resultado no siempre ser\u00e1 convergente. Si para el ejercicio anterior se hubiese despejado la 'x' en el exponencial, la expresi\u00f3n g(x) se obtiene como:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(x): e^{-x} - x = 0<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> e^{-x} = x<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\ln\\Big(e^{-x}\\Big) = \\ln(x)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -x= \\ln(x)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x= -\\ln(x)<\/span>\n\n\n\n<p>Al revisar la gr\u00e1fica del algoritmo se observa que tambi\u00e9n se cumple que la ra\u00edz de f(x) coincide en el valor x con la intersecci\u00f3n entre la identidad y g(x).<\/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\/05\/puntofijo_noconverge_ejemplo01.png\" alt=\"punto fijo no converge ejemplo0 1\" class=\"wp-image-13334\" \/><\/figure>\n\n\n\n<p>Sin embargo al realizar las iteraciones se tiene que:<\/p>\n\n\n\n<p><em>iteraci\u00f3n 1<\/em><\/p>\n\n\n\n<p class=\"has-text-align-center\">c = 0.5<br>gc = -ln(0.5) = 0.6931<br>tramo = | 0.6931-0.5| =<strong>0.1931<\/strong><\/p>\n\n\n\n<p><em>iteraci\u00f3n 2<\/em><\/p>\n\n\n\n<p class=\"has-text-align-center\">c = 0.6931<br>gc = -ln(0.6931) = 0.3665<br>tramo = | 0.3665-0.6931| = <strong>0.3266<\/strong><\/p>\n\n\n\n<p><em>iteraci\u00f3n 3<\/em><\/p>\n\n\n\n<p class=\"has-text-align-center\">c = 0.3665<br>gc = -ln(0.3665) = 1.0037<br>tramo = | 1.0037-0.3665| = <strong>0.6372<\/strong><\/p>\n\n\n\n<p>Se observa que el tramo o error aumenta en cada iteraci\u00f3n, con lo que se concluye que de esta forma, la aplicaci\u00f3n del m\u00e9todo <strong>no es convergente<\/strong>.<\/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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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\">4. Algoritmo en Python para el m\u00e9todo del Punto Fijo<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"M\u00e9todo del Punto Fijo y gr\u00e1fica con Python - M\u00e9todos Num\u00e9ricos\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ID_5uXfOal8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>El algoritmo en Python requiere: la funci\u00f3n gx, el punto inicial, la tolerancia, y el n\u00famero de iteraciones m\u00e1xima, <code>iteramax<\/code>. En el algoritmo se a\u00f1ade f(x) como una referencia para la gr\u00e1fica del m\u00e9todo en el intervalo.<\/p>\n\n\n\n<p>El resultado del algoritmo se presenta como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ra\u00edz en:  0.5669089119214953\nerrado :  0.0006477254067881466\nitera  :  14<\/code><\/pre>\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# M\u00e9todo del punto fijo\n# g(x) se obtiene al despejar una x de f(x)\n# el valor inicial c, se puede revisar con la gr\u00e1fica\nimport numpy as np\n\n# INGRESO\nfx = lambda x: np.exp(-x) - x\ngx = lambda x: np.exp(-x)\n\nc = 0  # valor inicial\ntolera = 0.001\niteramax = 40\n\n# PROCEDIMIENTO\ntramo = 2*tolera # al menos una iteracion\ni = 0  # iteraci\u00f3n inicial\nwhile tramo&gt;=tolera and i&lt;iteramax:\n    gc = gx(c)\n    tramo = abs(gc-c)\n    c = gc\n    i = i + 1\n\nif (i&gt;=iteramax): # Valida convergencia\n    c = np.nan\n\n# SALIDA\nprint('ra\u00edz en: ', c)\nprint('errado : ', tramo)\nprint('itera  : ', i)\n<\/pre><\/div>\n\n\n<p>Para obtener la gr\u00e1fica b\u00e1sica se determinan los puntos para cada funci\u00f3n fx y gx. Como los valores de c y gc cambiaron durante el algoritmo, para la siguiente secci\u00f3n es necesario volver a escribirlos u obtener una copia de los valores en otra variable para reutilizarlos en \u00e9sta secci\u00f3n.<\/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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"graficasimple\">5. Gr\u00e1fica en Python<\/h2>\n\n\n\n<p>Se a\u00f1aden las siguiente instrucciones al algoritmo anterior:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA ------------------------\nimport matplotlib.pyplot as plt\n \na = 0  # intervalo de gr\u00e1fica en &#x5B;a,b]\nb = 1\nmuestras = 21\ntitulo = 'Punto Fijo'\n \n# calcula los puntos para fx y gx\nxk = np.linspace(a,b,muestras)\nfk = fx(xk)\ngk = gx(xk)\n \nplt.plot(xk,fk, label='f(x)',\n         linestyle='dashed')\nplt.plot(xk,gk, label='g(x)')\nplt.plot(xk,xk, label='y=x')\nplt.plot(c,c, 'o')\nplt.axvline(c, color='magenta',\n            linestyle='dotted')\nplt.axhline(0)\nplt.xlabel('x')\nplt.ylabel('f(x)')\nplt.title(titulo)\nplt.grid()\nplt.legend()\nplt.tight_layout()\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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"funcion\">6. Algoritmo en Python como Funci\u00f3n para el M\u00e9todo del Punto Fijo<\/h2>\n\n\n\n<p>El resultado del algoritmo como una funci\u00f3n y mostrando la tabla de resultados por iteraciones es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>M\u00e9todo del Punto Fijo\ni &#091;'xi', 'gi', 'tramo']\n0 &#091;0. 1. 1.]\n1 &#091;1.       0.367879 0.632121]\n2 &#091;0.367879 0.692201 0.324321]\n3 &#091;0.692201 0.500474 0.191727]\n4 &#091;0.500474 0.606244 0.10577 ]\n5 &#091;0.606244 0.545396 0.060848]\n6 &#091;0.545396 0.579612 0.034217]\n7 &#091;0.579612 0.560115 0.019497]\n8 &#091;0.560115 0.571143 0.011028]\n9 &#091;0.571143 0.564879 0.006264]\n10 &#091;0.564879 0.568429 0.003549]\n11 &#091;0.568429 0.566415 0.002014]\n12 &#091;0.566415 0.567557 0.001142]\n13 &#091;0.567557 0.566909 0.000648]\nM\u00e9todo del Punto Fijo\niteraciones: 14\nra\u00edz en:  0.5669089119214953\nerrado: 0.0006477254067881466<\/code><\/pre>\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# M\u00e9todo del punto fijo\n# g(x) se obtiene al despejar una x de f(x)\n# el valor inicial c, se puede revisar con la gr\u00e1fica\nimport numpy as np\n\ndef puntofijo(gx,c,tolera,iteramax=50,vertabla=True, precision=6):\n    &quot;&quot;&quot;\n    g(x) se obtiene al despejar una x de f(x)\n    m\u00e1ximo de iteraciones predeterminado: iteramax\n    si no converge hasta iteramax iteraciones\n    la respuesta es NaN (Not a Number)\n    &quot;&quot;&quot;\n    itera = 0 # iteraci\u00f3n inicial\n    tramo = 2*tolera # al menos una iteracion\n\n    tabla=&#x5B;]\n    if vertabla==True:\n        print('M\u00e9todo del Punto Fijo')\n        print('i', &#x5B;'xi','gi','tramo'])\n        np.set_printoptions(precision)\n    \n    while (tramo&gt;=tolera and itera&lt;=iteramax):\n        gc = gx(c)\n        tramo = abs(gc-c)\n        \n        unafila = np.array(&#x5B;c,gc,tramo])\n        tabla.append(unafila)\n        if vertabla==True:\n            print(itera,unafila)\n        c = gc\n        itera = itera + 1\n    respuesta = c\n    # Valida respuesta\n    if itera&gt;=iteramax:\n        respuesta = np.nan\n        print('itera: ',itera,\n              'No converge,se alcanz\u00f3 el m\u00e1ximo de iteraciones')\n    tabla = np.array(tabla,dtype=float)\n    return(respuesta,tabla)\n\n# PROGRAMA ----------------------\n# INGRESO\nfx = lambda x: np.exp(-x) - x\ngx = lambda x: np.exp(-x)\n \nc = 0  # valor inicial\ntolera = 0.001\niteramax = 15\n \n# PROCEDIMIENTO\nc,tabla = puntofijo(gx,c,tolera,\n                    iteramax,vertabla=True)\nn = len(tabla)\nerrado = tabla&#x5B;n-1,2]\n\n# SALIDA\nprint('M\u00e9todo del Punto Fijo')\nprint('iteraciones:',n)\nprint('ra\u00edz en: ', c)\nprint('errado:',errado)\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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"grafica\">7. Gr\u00e1fica en Python para la funci\u00f3n de punto fijo<\/h2>\n\n\n\n<p>La secci\u00f3n para la gr\u00e1fica requiere el intervalo [a,b] para el eje x, adem\u00e1s presenta las variantes:<\/p>\n\n\n\n<p>Las muestras para la gr\u00e1fica de f(x), con la marca de un punto de la ra\u00edz.<\/p>\n\n\n\n<p>Para el caso de realizar la gr\u00e1fica de una iteraci\u00f3n particular, usar la variable <strong>itera_graf<\/strong>. Por ejemplo para las gr\u00e1ficas presentadas en cada iteraci\u00f3n en la secci\u00f3n de <a href=\"#analitico\">desarrollo anal\u00edtico<\/a>.<\/p>\n\n\n\n<p>Las instrucciones que se a\u00f1aden al algoritmo como funci\u00f3n son:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA --------------------\nimport matplotlib.pyplot as plt\n \na = 0  # intervalo de gr\u00e1fica en &#x5B;a,b]\nb = 1\nmuestras = 21\nitera_graf = 2 #n-1 # iteraci\u00f3n en gr\u00e1fica\ntitulo = 'Punto Fijo'\n \n# calcula los puntos para fx y gx\nxk = np.linspace(a,b,muestras)\nfk = fx(xk)\ngk = gx(xk)\n\nplt.plot(xk,fk, label='f(x)',\n         linestyle='dashed')\nplt.plot(xk,gk, label='g(x)')\nplt.plot(xk,xk, label='y=x')\n\nif itera_graf==(n-1): # iteraci\u00f3n final\n    plt.plot(c,c,'D',color='orange',label='c')\n\n    plt.axvline(c, color='magenta',\n                linestyle='dotted')\nif itera_graf&lt;(n-1): # una iteraci\u00f3n en gr\u00e1fica\n    &#x5B;c,gc,tramo] = tabla&#x5B;itera_graf]\n    &#x5B;c1,gc1,tramo1] = tabla&#x5B;itera_graf+1]\n    titulo = titulo + ', itera='+str(itera_graf)\n    plt.plot(c,c,'o',color='red',label='c')\n    plt.plot(c,gc,'o',color='green',label='g(c)')\n    plt.plot(gc,gc,'o',color='orange',label='c&#x5B;i+1]')\n\n    dx = c1-c # largo de flecha\n    dy = gc-c\n    plt.arrow(c,c, 0,dy,\n              length_includes_head = True,\n              head_width = 0.05*abs(dy),\n              head_length = 0.1*abs(dy))\n    plt.arrow(c,gc,dx,0,\n              length_includes_head = True,\n              head_width = 0.05*abs(dx),\n              head_length = 0.1*abs(dx))\n    \nplt.axhline(0,color='gray')\nplt.xlabel('x')\nplt.ylabel('f(x)')\nplt.title(titulo)\nplt.grid()\nplt.legend()\nplt.tight_layout()\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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"libreria\">8. Funci\u00f3n en librer\u00eda Scipy.optimize.fixed_point<\/h2>\n\n\n\n<p>El m\u00e9todo del punto fijo se encuentra disponible en la librer\u00eda Scipy, en la secci\u00f3n de optimizaci\u00f3n. Requiere la funci\u00f3n g(x), el punto inicial c, la tolerancia y el n\u00famero m\u00e1ximo de iteraciones:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; import numpy as np\n&gt;&gt;&gt; import scipy as sp\n&gt;&gt;&gt; gx = lambda x: np.exp(-x)\n&gt;&gt;&gt; c = 0\n&gt;&gt;&gt; sp.optimize.fixed_point(gx,c,xtol=0.001,maxiter=15)\narray(0.5671432948307147)<\/code><\/pre>\n\n\n\n<p>El valor predeterminado de iteraciones m\u00e1xima es 500 y la tolerancia predeterminada es xtol=1e-08<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.scipy.org\/doc\/scipy\/reference\/generated\/scipy.optimize.fixed_point.html\">https:\/\/docs.scipy.org\/doc\/scipy\/reference\/generated\/scipy.optimize.fixed_point.html<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><strong><em>Tarea<\/em><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Revisar lo que sucede cuando el valor inicial a esta a la derecha de la ra\u00edz.<\/li>\n\n\n\n<li>Validar que la funci\u00f3n converge, revisando que |g'(x)|&lt;1, o que la funci\u00f3n g(x) tenga pendiente menor a pendiente de la recta identidad.<\/li>\n<\/ul>\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><a href=\"#concepto\">Punto fijo<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/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\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Punto fijo Ejercicio Anal\u00edtico Algoritmo funci\u00f3n gr\u00e1fica librer\u00eda 1. M\u00e9todo del Punto fijo - \u00bfQu\u00e9 es? Referencia: Burden 2.2 p41, Chapra 6.1 p143, Rodr\u00edguez 3.2 p44 El m\u00e9todo del punto fijo es un m\u00e9todo abierto, tambi\u00e9n llamado de iteraci\u00f3n de un punto o sustituci\u00f3n sucesiva, que reordena la ecuaci\u00f3n planteada para ra\u00edces de ecuaciones f(x) [&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":[36],"tags":[],"class_list":["post-1143","post","type-post","status-publish","format-standard","hentry","category-mn-u02"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1143","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=1143"}],"version-history":[{"count":15,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1143\/revisions"}],"predecessor-version":[{"id":22830,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1143\/revisions\/22830"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}