Está en la página 1de 31

Instituto Politécnico Nacional

Unidad Profesional Interdisciplinaria de Biotecnología


Departamento de Ciencias Básicas
Academia de Matemáticas aplicadas

Métodos ABIERTOS de búsqueda de raíces

Nombre:

Hernández Silva Frida Tamara

Herrera Carrillo Jessyca Arely

Reyes López Valeria Dianey

Salas González Teresa Quetzalli

Grupo:

4MV13

Materia:

Métodos numéricos

Profesores:

José Alberto Zamora Justo

Víctor González Pascual

Fecha de entrega: 02 de marzo del 2022


INTRODUCCIÓN
Los métodos abiertos utilizan una fórmula para predecir la raíz. Esta fórmula
puede desarrollarse como una iteración simple de punto fijo (también
llamada iteración de un punto o sustitución sucesiva o método de punto
fijo). A diferencia de los métodos cerrados que requieren de un intervalo que
atrape a dicha raíz; En este caso, se obtendrán raíces de ecuaciones
algebraicas o trascendentes desde de una aproximación a su raíz, obtenida
a partir de la inspección de su gráfica o de su expresión analítica.

REPORTE DE CLASE
Vídeo 1. Búsqueda de raíces y método gráfico.
Donde nos sirve para conocer raíces en funciones no lineales.
Raíces en funciones. - Son el valor de x en cualquier f(x)=0. Donde
gráficamente una raíz es el valor en x en el cual la función cruza con el eje
x.
Donde los métodos cerrados se nombran:
• Método gráfico
• Método de la bisección.

Estos métodos solo aplican con RAICES REALES.


Podemos definir al Método grafico como su nombre lo indica se basa en
graficar la función en un intervalo apropiado y con base en ello, se
determina visualmente donde se determina la raíz.
Ejemplo
Encontrar la raíz de la siguiente función con el método gráfico.

2
𝑓(𝑥) = 𝑒 −𝑥 − 0.1𝑥

Código
clc; clear; close all
%Ejercicio 1 de la clase de búsqueda de raíces y met grafico
%4MV3

x= -10:0.1:10;
f=exp(-x.^2)-0.1*x;
plot(x,f)
hold on
grid on

y=zeros(size(x));
plot(x,y)

Gráfica

*NOTA: Dependiendo de cuantas cifras de precisión requerimos es el intervalo


que vamos a asignar.

Ejemplo 2.
Encontrar la raíz de la siguiente función con el método gráfico con 3 cifras
de precisión.
𝑓(𝑥) = 𝐼𝑛(𝑥) − 10
No puede tener valores negativos porque sino sería imaginaria por lo tanto
no se podría graficar.
Código

clc; clear; close all


%Ejercicio 2 de la clase de búsqueda de raíces y met grafico
%4MV3

x= 5000:0.1:50000;
y=log(x)-10;
%Logaritmo natural es log
plot(x,y)

hold on
grid on

y=zeros(size(x));
plot(x,y)

Gráfica

Vídeo 2. Graficando funciones.


Suponemos que tenemos que graficar cos(𝑥) , 𝑥 𝐸[0,5𝜋]
Para que el vector este definido desde un valor de inicio hasta un valor final
si se puede utilizar las siguientes formas.
x: inicio: incremento: fin
otra manera de definir el vector es con linspace donde:
x= linspace (inicio, fin, n)
Donde tenemos que n es la longitud del vector.

Graficas

1. Sustitución directa
clc; colear; close all;
x= 0:0.1:5*pi
y=cos(x)
plot(x,y)

2. Variables tipo inline


clc; clear; close all;

x= 0:0.1:5*pi
f=inline('cos(x)');
y=f(x);
plot(x,y)

3. Función anónima
clc; clear; close all;

x= 0:0.1:5*pi
f=inline('cos(x)');
f=@(x)cos(x)
y=f(x);
plot(x,y)

4. Variable simbólica
clc; clear; close all;

syms x
f=cos(x);
fplot(f,[0,5*pi])

