martes, 17 de enero de 2012
Bisección en Matlab
%bisección
clear all; close all; clc;
fun=input('Ingrese la función f(x) entre comillas: ');
f=inline(fun);
a=input('Ingrese el límite inferior del intervalo: ');
b=input('Ingrese el límite superior del intervalo: ');
tol=input('Ingrese la tolerancia: ');
maxit=input('Ingrese el máximo de iteraciones: ');
fa=feval(f,a);
fb=feval(f,b);
k=0;
if fa*fb>0
error('la función tiene el mismo signo en ambos extremos')
end
while abs(b-a)>tol & k<maxit
if fa*fb==0
if fa==0
s=a;
break
else
s=b;
break
end
else
k=k+1;
s=(a+b)/2;
fs=feval(f,s);
if fa*fs<0
b=s;
fb=feval(f,b);
else
a=s;
fb=feval(f,a);
end
end
end
disp('la solución es')
disp(s)
if abs(b-a)>tol
error('Se alcanzó el número máximo de iteraciones')
end
disp(['se calculo en ' num2str(k) ' iteraciones'])
Suscribirse a:
Enviar comentarios (Atom)
:)
ResponderEliminar