Está en la página 1de 11

ACTIVIDAD 2:

EJERCICIOS

Fecha:13/03/2024
Nombre del estudiante: Erick Ivan Barrios Dominguez
Nombre del docente: Omar Amaya Molina

1. Resuelve los ejercicios aplicando los conocimientos sobre:

➢ Solución de ecuaciones no lineales de una variable


➢ Métodos numéricos

Con base en el siguiente material consultado, replica los ejercicios indicados para cada método y realiza
pruebas con dos ecuaciones aleatorias a resolver:

Método Función xi xs Raíz Numero de


iteraciones
bisección F(x)= x3 – x - 100 4.5 10 4.7134 26
Falsa Posición F(x)= x3 – x - 100 4.5 10 4.7134 4
Newton-Rapshon F(x)= x3 – x - 100 4.5 10 4.71339768 10
Secante F(x)= x3 – x - 100 4.5 10 4.7134 8
Bisección F(x)= x4 + 3x3 - 2 0.5 1 0.8069 25
Falsa Posición F(x)= x4 + 3x3 - 2 0.5 1 0.8069 17
Newton-Rapshon F(x)= x4 + 3x3 - 2 0.5 1 0.80689964 10
Secante F(x)= x4 + 3x3 - 2 0.5 1 0.8069 8
• Figura 5.10 Página 131 (Método de bisección).

function [xr]=biseccion(xi,xs)
iteracion = 0;
e = 1;
et = 1e-8;
format1 = '%.8f';
format2 = '%.4e';
while e > et
iteracion = iteracion+1;
xr = (xi+xs)/2;
x = [xi,xr] ;
fx = x.^3-x-100;
if fx(1)*fx(2) < 0
xs = xr;
else
xi = xr;
end
e = abs((xs-xi)/(xs+xi));
end
disp ('RESULTADOS: ')
disp ([' La raiz calculada es: ', num2str(xr,format1)])
disp ([' Numero de Iteraciones: ',num2str(iteracion)])
disp ([' Error: ',num2str(e,format2)])
function [xr]=biseccion(xi,xs)
iteracion = 0;
e = 1;
et = 1e-8;
format1 = '%.8f';
format2 = '%.4e';
while e > et
iteracion = iteracion+1;
xr = (xi+xs)/2;
x = [xi,xr] ;
fx =x.^4+3*x.^3-2; %funcion x
if fx(1)*fx(2) < 0
xs = xr;
else
xi = xr;
end
e = abs((xs-xi)/(xs+xi));
end
disp ('RESULTADOS: ')
disp ([' La raiz calculada es: ', num2str(xr,format1)])
disp ([' Numero de Iteraciones: ',num2str(iteracion)])
disp ([' Error: ',num2str(e,format2)])
• Figura 5.11 Pag 132 (Método de la falsa posición)

function [xr]=Falsap(xi,xs,N)
format1 = '%.8f';
format2 = '%.4e';
for iteracion=1:N
x = [xi,xs];
fx = x.^3-x-100; %funcion x
xr = x(2)-(fx(2)*(x(1)-x(2)))/(fx(1)-fx(2));
if fx(1)*fx(2) < 0
xs = xr;
else
xi = xr;
end
e = abs((xs-xi)/(xs+xi));
disp (['i: ',num2str(iteracion),' xr: ',num2str(xr), ' Error: ',num2str(e)])
end

disp ('RESULTADOS: ')


disp ([' Raiz calculada: ', num2str(xr,format1)])
disp ([' Numero de Interaciones: ',num2str(iteracion)])
disp ([' Error: ',num2str(e,format2)])
function [xr]=Falsap(xi,xs,N)
format1 = '%.8f';
format2 = '%.4e';
for iteracion=1:N
x = [xi,xs];
fx =x.^4+3*x.^3-2; %funcion x
xr = x(2)-(fx(2)*(x(1)-x(2)))/(fx(1)-fx(2));
if fx(1)*fx(2) < 0
xs = xr;
else
xi = xr;
end
e = abs((xs-xi)/(xs+xi));
disp (['i: ',num2str(iteracion),' xr: ',num2str(xr), ' Error: ',num2str(e)])
end

disp ('RESULTADOS: ')


disp ([' Raiz calculada: ', num2str(xr,format1)])
disp ([' Numero de Interaciones: ',num2str(iteracion)])
disp ([' Error: ',num2str(e,format2)])
• Programa el algoritmo para ejecutar el método de newton-Rapshon (ejemplo 6.3)

function NewtonR(xi,N)
format1 = '%.8f';
for iteracione=0:N
xf= xi-((xi.^3-xi-100)/(3*xi^2-1));
error= xf -xi;
xi=xf;
end
x=4.5:10;
y=x.^3-x-100;
plot(x,y,'b');
grid on
disp ([' Iteraciones: ', num2str(iteracione)])
disp ([' Raiz calculada: ', num2str(xi,format1)])
disp ([' Error: ',num2str(error,format1)])
function NewtonR(xi,N)
format1 = '%.8f';
for iteracione=0:N
xf= xi-((xi.^4+3*xi.^3-2)/(4*xi.^3+9*xi.^2));
error= xf -xi;
xi=xf;
end
x=4.5:10;
y=x.^3-x-100;
plot(x,y,'b');
grid on
disp ([' Iteraciones: ', num2str(iteracione)])
disp ([' Raiz calculada: ', num2str(xi,format1)])
disp ([' Error: ',num2str(error,format1)])
• Programa el algoritmo para ejecutar el método de la secante (ejemplo 6.6)

function [xr] = sec(xi,xs,N)


format1 = '%.8f';
format2 = '%.4e';
x = [xi,xs];
for iteracion= 1:N
fx = x.^3-x-100;
xr = x(2)-(fx(2)*(x(1)-x(2)))/(fx(1)-fx(2));
error = abs(xr-x(2));
x = [x(2),xr];
disp (['i: ',num2str(iteracion),' xr: ',num2str(xr,format1),'
error:',num2str(error,format2)])
end
function [xr] = sec(xi,xs,N)
format1 = '%.8f';
format2 = '%.4e';
x = [xi,xs];
for iteracion= 1:N
fx = x.^4+3*x.^3-2;
xr = x(2)-(fx(2)*(x(1)-x(2)))/(fx(1)-fx(2));
error = abs(xr-x(2));
x = [x(2),xr];
disp (['i: ',num2str(iteracion),' xr: ',num2str(xr,format1),'
error:',num2str(error,format2)])
end
Conclusión:

Un único error al ingresar datos condujo a la obtención de resultados radicalmente distintos. Al


automatizar el proceso mediante software como Matlab, no solo se acelera significativamente
el procedimiento, sino que también se reducen en gran medida los errores y omisiones que
podrían surgir por parte del usuario. Al realizar esta tarea manualmente, existe el riesgo de
omitir o equivocarse en un dígito o un signo en cualquiera de los pasos o en cada iteración del
proceso.

Referencias:

Chapra, S. y Canale, R. (2007). Métodos numéricos para ingenieros [Versión electrónica]. Recuperado de
https://www.academia.edu/35215572/Metodos_Numericos_Aplicados_a_La_Ingenieria_4a_Nieves

Serrano, J. (s.f.). Métodos Numéricos: Bisección [Página web]. Recuperado de


https://www.geogebra.org/m/mNY3NPuU

Goldberg, D. (1991). What Every Computer Scientist Should Know About Floating-Point
Arithmetic. ACM Computing Surveys, 23(1), 5-48.

Burden, R. L., & Faires, J. D. (2010). Numerical Analysis. Brooks/Cole.

Press, W. H., Teukolsky, S. A., Vetterling, W. T., & Flannery, B. P. (2007). Numerical Recipes:
The Art of Scientific Computing. Cambridge University Press.

También podría gustarte