Ejemplo:
Graficar la función en el intervalo [-5,5]
2
𝑓(𝑥) = 2𝑒 −𝑥 + 1

Código
clc; clear; close all;

x= -5:0.1:5;
y=2*exp(-x.^2)+1;
plot(x,y)

Gráfica

Tomar en cuenta la siguiente tabla para realizar las operaciones entre


vectores:

Se encontró una
diferencia en el
ejemplo al utilizar
variable simbólica,
donde el programa
no marca algún error
si al operador ^ no se
le coloca (.)
Vídeo 3. Introducción el método de la bisección.
El método de bisección sirva para búsqueda de raíces, donde el primer paso
de todos los pasos es la gráfica, por lo tanto, es importante es saber
implementar nuestra grafica de forma adecuada, lo cual cabe destacar
que el intervalo es la clave de este método, porque sino lo empleamos bien
puede haber discontinuidades, por consiguiente, tendríamos problemas
con el ejercicio. Cabe mencionar que cuando hay un cambio de signo
significa que existe una raíz.
Pasos para el método de la bisección:
1. Graficar la función en un valor apropiado.
2. Definir un intervalo de trabajo [a, b]
3. Calcular el punto medio, donde será mi primera aproximación de la
raíz (Xi) y el error.
𝑎+𝑏
𝑥𝑖 =
2
𝑏−𝑎
𝑒=
2
4. Si el error es menor o igual a la tolerancia determinada en el problema,
entonces ya acabamos la raíz aproximada es xi, por el contrario,
realizar lo siguiente.
• Si 𝑓(𝑎)𝑓(𝑥𝑖) < 0, entonces redefinir b como xi
• Si 𝑓(𝑥𝑖 )𝑓(𝑏) < 0, entonces redefinir a como xi.

5. Repetir los pasos anteriores.


𝑏−𝑎
𝑡𝑜𝑙 ≤
2𝑛
𝑏−𝑎
log(𝑡𝑜𝑙) ≤ log( 𝑛 )
2

log(𝑡𝑜𝑙) ≤ log(𝑏 − 𝑎) − log( 2𝑛 )

log(𝑡𝑜𝑙) − log(𝑏 − 𝑎) ≤ − nlog(2)

log(𝑡𝑜𝑙) − log(𝑏 − 𝑎)
≤𝑛
− log(2)

log(𝑏 − 𝑎) − log(𝑡𝑜𝑙)
𝑛≥
log(2)
Vídeo 5. Método del punto fijo.
𝒇(𝒓𝒂í𝒛) = 𝟎

Método de punto fijo


1. Graficar la función en un intervalo apropiado.
2. Descomponer la función f(x) a la forma
𝒇(𝒙) = 𝒙 − 𝒈(𝒙)

3. Elegir un valor inicial xo cercano a la raíz.


3.5 VERIFICAR QUE SE CUMPLA EL CRITERIO
4. Calcular la siguiente iteración (aproximación a la raíz) y el error
iterativo de la siguiente forma:
𝒙𝒊 = 𝒈(𝒙𝒊−𝟏 )
𝒆 = |𝒙𝒊 − 𝒙𝒊−𝟏 |
5. Repetir el paso anterior hasta que el error obtenido sea menor o igual
a la tolerancia determinada del problema.
Para este método la convergencia ocurre si la magnitud de la
pendiente de 𝒈(𝒙) es menor a la pendiente de la recta 𝒇(𝒙) = 𝒙

En consecuencia, si |𝑔′(𝑥)| < 1 entonces los errores disminuyen en cada


iteracion. Si |𝑔′(𝑥)| > 1, los errores creecen. Observando la figura 6.3, si la
derivada es positiva, los errores serán positivos y la solución iterativa será
monótona (a). y c).) Por otro lado, si la derivada es negativa, entonces
los errores oscilarán (b). y d).)

