Matlab - Codigos de Biseccion,PtoFijo y RegulaFalsi

 
Vista:

Codigos de Biseccion,PtoFijo y RegulaFalsi

Publicado por Negra (1 intervención) el 06/11/2011 21:49:30
Hola. Necesito ayuda con los códigos de los métodos de Biseccion, Punto Fijo y RegulaFalsi en Matlab. No me andan los códigos que hice de estos métodos. Si alguien los tiene y me los puede pasar me sería de gran utilidad. Sino, decirme si encuentran los errores en mis códigos (abajo los mando).
Muchas gracias!

Punto Fijo:
function p=pfijo(f,p0,tol,maxiter)
n=1;
err=100000;
p(1)=p0;
for n=1:maxiter;
p(n-1)=f(p(n));
err=abs(p(n)-p(n-1));
if err<tol
break;
end
if n==maxiter
p=('se ha excedido el número de iteraciones')
end
n
err
p
end

Bisección:
function r=biseccion(a,b,f,tol)
if f(a)*f(b)>0;
err=0;
r=('El intervalo no sirve, no hay cambio de signo entre a y b');
end
err=10000;
while err<tol;
xm=(a+b)/2;
if f(a)*f(xm)<0;
b=xm;
err=abs(b-a);
end
if f(b)*f(xm)<0;
a=xm;
err=abs(b-a);
end
if f(xm)==0;
err=0;
a=xm;
b=xm;
end
r=(a+b)/2;
end

Regula Falsi:
function x = regulafalsi(a,b,fun,maxiter)
fprintf(1, 'Método de la regula falsi\n');
fprintf(1,'\n');
n=1;
u=feval(fun,a);
v=feval(fun,b);
if sign(u)==sign(v)
disp('ERROR:la funcion debe cambiar signo en a,b');
break;
end;
for n=1:1:maxiter
c=a-(u*(b-a)/(v-u));
w=feval(fun,c);
fprintf(1, 'n= %i, c= %f, f(c)= %e \n',n, c,w);
if sign(u)==sign(w)
a = c; u=w;
else
b=c; v=w;
end
n=n+1
end;
x=c
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Codigos de Biseccion,PtoFijo y RegulaFalsi

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 15/10/2018 21:40:24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function p=punto_fijo11(f,p0,tol,maxiter)
n=1;
err=100000;
p(1)=p0;
for n=2:maxiter
    p(n)=f(p(n-1));
    err=abs(p(n)-p(n-1));
    if err<tol
        break;
    end
    if n==maxiter
        disp('se ha excedido el número de iteraciones')
    end
 
end
    n
    err
 
end

1
2
3
4
5
6
7
8
9
>> syms x, f(x)=3/(x-2); p0=4; tol=0.0001; maxiter=100; p=punto_fijo11(f,p0,tol,maxiter)
n =
    14
 
err =
   5.0178e-05
 
p =
    4.0000    1.5000   -6.0000   -0.3750   -1.2632   -0.9194   -1.0276   -0.9909   -1.0031   -0.9990   -1.0003   -0.9999   -1.0000   -1.0000


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar