Está en la página 1de 18

INSTITUTO POLITÉCNICO NACIONAL

UNIDAD PROFESIONAL
INTERDISCIPLINARIA
DE BIOTECNOLOGÍA

Métodos Numéricos (Taller)

Reporte #3: Métodos abiertos

Grupo: 4MV3

Profesores:
Zamora Justo José Alberto
González Pascual Víctor

Equipo #4

Integrantes del equipo:

• Franco Cabrera Evelyn Estefanía – Ing. Biomédica


• Martínez Aguilar María José – Ing. en Alimentos
• Morgado Cadena Valeria Itzihu – Ing. Biomédica
• Nuño Álvarez Andrea – Ing. Biotecnológica
• Pineda Gómez Jesús Alberto – Ing. Biomédica

Fecha de entrega: 15/09/2021


Problema de aplicación. Método de la bisección

Método del Punto Fijo

𝑓(𝑥) = 5𝑥 + 3cos⁡(𝑥)

Se basa en la descomposición o transformación de la función original f(x) a la


forma:
𝑓(𝑥) = 𝑥 − 𝑔(𝑥) = 0

𝑓(𝑥) = 0
𝑥 = 𝑔(𝑥)

5𝑥 + 3 cos(𝑥) = 0

3
𝑥1 = − cos(𝑥) → 𝑔1 (𝑥)
5
5
𝑥2 = acos (− 𝑥) → 𝑔2 (𝑥)
3

1.- Graficar la función en un intervalo apropiado y definir el punto de inicio de las


aproximaciones x0.
2.- Descomponer la función a la siguiente forma:
𝑓(𝑥) = 𝑥 − 𝑔(𝑥)
3.- Verificar si esta transformación cumple o no los criterios de convergencia del
método del punto fijo.
4.- Calcular la siguiente aproximación a la raíz y el error iterativo por medio de:
𝑥𝑖 = 𝑔(𝑥𝑖−1 )
𝑒 = |𝑥𝑖 − 𝑥𝑖−1 |
5.- Repetir el paso anterior hasta que el error obtenido sea menor o igual a la
tolerancia definida en el problema.

Ejemplo 1
Encontrar la raíz de la siguiente función empleando el método del punto fijo con
una tolerancia de 0.001 partiendo de x0=2
𝑓(𝑥) = 5𝑥 + 3cos⁡(𝑥)
3
𝑥1 = − cos(𝑥) → 𝑔1 (𝑥)
5
Código
f=inline('5*x+3*cos(x)'); >> e=x2-x1
x=-3:0.1:3; >> x3=g(x2)
y=f(x); >> e=x3-x2
>> x4=g(x3)
plot(x,y) >> e=x4-x3
grid on >> x5=g(x4)
>> e=x5-x4
g=inline('-3/5*cos(x)'); >> x6=g(x5)
x0=2; >> e=x6-x5
>> x7=g(x6)
>> x1=g(x0) >> e=x7-x6
>> e=abs(x1-x0)
>> x2=g(x1)
Tabla de iteraciones

i xi error
0 2 -
1 0.2497 1.7503
2 -0.5814 0.8311
3 -0.5014 0.08
4 -0.5261 0.0247
5 -0.5189 0.0073
6 -0.521 0.0022
7 -0.5204 6.51E-04

Gráfica
Resultado
La raíz está en -0.5204 con un error de 6.51x10-4.

Ejemplo 2
Encontrar la raíz de la siguiente función empleando el método del punto fijo con
una tolerancia de 0.001 partiendo de x0 = -0.5
15
𝑓(𝑥) = 𝑥 −
𝑒𝑥
− 2𝑥 2 + 4
15
𝑔(𝑥) = 𝑥
𝑒 − 2𝑥 2 + 4

El método no converge

i xi error
0 -0.5 -
1 3.6527 4.1527
2 0.9437 2.709
3 3.1326 2.1889
4 2.0527 1.0799
5 4.462 2.4093
6 0.295 4.1669
7 2.9019 2.6068

Método de Newton-Raphson
Δ𝑦 𝑦1 − 𝑦0
𝑓 ′ (𝑥0 ) = 𝑚 = =
Δ𝑥 𝑥1 − 𝑥0

0 − 𝑓(𝑥0 )
𝑓 ′ (𝑥0 ) =
𝑥1 − 𝑥0