Ejemplo 1.
Encontrar la raíz de la siguiente función utilizando el método del punto
fijo con una tolerancia de 0.001
𝒇(𝒙) = 𝟓𝒙 + 𝟑 𝒄𝒐𝒔 (𝒙)
5𝑥 + 3 cos(𝑥) = 0

%Iteración 2
CÓDIGO x2=g(x1)
e2=abs(x2-x1)
clc; clear; close all
%EJEMPLO 1 CLASE ASINCRONA %Iteración 3
%PUNTO FIJO x3=g(x2)
%4MV3 e3=abs(x3-x2)
%Paso 1 graficar y definir
intervalo %Iteración 4
x=-5:0.1:5; x4=g(x3)
f=inline('5*x+3*cos(x)'); e4=abs(x4-x3)
y=f(x);
plot(x,y) %Iteración 5
grid on x5=g(x4)
e5=abs(x5-x4)
%Paso 2 descomponer f(x) en
f(x)=x-g(x) %Iteración 6
% x1=-3/5cos(x) x6=g(x5)
% x2=arcos(-5/3*x) e6=abs(x6-x5)

g=inline('-3/5*cos(x)'); %Iteración 7
x0=2; x7=g(x6)
e7=abs(x7-x6)
%Iteración 1
x1=g(x0)
e1=abs(x1-x0)

TABLA DE ITERACIONES
GRÁFICA

RESULTADO

La raíz de la función es -0.5204 con un error de


0.00065

Ejemplo 2.
Encontrar la raíz de la siguiente función utilizando el método del punto
fijo con una tolerancia de 0.001
𝟏𝟓
𝒇(𝒙) = 𝒙 −
𝒆𝟐 − 𝟐𝒙𝟐 + 𝟒

CÓDIGO
clc; clear; close all
%EJEMPLO 2 CLASE ASINCRONA
%PUNTO FIJO
%4MV3
%Paso 1 graficar y definir intervalo
x=-5:0.1:5;
f=inline('x-15./(exp(x)-2*x.^2+4)');
y=f(x);
%plot(x,y)
%grid on

%Paso 2 descomponer f(x) en f(x)=x-g(x)


%La función ya esta descompuesta
%podemos decir que g(x)=15/(e^x-2*x^2+4)

g=inline('15./(exp(x)-2*x.^2+4)');
x0=-0.5;

%Iteración 1
x1=g(x0)
e1=abs(x1-x0)

%Iteración 2
x2=g(x1)
e2=abs(x2-x1)

%Iteración 3
x3=g(x2)
e3=abs(x3-x2)

%Iteración 4
x4=g(x3)
e4=abs(x4-x3)

%Iteración 5
x5=g(x4)
e5=abs(x5-x4)

%Iteración 6
x6=g(x5)
e6=abs(x6-x5)

%Iteración 7
x7=g(x6)
e7=abs(x7-x6)

TABLA DE ITERACIONES
GRÁFICA

RESULTADO

Esta función es convergente

Vídeo 6. Método de Newton-Raphson


¿Cómo se obtiene el método gráficamente?
1. Como primer paso debemos de graficar la función para ver si hay
raíz.
2. Decidimos un valor aproximado a la raíz que se nombrara como x0.
3. Después trazaremos una línea tangente que pase por mi punto x0.
4. Observar en que momento cruza por eje x, esa será mi siguiente
aproximación.
5. La idea es que a través de cada iteración se aproxima a la raíz.
6. Se hará las veces que sean necesarias.

Δ𝑦 𝑦1 − 𝑦0
𝑓 ′ (𝑥0 ) = 𝑚 = =
Δ𝑥 𝑥1 − 𝑥0

