Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Presentado por:
Marlyn Giraldo Múnera
Código: 1020451054
Grupo 100401_67
Presentado a:
Edgar Andrés Villabon
Tutor
Chart Title
60.000000
50.000000
40.000000
30.000000
20.000000
10.000000
0.000000
-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5
-10.000000
-20.000000
-30.000000
-40.000000
Rn
0.600000
0.400000
0.200000
0.000000
0 1 2 3 4 5 6
-0.200000
-0.400000
-0.600000
-0.800000
Quisé tomar un valor medianamente cercano a cero, pero los resultados obtenidos no son
tan buenos, aunque el error de truncamiento tiende a disminuir si hubiera usado un valor
más pequeño la evaluación de los polinomios hubiera estado más cerca del uno cosa que
se evidencia en la tabla no se cumple a cabalidad
M =E−e × seno ( E)
Ejercicio 1:
Realice una tabla en el intervalo en donde se encuentre la primera raíz
(positiva o negativa) y grafique la función en ese intervalo (use un
tamaño de paso adecuado que le permita observar los cambios de
signo). Indique el, o los, subintervalo en donde posiblemente se
encuentra la raíz.
Con la ayuda de Matlab realicé la tabla y encuentro que el intervalo donde se encuentra la
raíz es desde 1 hasta 1.1
Ejercicio 2:
Bisección
Basandome en el código utilizado en el siguiente link y mejorandolo para
la tarea indicada
https://la.mathworks.com/matlabcentral/fileexchange/65664-biseccion
Regla Falsa
Para realizar las iteraciones con el método de Regula falsi, tomo el mismo codigo de
Bisección y solo cambio la forma como se calcula el Xr
Newton Raphson
Para el método de Nr usaré el código suministrado en la página de Mathworks
https://la.mathworks.com/matlabcentral/fileexchange/68885-the-newton-raphson-method
arreglandolo para lo solicitado en la guía.
Secante
Finalmente para el método de la secante, arreglaré el código de Newton Raphson y
obtengo los siguientes resultados.
clc
clear all
close all
x=0:1/10:2;
e = 0.0167;
M = 1;
f = M + e*sin(x)-x;
T =table(x',f')
%% BISECCI”N
Xa= 1;
Xb= 1.1;
error= 10^-6;
x = Xa
Ya= M + e*sin(x)-x;
x = Xb;
Yb= M + e*sin(x)-x;
disp(' N Xa Xb Xr
F(Xa) F(Xb) F(Xr) error ');
disp('|--------|------------------|------------------|------------------|
---------------|---------------|----------------|---------------|');
Xant=0;
N=0;
while N<50
Xr=(Xa+Xb)/2;
Xact=Xr;
x=Xr;
Yr= M + e*sin(x)-x;
Ea1= abs((Xact-Xant)/Xact)*100;
ds_i=fprintf('%4d %17.8g %17.8g %17.8g %17.8g %17.8g %17.8g %4d', N,
Xa, Xb, Xr, Ya, Yb, Yr, Ea1);
disp(ds_i);
if Ea1<error
fprintf('\n\n La raiz exacta es: %d', Xr);
fprintf('\n\n numero de iteraciones: %d \n\n', N);
break
end
if(Ya*Yr)<0
Xb=Xr;
elseif (Ya*Yr)==0
fprintf('\n\n la raiz exacta es: %17.8g',Xr);
fprintf('\n\n el numero de iteraciones fue %d', N);
break
else
Xa=Xr;
end
Xant=Xr;
N=N+1;
end
%% Regula Falsi
Xa= 1;
Xb= 1.1;
error= 10^-6;
x = Xa
Ya= M + e*sin(x)-x;
x = Xb;
Yb= M + e*sin(x)-x;
disp(' N Xa Xb Xr
F(Xa) F(Xb) F(Xr) error ');
disp('|--------|------------------|------------------|------------------|
---------------|---------------|----------------|---------------|');
Xant=0;
N=0;
while N<50
Xr=Xb-Yb*(Xb-Xa)/(Yb-Ya);
Xact=Xr;
x=Xr;
Yr= M + e*sin(x)-x;
Ea2= abs((Xact-Xant)/Xact)*100;
ds_i=fprintf('%4d %17.8g %17.8g %17.8g %17.8g %17.8g %17.8g %4d', N,
Xa, Xb, Xr, Ya, Yb, Yr, Ea2);
disp(ds_i);
if Ea2<error
fprintf('\n\n La raiz exacta es: %d', Xr);
fprintf('\n\n numero de iteraciones: %d \n\n', N);
break
end
if(Ya*Yr)<0
Xb=Xr;
elseif (Ya*Yr)==0
fprintf('\n\n la raiz exacta es: %17.8g',Xr);
fprintf('\n\n el numero de iteraciones fue %d', N);
break
else
Xa=Xr;
end
Xant=Xr;
N=N+1;
end
%% Newton Raphson
syms x;
f=M+e*sin(x)-x;
g=diff(f); %The Derivative of the Function
n = 5;
epsilon = 10^-(n+1);
x0 = 1;
for i=1:100
f0=vpa(subs(f,x,x0));
f0_der=vpa(subs(g,x,x0));
y=x0-f0/f0_der;
err=abs(y-x0);
if err<epsilon
break
end
x0=y;
end
y = y - rem(y,10^-n);
fprintf('La raiz es : %f \n',y);
fprintf('N˙mero de iteraciones: %d\n',i);
%% Secante
syms x;
f=M+e*sin(x)-x; %Enter the Function here
n = 5;
epsilon = 10^-(n+1);
x0 = 1;
x1 = 1.1;
for i=1:100
f0=vpa(subs(f,x,x0)); %Calculating the value of function at x0
f1=vpa(subs(f,x,x1)); %Calculating the value of function at x1
y=x1-((x1-x0)/(f1-f0))*f1; %[x0,x1] is the interval of the root
err=abs(y-x1);
if err<epsilon %checking the amount of error at each iteration
break
end
x0=x1;
x1=y;
end
y = y - rem(y,10^-n); %Displaying upto required decimal places
fprintf('La raÌz es : %f \n',y);
fprintf('N˙mero de iteracione: %d\n',i);