𝑓(𝑥0 )
𝑥1 = 𝑥0 −
𝑓 ′ (𝑥0 )
Pasos
1.- Graficar la función en un intervalo apropiado y definir el punto de inicio de las
aproximaciones x0.
2.- Verificar si cumple los criterios de convergencia del método de Newton-
Raphson.
3.- Calcular la siguiente aproximación a la raíz y el error iterativo por medio de:
𝑓(𝑥𝑖−1 )
𝑥𝑖 = 𝑥𝑖−1 −
𝑓 ′ (𝑥𝑖−1 )
𝑒 = |𝑥𝑖 − 𝑥𝑖−1 |
4.- Repetir el paso anterior hasta que el error obtenido sea menor o igual a la
tolerancia definida en el problema.

Ejemplo 1
Una mezcla equimolar de monóxido de carbono y oxigeno alcanza el equilibrio a
300 K y a una presión de 5 atm. La reacción teórica es:

1
𝐶𝑂 + ⁡ 𝑂2 ⇄ 𝐶𝑂2
2

La reacción química real se escribe como:

1 1
𝐶𝑂 + ⁡ 𝑂2 → 𝑥𝐶𝑂 + ⁡ (1 + 𝑥)𝑂2 + (1 − 𝑥)𝐶𝑂2
2 2

La ecuación de equilibrio químico para determinar la fracción del CO restante, x,


se escribe como:

(1 − 𝑥)(3 + 𝑥)1⁄2
𝐾𝑝 = ⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡0 < 𝑥 < 1
𝑥(𝑥 + 1)1⁄2 𝑃1⁄2
1
Donde 𝐾𝑝 = 2.86 es la constante de equilibrio para 𝐶𝑂 + ⁡ 2 𝑂2 ⇄ 𝐶𝑂2 a 3200K y
P = 4 atm es la presión. Determinar el valor x por medio del Método de Newton-
Raphson con una tolerancia de 0.00001.