−𝑓(𝑥0 )
𝑓 ′ (𝑥0 ) = → Mi aproximación x0 es mi aproximación. Y la función lo
𝑥1 −𝑥0
mismo. El único problema sería x1, pero quedaría despejado.
𝑓(𝑥0 )
𝑥1 = 𝑥0 −
𝑓 ′ (𝑥0 )
Se necesita un valor previo para calcular el valor actual es por ello sirve
esta fórmula para calcular iteraciones:
f(𝑥𝑖−1 )
𝑥𝑖 = 𝑥𝑖 − 1 −
f ′ (𝑥𝑖−1 )
Pasos para seguir de método analítico:
1. Graficar la función en un intervalo apropiado.
2. Elegir un valor inicial xo cercano a la raíz.
2.5 VERIFICAR QUE SE CUMPLA EL CRITERIO
3. Calcular la siguiente iteración (aproximación a la raíz) y el error
iterativo de la siguiente forma:
𝒙𝒊 = 𝒈(𝒙𝒊−𝟏 )
𝒆 = |𝒙𝒊 − 𝒙𝒊−𝟏 |
4. Repetir el paso anterior hasta que el error obtenido sea menor o igual
a la tolerancia determinada del problema.

Ejemplo 1.
Encontrar la raíz de la siguiente función utilizando el método del
punto fijo con una tolerancia de 0.0001
𝒇(𝒙) = 𝟓𝒙 + 𝟑 𝒄𝒐𝒔 (𝒙)
Aproximadamente son 5 o 6 iteraciones, debemos verificar si
llegamos a una iteración 10, porque quiere decir que estamos
haciendo algo mal.

CÓDIGO

clc; clear; close all

%EJEMPLO 1 CLASE ASINCRONA


%MÉTODO DE NEWTON RAPSHON
%4MV3
%Paso 1 graficar y definir intervalo
x=-5:0.1:5;
f=inline('5*x+3*cos(x)');
y=f(x);
plot(x,y)
grid on

x0=2;

%Encontramos la derivada
syms x
f1=diff(f(x));
f1=inline(f1);
tol=0.0001

% Iteración 1
x1=x0-(f(x0)/f1(x0))
e1=abs(x1-x0)

% Iteración 2
x2=x1-(f(x1)/f1(x1))
e2=abs(x2-x1)

% Iteración 3
x3=x2-(f(x2)/f1(x2))
e3=abs(x3-x2)

% Iteración 4
x4=x3-(f(x3)/f1(x3))
e4=abs(x4-x3)

% Iteración 5
x5=x4-(f(x4)/f1(x4))
e5=abs(x5-x4)

GRÁFICA

TABLA DE ITERACIONES

RESULTADO

La raíz se encuentra en -0.5205 con un error de


0.00000005

Ejemplo 2.
Encontrar la intersección de las siguientes funciones utilizando el método
de Newton-Raphson con una tolerancia de 0.001
2
𝑓(𝑥) = 𝑒 −𝑥 − 0.43𝑥
1
𝑔(𝑥) = −8.3𝑥 +
2
Para encontrar la intersección las funciones se van a igualar para después
igualarla a cero y que sea una sola función.
1 2
−8.3𝑥 + = 𝑒 −𝑥 − 0.43𝑥
2
2 1
𝑒 −𝑥 − 0.43𝑥 + 8.3𝑥 − =0
2
La cual representara la función con la que encontraremos la intersección.
Para la solución de este problema debemos la última iteración tenemos el
resultado de la coordenada en el eje x, por lo tanto para encontrar la
intersección en el eje y, debemos evaluar en cualquier función para saber
el resultado.

CÓDIGO
clc; clear; close all

%EJEMPLO 2 CLASE ASINCRONA


%4MV3

x=-5:0.1:5;
f=inline('exp(-x.^2)-0.43*x');
g=inline('-8.3*x+1/2');

plot(x,f(x))
hold on
grid on
plot(x,g(x))

%Función de ambas

F=inline('exp(-x.^2)-0.43*x+8.3*x-1/2');

syms x
F1=diff(F(x));
F1=inline(F1);
x0=1;

%Iteracion 1
x1=x0-F(x0)/F1(x0)
e1=abs(x1-x0)
%Iteracion 2
x2=x1-F(x1)/F1(x1)
e2=abs(x2-x1)

%Iteracion 3
x3=x2-F(x2)/F1(x2)
e3=abs(x3-x2)

