CÓDIGO MATLAB: JULIO CESAR TORRES APAZA
%METODO DE PUNTO FIJO
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
fprintf(' METODO PUNTO FIJO\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
fprintf('CURSO DE METODOS NUMERICOS - 2021 - I\n');
fprintf('DOCENTE: MTRO ABEL SARCCO USTO \n');
fprintf('ESTUDIANTE : JULIO CESAR TORRES APAZA \n');
fprintf('CODIGO : 010100834J \n');
format long;
%format long permite utilizar la máxima capacidad del computador
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');
%input es un comando de solicitud de entrada de datos del usuario.
f=inline(Fun);
g=inline(G);
%El comando inline permite hacer la asignación posterior de variables en
%una función.
Yn=f(Xo);
Error=Tol+1;
Cont=0;
Z1=[Cont,Xo,Yn,Error];
%Z es una matriz la cual permitira observar lo datos como una tabla a la
%finalizacion del programa
%La sentencia While ejecuta todas las órdenes mientras la expresión sea
%verdadera.
Z=[Cont,Xo,Yn,Error];
while Yn~=0 & Error>Tol & Cont<Iter
Xn=g(Xo);
Yn=f(Xn);
Error=abs((Xn-Xo)/Xn);
%Error=abs(Xn-X0);
Cont=Cont+1;
Z(Cont,1)=Cont;
Z(Cont,2)=Xn;
Z(Cont,3)=Yn;
Z(Cont,4)=Error;
%las z son las posiciones asignadas en la tabla a los resultados que se
% observarán
Xo=Xn;
end
%La sentencia if tiene como función evaluar condiciones, que en caso de ser
%verdadera se procede a realizar ciertos pasos, de lo contrario se procede
%a realizar otros, por medio de la funcion else.
if Yn==0
fprintf('\n\nSOLUCION:\n')
fprintf('%g es raiz\n\n',Xo);
else
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
end
fprintf('TABLA\n\n Cont Xn Yn
Error Relativo\n\n')
disp(Z1);
disp(Z);
%La funcion disp permite visualizar la tabla, obtenida de los resultados de
%la secuencia while
ezplot(f);
%El comando ezplot permite grafica una función.
grid on
%grid on permite observar una cuadricula en la grafica de la funcion.
%REGLA FALSA
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
fprintf(' METODO REGLA FALSA\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
fprintf('CURSO DE METODOS NUMERICOS - 2021 - I\n');
fprintf('DOCENTE: MTRO ABEL SARCCO USTO \n');
fprintf('ESTUDIANTE : JULIO CESAR TORRES APAZA \n');
fprintf('CODIGO : 010100834J \n');
format long;
%format long permite utilizar la máxima capacidad del computador
Xi=input ('Ingrese el limite inferior del intervalo\n');
Xs=input ('\nIngrese el limite superior del intervalo\n');
Tol=input ('\nIngrese la tolerancia deseada\n');
Iter=input ('\nIngrese el número de iteraciones\n');
Fun=input ('\nIngrese la función entre comillas simples\n');
%input es un comando de solicitud de entrada de datos del usuario.
f=inline (Fun);
%El comando inline permite hacer la asignación posterior de variables en
%una función.
Yi=f(Xi);
Ys=f(Xs);
%La sentencia if tiene como función evaluar condiciones, que en caso de ser
%verdadera se procede a realizar ciertos pasos, de lo contrario se procede
%a realizar otros, por medio de la funcion else.
if Yi==0
fprintf('\n\nSOLUCION:\n')
fprintf('Xi es raiz\n\n');
else
if Ys==0
fprintf('\n\nSOLUCION:\n')
fprintf('Xs es raiz\n\n');
else
if Yi*Ys<0
Xm=(Xi)-((f(Xi)*(Xi-Xs))/(f(Xi)-f(Xs)));
Ym=f(Xm);
Error=Tol+1;
Cont=1;
Z=[Cont,Xi,Xs,Xm,Ym,Error];
%Z es una matriz la cual permitira observar lo datos como una tabla a la
%finalizacion del programa
%La sentencia While ejecuta todas las órdenes mientras la expresión sea
%verdadera.
while Ym~=0 & Error>Tol & Cont<Iter
if Yi*Ym<0
Xs=Xm;
Ys=Ym;
else
Xi=Xm;
Yi=Ym;
end
Xaux=Xm;
Xm=(Xi)-((f(Xi)*(Xi-Xs))/(f(Xi)-f(Xs)));
Ym=f(Xm);
Error=abs(Xm-Xaux)/Xm;
Cont=Cont+1;
Z(Cont,1)=Cont;
Z(Cont,2)=Xi;
Z(Cont,3)=Xs;
Z(Cont,4)=Xm;
Z(Cont,5)=Ym;
Z(Cont,6)=Error;
%las z son las posiciones asignadas en la tabla a los resultados que se
% observarán
end
if Ym==0
fprintf('\n\nSOLUCION:\n')
fprintf('%g es raíz\n\n',Xm);
else
if Error<Tol
fprintf('\n\nSOLUCION:\n')
fprintf( '%g es una aproximacion a una raìz con una tolerancia %g \n\n',Xm,Tol);
else
fprintf('\n\nSOLUCION:\n')
fprintf('Fracaso en %g iteraciones\n\n',Iter);
end
end
else
fprintf('\n\nSOLUCION:\n')
fprintf('El intervalo es inadecuado\n\n');
end
end
end
fprintf('TABLA\n\nIteraciones Xi Xs
Xm Ym Error Absoluto\n\n');
disp(Z);
%La funcion disp permite visualizar la tabla, obtenida de los resultados de
%la secuencia while
ezplot(f);
%fplot(f,[-1 10]);
%El comando ezplot permite grafica una función.
grid on
%grid on permite observar una cuadricula en la grafica de la funcion.
%METODO DE BISECCION
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
fprintf (' MÉTODO DE BISECCIÓN\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
fprintf('CURSO DE METODOS NUMERICOS - 2021 - I\n');
fprintf('DOCENTE: MTRO ABEL SARCCO USTO \n');
fprintf('ESTUDIANTE : JULIO CESAR TORRES APAZA \n');
fprintf('CODIGO : 010100834J \n');
format long
%format long permite utilizar la máxima capacidad del computador
Xi=input ('Ingrese el limite inferior del intervalo\n');
Xs=input ('\nIngrese el limite superior del intervalo\n');
Tol=input ('\nIngrese la tolerancia deseada\n');
Iter=input ('\nIngrese el número de iteraciones\n');
Fun=input ('\nIngrese la función entre comillas simples\n');
%input es un comando de solicitud de entrada de datos del usuario.
f=inline (Fun);
%%El comando inline permite hacer la asignación posterior de variables en
%una función.
Yi=f(Xi);
Ys=f(Xs);
%La sentencia if tiene como función evaluar condiciones, que en caso de ser
%verdadera se procede a realizar ciertos pasos, de lo contrario se procede
%a realizar otros, por medio de la funcion else.
if Yi==0
fprintf('\n\nSOLUCION:\n')
fprintf('Xi es raíz\n\n');
else
if Ys==0
fprintf('\n\nSOLUCION:\n')
fprintf('Xs es raíz\n\n');
else
if Yi*Ys<0
Xm=(Xi+Xs)/2;
Ym=f(Xm);
Error=Tol+1;
Cont=1;
Z=[Cont,Xi,Xs,Xm,Ym,Yi*Ym,Ym*Ys,Error];
%Z es una matriz la cual permitira observar lo datos como una tabla a la
%finalizacion del programa
%La sentencia While ejecuta todas las órdenes mientras la expresión sea
%verdadera.
while Ym~=0 & Error>Tol & Cont<Iter
if Yi*Ym<0
Xs=Xm;
Ys=Ym;
else
Xi=Xm;
Yi=Ym;
end
Xaux=Xm;
Xm=(Xi+Xs)/2;
Ym=f(Xm);
Error=abs(Xm-Xaux);
Cont=Cont+1;
Z(Cont,1)=Cont;
Z(Cont,2)=Xi;
Z(Cont,3)=Xs;
Z(Cont,4)=Xm;
Z(Cont,5)=Ym;
Z(Cont,6)=Yi*Ym;
Z(Cont,7)=Ym*Ys;
Z(Cont,8)=Error;
%las z son las posiciones asignadas en la tabla a los resultados que se
% observarán
end
if Ym==0
fprintf('\n\nSOLUCION:\n')
fprintf('%g es raíz\n\n',Xm);
else
if Error<Tol
fprintf('\n\nSOLUCION:\n')
fprintf( '%g es una aproximacion a una raìz con una tolerancia %g \n\n',Xm,Tol);
else
fprintf('\n\nSOLUCION:\n')
fprintf('Fracaso en %g iteraciones\n\n',Iter);
end
end
else
fprintf('\n\nSOLUCION:\n')
fprintf('El intervalo es inadecuado\n\n');
end
end
end
fprintf('TABLA\n\nIteraciones Xi Xs Xm
Ym Yi*Ym \n\nYm*Ys Error Absoluto\n\n');
disp(Z);
%La funcion disp permite visualizar la tabla, obtenida de los resultados de
%la secuencia while
ezplot(f);
%El comando ezplot permite grafica una función.
grid on
%grid on permite observar una cuadricula en la grafica de la funcion.
%Método de la secante
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
fprintf(' METODO DE LA SECANTE\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
fprintf('CURSO DE METODOS NUMERICOS - 2021 - I\n');
fprintf('DOCENTE: MTRO ABEL SARCCO USTO \n');
fprintf('ESTUDIANTE : JULIO CESAR TORRES APAZA \n');
fprintf('CODIGO : 010100834J \n');
format long;
%format long permite utilizar la máxima capacidad del computador
Xo=input('ingrese xo\n');
X1=input('\ningrese x1\n');
Tol=input('\ningrese la tolerancia\n');
Iter=input('\ningrese el número de iteraciones\n');
Fun=input('\ningrese la función entre comillas simples\n');
%input es un comando de solicitud de entrada de datos del usuario.
f=inline (Fun);
%El comando inline permite hacer la asignación posterior de variables en
%una función.
yo=f(Xo);
%La sentencia if tiene como función evaluar condiciones, que en caso de ser
%verdadera se procede a realizar ciertos pasos, de lo contrario se procede
%a realizar otros, por medio de la funcion else.
if yo==0
fprintf('\n\nSOLUCION:\n')
fprintf('xo es raiz\n');
else
y1=f(X1);
d=(y1-yo);
e=Tol+1;
cont=0;
Z1= [cont,X1, y1, e];
Z= [cont,X1, y1, e];
%Z es una matriz la cual permitira observar lo datos como una tabla a la
%finalizacion del programa
%La sentencia While ejecuta todas las órdenes mientras la expresión sea
%verdadera.
while y1~=0 & e>Tol & cont<Iter & d~=0
X2= X1-((y1*(X1-Xo))/(d));
e=abs((X2-X1)/X2);
%e=abs(X2-X1);
Xo=X1;
yo=y1;
y1=f(X2);
X1=X2;
d=(y1-yo);
cont=cont+1;
Z(cont,1)=cont;
Z(cont,2)=X1;
Z(cont,3)=y1;
Z(cont,4)=e;
%las z son las posiciones asignadas en la tabla a los resultados que se
% observarán
end
if y1==0
fprintf('\n\nSOLUCION:\n')
fprintf('%g es raíz\n\n',X1);
else
if e<Tol
fprintf('\n\nSOLUCION:\n')
fprintf( '%g es una aproximacion a una raìz con una tolerancia %g \n\n',X1,Tol)
else
if d==0
fprintf('\n\nSOLUCION:\n')
fprintf('el denominador es cero, FRACASO\n\n');
else
fprintf('\n\nSOLUCION:\n')
fprintf('Fracaso en %g iteraciones\n\n',Iter);
end
end
end
end
fprintf('TABLA\n\ninteraciones Xn y1
Error relativo\n\n');
disp(Z1);
disp(Z);
%La funcion disp permite visualizar la tabla, obtenida de los resultados de
%la secuencia while
%ezplot(f);
fplot(f,[-1 15]);
%El comando ezplot permite grafica una función.
grid on
%grid on permite observar una cuadricula en la grafica de la funcion.
%METODO DE NEWTON
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
fprintf(' METODO DE NEWTON\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
fprintf('CURSO DE METODOS NUMERICOS - 2021 - I\n');
fprintf('DOCENTE: MTRO ABEL SARCCO USTO \n');
fprintf('ESTUDIANTE : JULIO CESAR TORRES APAZA \n');
fprintf('CODIGO : 010100834J \n');
format long;
%format long permite utilizar la máxima capacidad del computador
Xo=input ('ingrese el valor inicial\n');
Iter=input ('\ningrese el número de iteraciones\n');
Tol=input ('\ningrese la tolerancia que desea\n');
F=input ('\ningrese la función en comillas simples\n');
%input es un comando de solicitud de entrada de datos del usuario.
f=inline(F);
%El comando inline permite hacer la asignación posterior de variables en
%una función.
Y1=f(Xo);
Derivada=diff(F)
%El comando diff permite calcular la derivada de una función.
Der=char(Derivada);
%regresa los valores a texto
D=inline(Der);
%inline, permite asignar a una función el valor de una variable.
De=D(Xo);
%Se evalúa la derivada en la X inicial, y así saber si es adecuada para
%ejecutar el resto del método, es decir si es diferente de cero.
Error=Tol+1;
Cont=0;
Z1= [Cont, Xo, Y1, De, Error];
%Z es una matriz la cual permitira observar lo datos como una tabla a la
%finalizacion del programa
%La sentencia While ejecuta todas las órdenes mientras la expresión sea
%verdadera.
Z= [Cont, Xo, Y1, De, Error];
while Y1~=0 & Error>Tol & Cont<Iter & De~=0
X1=Xo-(Y1/De);
Y1=f(X1);
De=D(X1);
Error=abs((X1-Xo)/X1);
Cont=Cont+1;
Z(Cont,1)=Cont;
Z(Cont,2)=Xo;
Z(Cont,3)=Y1;
Z(Cont,4)=De;
Z(Cont,5)=Error;
%las z son las posiciones asignadas en la tabla a los resultados que se
% observarán
Xo=X1;
end
if Y1==0
fprintf('\n\nSOLUCION:\n')
fprintf('%g es raíz\n\n',Xo);
else
if Error<Tol
fprintf('\n\nSOLUCION:\n')
fprintf( '%g es una aproximacion a una raìz con una tolerancia %g \n\n',Xo,Tol)
else
if De==0
fprintf('\n\nSOLUCION:\n')
fprintf('Se esta haciendo división por cero y Xo posiblemente es una raiz
multiple\n\n')
else
fprintf('\n\nSOLUCION:\n')
fprintf('Fracaso en %g iteraciones\n\n',Iter);
end
end
end
fprintf('TABLA\n\n Cont Xn f(Xn) f
´(Xn) Error relativo\n\n');
disp(Z1);
disp(Z);
%La funcion disp permite visualizar la tabla, obtenida de los resultados de
%la secuencia while
ezplot(f);
%El comando ezplot permite grafica una función.
grid on
%grid on permite observar una cuadricula en la grafica de la funcion.