You are on page 1of 5

function [raiz]=biseccion(f,x_0,x_f,tol)

e_a=1;a=0;b=0;c=0;d=0;e=0;i=1;
raiz=0;
x_r_a=0;
x_r_n=(x_f+x_0)/2;
while e_a>tol

a(i,1)=x_0;
b(i,1)=x_f;
c(i,1)=x_r_n;
d(i,1)=x_r_a;
e(i,1)=e_a;
f_x0=feval(f,x_0);
f_xf=feval(f,x_f);
f_xr=feval(f,x_r_n);
if f_x0*f_xr<0
x_f=x_r_n;
end
if f_x0*f_xr>0
x_0=x_r_n;
end
if f_x0*f_xr==0
raiz=x_r_n;
end
x_r_n=(x_f+x_0)/2;
e_a=abs((x_r_n-x_r_a)/x_r_n);
x_r_a=x_r_n;
i=i+1;
end
raiz=x_r_n;
R=table(a,b,c,d,e)

end
function [A]=secante(f,x_0,x_f,tol,v_r)
x=x_f;xa=x_0;
e_t=1;i=1;xs=1;
fx=feval(f,x_f);
fxa=feval(f,x_0);
while e_t>tol
xs(i,1)=x-fx*(xa-x)/(fxa-fx);
e_t(i,1)=abs((v_r-xs(i,1))/v_r);
xa=x;x=xs(i,1);
fx=feval(f,x);
fxa=feval(f,xa);
iter(i,1)=i;
i=i+1;
% pause
end
A=table(iter,xs,e_t);
function [A]=secante_m(f,x_0,d,tol,v_r)
x=x_0;
e_t=1;i=1;xs=1;
fx=feval(f,x_0);
fxa=feval(f,x_0+d*x);
while e_t>tol
xs(i,1)=x-fx*d*x/(fxa-fx);
e_t(i,1)=abs((v_r-xs(i,1))/v_r);
x=xs(i,1);
fx=feval(f,x);
fxa=feval(f,x+d*x);
iter(i,1)=i;
i=i+1;
end
A=table(iter,xs,e_t);
function [A]=newton(f,x_0,tol)
syms x
df=diff(f,x);
x_a=x_0;
e_a=1;i=1;xs(1,1)=0;
fx=subs(f,x,x_0);
fdf=subs(df,x_0);
while e_a>tol
xs(i,1)=x_a-fx/(fdf);
e_a(i,1)=abs((xs(i,1)-x_a)/xs(i,1));
x_a=xs(i,1);
fx=subs(f,x,x_a);
fdf=subs(df,x_a);
iter(i,1)=i;
i=i+1;
end
A=table(iter,xs,e_a);
function [A]=muller(f,x0,x1,x2,tol)
i=1;e_a=1;
while e_a>tol
fx0=feval(f,x0);
h0=x1-x0;
fx1=feval(f,x1);
h1=x2-x1;
fx2=feval(f,x2);
d0=(fx1-fx0)/h0;
d1=(fx2-fx1)/h1;
a=(d1-d0)/(h1+h0);
b=a*h1+d1;
c=fx2;
if b>0
x3=x2-(2*c)/(b+sqrt(b^2-4*a*c));
else
x3=x2-(2*c)/(b-sqrt(b^2-4*a*c));
end
iter(i,1)=i;
xs(i,1)=x3;
e_a(i,1)=abs((x3-x2)./x3);
x0=x1;x1=x2;x2=x3;
i=i+1;
% pause
end
A=table(iter,xs,e_a);

You might also like