%Para saber el resutado de la intersección debemos de


%evaluar la coordenada de x en cualquiera de nuestra función
f(x3)

GRÁFICA

TABLA DE ITERACIONES

RESULTADO

La intersección tiene coordenadas en (-0.063, 1.0231)


TAREA

Primer ejercicio

Código a).

x=0:0.1:2;
f=inline('0.8.*exp(x./2)-sin(x)');
y=f(x);
plot(x,y,'g')
grid on
hold on
y=zeros(size(x));
plot(x,y,'r')
g=inline('exp(x./2.0).*(2.0./5.0)-cos(x)');
x0=1;

%LEYENDAS DE GRAFICA
title('PUNTO FIJO TO:0.01 x0=0.5');
xlabel('Eje X');
ylabel('Eje Y');
legend('Función original','X')

%Iteración 1
x1=g(x0)
e1=abs(x1-x0)

%Iteración 2
x2=g(x1)
e2=abs(x2-x1)

%Iteración 3
x3=g(x2)
e3=abs(x3-x2)

%Iteración 4
x4=g(x3)
e4=abs(x4-x3)

%Iteración 5
x5=g(x4)
e5=abs(x5-x4)

%Iteración 6
x6=g(x5)
e6=abs(x6-x5)

%Iteración 7
x7=g(x6)
e7=abs(x7-x6)

Gráfica

Tabla de iteraciones

i xi e
1 0.1192 0.8808
2 -0.5683 0.6875
3 -0.5417 0.0266
4 -0.5517 0.01
5 -0.5481 0.0037
6 -0.5494 0.0014
7 -0.5489 0.0005032

Resultado
La raíz no converge en intervalo x>0 pero raíz de la
función es -0.5489 con un error de 0.0005032 utilzarno
criterios
Codigo b).
clc;
clear;
close all;
f=inline('log(2+z)-z.^2');
z=-2:0.1:2;
y=f(z);
plot(z,y)
grid on
hold on
g=inline('sqrt(log(2+z))');
z0=1;
y=zeros(size(z));
plot(z,y)

>> z1=g(z0)
>> e=abs(z1-z0)
>> z2=g(z1)
>> e=abs(z2-z1)
>> z3=g(z2)
>> e=abs(z3-z2)
>> z4=g(z3)
>> e=abs(z4-z3)
z5=g(z4)
>> e=(z5-z4)
Grafica

Tabla de iteraciones

Resultados
La raiz es de 1.0571 con un error de 0.000028109
CÓDIGO
clc; clear; close all

%EJERCICIO 2 TAREA
%INTERSECCIÓN DE DOS FUNCIONES
%4MV3

x=-5:0.1:5;
f=inline('-3*x.^2+3');
g=inline('exp(-x.^2)');

plot(x,f(x),'c')
hold on
grid on
plot(x,g(x),'y')
title('Ejercicio 2')
xlabel('Eje x')
ylabel ('Eje y')

%Función de ambas

F=inline('exp(-x.^2)-(-3*x.^2+3)');

syms x
F1=diff(F(x));
F1=inline(F1);
x0=1;

%Iteracion 1
x1=x0-F(x0)/F1(x0)
e1=abs(x1-x0)

%Iteracion 2
x2=x1-F(x1)/F1(x1)
e2=abs(x2-x1)

%Iteracion 3
x3=x2-F(x2)/F1(x2)
e3=abs(x3-x2)

%Para saber el resutado de la intersección debemos de


%evaluar la coordenada de x en cualquiera de nuestra función
f(x3)

GRÁFICA

TABLA DE ITERACIONES

RESULTADO

La intersección se encuentra en (0.9267, 0.4237) con un


error de 0.00000008
Sustitución de la formula:
1
(1 − 𝑥)(3 + 𝑥)2
2.86 = 1 1
𝑥(𝑥 + 1)2∗4∗2
Igualamos a cero:
1
(1 − 𝑥)(3 + 𝑥)2
1 1 − 2.86 = 0
𝑥(𝑥 + 1)2∗4∗2