(1 − 𝑥)(3 + 𝑥)1⁄2
− 2.86 = 0
𝑥(𝑥 + 1)1⁄2 (4)1⁄2
Código
f=inline('(1-x).*(3+x).^(1/2)./ ( x.* (x+1).^(1/2).* 4^(1/2) ) -
2.86');
x=0.1:0.001:1;
y=f(x);
plot(x,y)
grid on

x0=0.2;
syms x
fp= diff(f(x));
fp = inline(fp);

>> x1=x0-f(x0)/fp(x0)
>> e=abs(x1-x0)
>> x2=x1-f(x1)/fp(x1)
>> e=abs(x2-x1)
>> x3=x2-f(x2)/fp(x2)
>> e=abs(x3-x2)
>> x4=x3-f(x3)/fp(x3)
>> e=abs(x4-x3)
Gráfica

Tabla de iteraciones

i xi error
0 0.2 -
1 0.2191 0.0191
2 0.2211 0.002
3 0.2211 1.94E-05
4 0.2211 1.73E-09

Resultado
La raíz está en 0.2211 con un error de 1.73x10-9
Criterios de convergencia del método del punto fijo.
El método del punto fijo es un método iterativo que permite resolver sistemas de
ecuaciones no necesariamente lineales. En particular se puede utilizar para determinar
raíces de una función de la forma f(x), siempre y cuando se cumplan los criterios de
convergencia.
El método de iteración de punto fijo, también denominado método de aproximación
sucesiva, requiere volver a escribir la ecuación f(x) = 0 en la forma
x = g(x).
El procedimiento empieza con una estimación o conjetura inicial de x, que es mejorada
por iteración hasta alcanzar la convergencia. Para que converja, la derivada (dg / dx)
debe ser menor que 1 en magnitud (al menos para los valores x que se encuentran
durante las iteraciones). La convergencia será establecida mediante el requisito de que
el cambio en x de una iteración a la siguiente no sea mayor en magnitud que alguna
pequeña cantidad €.

Pasos a seguir:
1. Se ubica la raíz de f(x) analizando la gráfica.
2. Se obtiene un despeje x = g(x) de la función.
3. Obtenemos de x = g(x) su derivada g´(x).
4. Resolviendo la desigualdad -1 ≤ g´(x).≤ 1 obtenemos el rango de valores en los cuales
esta el punto fijo llamado R.
5. Con R buscamos la raíz en g(x), es decir g(R) = R haciendo iteración de las
operaciones.

Ejemplo 1:
Sea f(x) = x2 − 5x + 3 una función, encuentre la raíz.
Ya que se tienen los valores del rango R, encontramos la raíz haciendo la iteración de
las operaciones:

En la tabla se puede ver el valor que en este caso se uso de R, la iteración consiste en
usar ese valor en x = g(x) para obtener los siguientes valores haciendo la misma
operación usando el valor anterior.
Después de un número considerable de iteraciones obtenemos la raíz en 4.30268775.

Ejemplo 2:
Resolver la siguiente ecuación no-lineal:
𝑓⁡(𝑥) ⁡ = ⁡0.5𝑠𝑖𝑛(𝑥) ⁡ − ⁡𝑥⁡ + 1⁡ = ⁡0
Se obtiene el proceso iterativo definido por:
𝑔(𝑥) ⁡ = ⁡𝑥⁡ = ⁡0.5𝑠𝑖𝑛(𝑥) ⁡ + 1
Resolviendo el proceso tenemos:
𝑥1⁡ = ⁡𝑔(0) ⁡ = ⁡0.5𝑠𝑖𝑛(0) ⁡ + 1⁡ = 1
𝑥2⁡ = ⁡𝑔(1) ⁡ = ⁡0.5𝑠𝑖𝑛(1) ⁡ + 1⁡ = 1.420735⁡
𝑥3⁡ = ⁡𝑔(1.420735) ⁡ = 1.494380⁡
𝑥4⁡ = ⁡𝑔(1.494380) = 1.498540
𝑥5⁡ = ⁡𝑔(1.498540) ⁡ = 1.498695
𝑥6⁡ = ⁡𝑔(1.498695) ⁡ = 1.498700
𝑥7⁡ = ⁡𝑔(1.498700) ⁡ = 1.498701
𝑥8⁡ = ⁡𝑔(1.498701) = 1.498701
La solución de
𝑓⁡(𝑥) = 0.5 sin(𝑥) − ⁡𝑥⁡ + 1⁡ = ⁡0
Es
𝑥⁡ = 1.498701⁡⁡
𝑓⁡(1.498701) ⁡ = ⁡0.00000013334465
Criterios de convergencia del método de Newton-Raphson.

El método de Newton-Raphson, permite hallar una raíz de una ecuación no-lineal


siempre y cuando se parta de una buena estimación inicial de la misma.
El esquema iterativo de Newton puede derivarse del desarrollo de Taylor de la función
alrededor de la estimación inicial.

Ahora bien, la recta tangente a la función, que pasa por el punto [x0 , f(x0)], se encuentra
definida por la siguiente expresión:

Si denominamos x1 a la intersección de g(x) con el eje x (es decir, la raíz de g(x)),


resolviendo dicha ecuación obtenemos, la siguiente expresión:

y generalizando este esquema de aproximaciones sucesivas a la raíz, obtenemos:

Para que el método de Newton-Raphson converja deben cumplirse ciertas condiciones


de convergencia. En la siguiente figura podemos apreciar, como aún partiendo de un
punto cercano a la raíz buscada, en uncaso el método converge y en otro caso no .
Ejemplo:
Hallar la raíz de la función cuya expresión simbólica se
aprecia en el siguiente gráfico, que se encuentra en el
intervalo [0, 1]

Como podemos apreciar en la siguiente tabla de valores, la


convergencia de los valores obtenidos hacia el valor de la raíz es sumamente veloz.

Por los valores obtenidos es evidente que el método converge hacia la solución, sin
embargo es conveniente analizar las condiciones de convergencia previamente. Analice
qué sucedería si el intervalo fuera [0.1, 1]
2.- Calcular las dos intersecciones de las siguientes funciones utilizando el Método de
Newton-Raphson con una tolerancia de 1x10-5.

𝑓(𝑥) = ⁡ −3𝑥 2 + 3
𝑔(𝑥) = 𝑒 −𝑥 2
- Comenzamos realizando un despeje de las funciones, para generar una sola.
ℎ(𝑥) = 𝑓(𝑥) + 𝑔(𝑥)
ℎ(𝑥) = 𝑒 −𝑥 2 + 3𝑥 2 − 3
- Graficamos todas las funciones para encontrar los puntos de intersección

- Código del programa


clc; clear; close all;
f=inline('(-3*x.^2)+3');
g=inline('exp(-x.^2)');
h=inline('exp(-x.^2)+(3*x.^2)-3');

x=-10:0.01:10;
y=f(x);
plot(x,y,'b')

hold on

z=g(x);
plot(x,z,'--m')

w=h(x);
plot(z,w,'g')

grid on

x0=1;
%Obtenemos la diferencial y la definimos como inline para poder evaluarla
syms x
dh=diff(h(x));
dh=inline(dh);

>> x1=x0-h(x0)/dh(x0)

>> e=abs(x1-x0)

>> x2=x1-h(x1)/dh(x1)

>> e=abs(x2-x1)

>> x3=x2-h(x2)/dh(x2)

>> e=abs(x3-x2)
- Obteniendo una tabla como la siguiente:
3. Realizar un script en Matlab que calcule automaticamente la raíz de una función
ingresada por el usuario utilizando el Método de Punto Fijo. Además, el programa debe
graficar la función en un intervalo especificado por el usuario, solicitar la primera
aproximación a la raíz (xo) y la tolerancia
⁡(𝑓𝑥) = 5𝑥 + 3𝑐𝑜𝑠(𝑥)
𝑥0 = 1
𝑔(𝑥) = 3/5𝑐𝑜𝑠(𝑥)
𝐼𝑛𝑡𝑒𝑟𝑣𝑎𝑙𝑜 = ⁡0: 0.01: 1
𝑇𝑜𝑙𝑒𝑟𝑎𝑛𝑐𝑖𝑎 = 0.001

𝐿𝑎⁡𝑟𝑎𝑖𝑧⁡𝑒𝑠⁡0.520415⁡𝑐𝑜𝑛⁡𝑢𝑛⁡𝑒𝑟𝑟𝑜𝑟⁡𝑑𝑒⁡0.0005

Codigo:
clc,clear all,close all s=0;
syms x break
o=input('Ingrese funcion (fx):'); end
f=inline(o) end
x0=input('Ingresa x0:'); end
k=input('Ingrese g(x):');
g=inline(k) x1= -0.324181
x=input('Ingrese intervalo:');
t=input('Ingrese tolerancia:'); e1=1.32418
plot(x,f(x)) x2= -0.568747
legend('Funcion (fx)') e2=0.244566
grid on x3= -0.505546
s=1; e3=0.0632012
x4= -0.524946
while s~=0
for i=1:1:1000 e4=0.0194003
y(i)=g(x0); x5= -0.519211
fprintf('x%g= %g\n',i,y(i)) e5=0.00573559
e(i)=abs(y(i)-x0); x6= -0.520927
fprintf('e%g=%g \n',i,e(i)) e6=0.00171614
x0=y(i);
l=e(i); x7= -0.520415
if l<=t e7=0.000511692
Grafica:

Tabla:
4.- Realizar lo mismo que el ejercicio anterior con el Método de Newton-Raphson.

Para probar nuestro algoritmo usamos la formula:

Con:
Intervalo: 0.1:0.001:1
X0=0.2
Tolerancia=0.00001

Codigo:
clc,clear all,close all
syms x
o=input('Ingrese funcion:');
f=inline(o)
x=input('Ingrese intervalo:');
x0=input('Ingrese primera aproximación a la raíz:');
t=input('Ingrese tolerancia:');
plot(x,f(x))
legend('Funcion (fx)')
grid on
syms x
fp=diff(f(x));
fp=inline(fp);
s=1;
while s~=0
for i=1:1:1000
y(i)=x0-f(x0)/fp(x0);
fprintf('x%g= %g\n',i,y(i))
e(i)=abs(y(i)-x0);
fprintf('e%g=%g \n',i,e(i))
x0=y(i);
l=e(i);
if l<=t
s=0;
break
end
end
end

x1= 0.219094
e1=0.0190936
x2= 0.221127
e2=0.00203386
x3= 0.221147
e3=1.9406e-05
x4= 0.221147
e4=1.73443e-09

La raiz es 0.2211 con un error de 1.73*10^-9

Tabla:

Grafica:

También podría gustarte