Codigo para octave .m de la regla Falsa Modificada del pseudocodigo 5.5 de chapra
La respuesta esperada es:
Métodos de Regla Falsa ejercicio 5.5 de chapra
Ingrese el limite inferior: > 12
Ingrese el limite superior: > 16
Ingrese la funciòn: > '(668.06/x)*(1-exp(-0.146843*x))-40'
Ingrese el porcentaje de error: > 0.5
Ingrese las iteraciones maximas > 10
i xl fl xu fu xr fr ea
1 12.0000 6.1139 14.9308 -0.2515 14.9308 -0.2515 100.000
2 12.0000 3.0569 14.8151 -0.0271 14.8151 -0.0271 0.782
xr = 14.790
El còdigo en matlab u octave es: s9_02_1128648261.m
%s9_02_1128648261.m
%Descripciòn: Codigo de la regla Falsa del pseudocodigo 5.5 de chapra
%Autor: Alexander Arias
%Fecha: 2020-04-03
% Variables:xl, xu, es, imax, xr, iter, ea
% '(668.06/x)*(1-exp(-0.146843*x))-40'
% 12 16
% 0.5
% 10
disp("Métodos de Regla Falsa ejercicio 5.5 de chapra");
iter = 0
xl=input('Ingrese el limite inferior: ');
xu=input('Ingrese el limite superior: ');
fstr=input('Ingrese la funciòn: ');
f=inline(fstr);
es=input('Ingrese el porcentaje de error: ');
imax=input('Ingrese las iteraciones maximas ');
fl = feval(f,xl);
fu = feval(f,xu);
xr=0;
iter=0;
il=0;
iu=0;
fprintf('i xl fl xu fu xr fr ea\n');
while(true)
xrold = xr;
xr = xu - fu * (xl - xu) / (fl - fu);
fr = feval(f,xr);
iter = iter + 1;
if xr ~= 0
ea = abs((xr - xrold) / xr) * 100;
end
test = fl * fr; %chequear signos opuestos
if test < 0
xu = xr;
fu = feval(f,xu);
iu = 0;
il = il +1;
if il >= 2
fl = fl / 2;
end
else if test > 0
xl = xr;
fl = feval(f,xl);
il = 0;
iu = iu + 1;
if iu >= 2
fu = fu / 2;
end
else
ea = 0;
end
if ((ea < es) || (iter >= imax))
break;
end
end
fprintf('%2d \t %11.4f \t %11.4f \t %11.4f \t %11.4f \t %11.4f \t%11.4f \t %7.3f \n',...
iter,xl,fl,xu,fu,xr,fr,ea);
end
xr
No hay comentarios:
Publicar un comentario