CÓDIGO
clc; clear; close all

%EJERCICIO 3 TAREA
%MÉTODO DE NEWTON RAPSHON
%4MV3

x=0:0.01:1;
f=inline('((1-x).*(3+x).^1./2)./(x.*(x+1).^1/2*4*1/2)-2.86');

y=f(x);
plot(x,y,'r')
grid on
title('Ejercicio 3')
xlabel('Eje x')
ylabel ('Eje y')
syms x
f1=diff(f(x));
f1=inline(f1);
x0=0.5;

%Iteración 1
x1=x0-1./f1(x0)*f(x0)
e1=abs(x1-x0)

%Iteracion 2
x2=x1-1./f1(x1)*f(x1)
e2=abs(x2-x1)

%Iteracion 3
x3=x2-1./f1(x2)*f(x2)
e3=abs(x3-x2)

%Iteracion 4
x4=x3-1./f1(x3)*f(x3)
e4=abs(x4-x3)

%Iteracion 5
x5=x4-1./f1(x4)*f(x4)
e5=abs(x5-x4)

%Iteracion 6
x6=x5-1./f1(x5)*f(x5)
e6=abs(x6-x5)

%Iteracion 7
x7=x6-1/f1(x6)*f(x6)
e7=abs(x7-x6)

GRÁFICA
TABLA DE ITERACIONES

RESULTADO

El resultado es x= 0.3067 con un error de


0.000000000007.

Para este programa se utilizaron los datos del problema 1.b) funcionando
también como una forma de comprobar si el ejercicio esta correcto

Código

clc
clear
fprintf('METODO PUNTO FIJO\n\n\n');

Xo=input('ingrese el valor inicial\n');


Iter=input('\ningrese el número de iteraciones\n');
Tol=input('\ningrese la tolerancia que desea\n');
Fun=input('\ningrese la funcion en comillas simples\n');
G=input('\ningrese la funcion despejada en comillas simples\n');

f=inline(Fun);
g=inline(G);

Error=Tol+1;
while Error>Tol & Iter
Xn=g(Xo);
Error=abs((Xn-Xo)/Xn);

Xo=Xn;
end

if Error<Tol
fprintf('\n\nSOLUCION:\n')
fprintf('%g es una aproximacion con un tolerancia de %g\n\n',Xo,Tol);
else
fprintf('\n\nSOLUCION:\n')
fprintf('Fracaso en %g iteraciones\n\n',Iter);
end
ezplot(f);
grid on

Command Window

Grafica
SOLUCION:
1.0571 es una aproximación con una tolerancia de 0.0001

Como se puede observar tanto el resultado de este ejercicio como el del


1b). son iguales.

Para este programa de igual manera se utilizaron los datos del problema
1.b)

Código
clc
clear
fprintf(' METODO DE NEWTON-RAPHSON\n\n\n');

Xo=input('Ingrese el valor inicial\n');


Iter=input('\nIngrese el número de iteraciones que requiere\n');
Tol=input('\nIngrese la tolerancia requerida\n');
Fun=input('\nIngrese la funcion en comillas simples\n');
G=input('\nIngrese la funcion despejada en comillas simples\n');

f=inline(Fun);
g=inline(G);

Error=Tol+1;
while Error>Tol & Iter
Xn=g(Xo);
Error=abs((Xn-Xo)/Xn);

Xo=Xn;
end

if Error<Tol
fprintf('\n\nSOLUCION:\n')
fprintf('%g es una aproximacion con un tolerancia de %g\n\n',Xo,Tol);
else
fprintf('\n\nSOLUCION:\n')
fprintf('Fracaso en %g iteraciones\n\n',Iter);
end

Command window
Gráfica
Solución
1.0571 es una aproximación con una tolerancia de 0.0001

Bibliografía
Chapra, Steven C; Canale Raymond P; Métodos numéricos para
ingenieros; Mc Graw Hill; México; 2005; P126.

También podría gustarte