function principal1(Tol,nmax,nprob)
if nargin<1
Tol=0.001;
nmax=10000;
nprob=1;
end
format long
syms x
[f,g]=problema(nprob);
met=input('Introducir el método a ejecutar: ');
if (met==1)||(met==2)||(met==3)
if met==1
disp('Usted ha elegido el MÉTODO DE NEWTON-RAPHSON: ')
x0=input('Introduzca la iteración inicial: ');
df=diff(f);
nr(f,df,x0,Tol,nmax)
elseif met==2
disp('Usted ha elegido el MÉTODO DE LA SECANTE: ')
x0=input('Introduzca la primera iteración: ');
x1=input('Introduzca la segunda iteración: ');
secant(f,x0,x1,Tol,nmax)
elseif met==3
disp('Usted ha elegido el MÉTODO DEL PUNTO FIJO: ')
a=input('Introduzca el extremo inferior del intervalo: ');
b=input('Introduzca el extremo superior del intervalo: ');
x0=input('Introduzca la iteracion inicial: ');
if a>=b
disp('ERROR. Ha escogido un intervalo que NO es válido.')
elseif x0>b || x0<a
disp('ERROR. La iteración inicial elegida no se encuentra dentro del intervalo escogido.')
else
dg= diff(g);
pfijo(g,x0,a,b,dg,Tol,nmax)
end
end
else
disp('ERROR. MÉTODO MAL ELEGIDO. Sólo están implementados tres métodos. Vuelva a intentarlo.')
end
end
function [f,g] = problema(nprob)
syms x
if (nprob==1)||(nprob==2)||(nprob==3)
if nprob==1
disp('Ha elegido el PROBLEMA 1')
f=log(x)-(x-2)^2;
g=log(x)-(x-2)^2+x;
elseif nprob==21
disp('Ha elegido el PROBLEMA 2')
f=230*x^4+18*x^3+9*x^2-221*x-9;
g=230*x^4+18*x^3+9*x^2-221*x-9+x;
elseif nprob==3
disp('Ha elegido el PROBLEMA 3')
f=exp(-x)-sin(x);
g=exp(-x)-sin(x)+x;
end
else
disp('ERROR, ha escogido un valor inadecuado. Vuelva a intentarlo.')
end
end
function it=pfijo(g,x0,a,b,dg,Tol,nmax)
g=inline(g);
dg=inline(-dg);
it(1)=x0;
it(2)=g(it(1));
i=1;
lambda=fminbnd(dg,a,b) %el max de |g'(x)| para x en [a,b]
if (lambda<1)
while (lambda/(1-lambda))*(abs(it(i+1)-it(i)))>Tol || i<nmax
it(i+1)=g(it(i));
i=i+1;
end
fprintf('La aproximacion de la raiz con el metodo de punto fijo es=%f', it)
fprintf('El criterio para que el metodo haya finalizado ha sido: (\lambda/1-\lambda)*|x(n+1)-x(n)|<Tol')%ARREGLAR
fprintf('El numero de iteraciones necesarias para que el metodo finalice ha sido=%i ', i)
else
disp('El metodo diverge')
end
end