Matlab - Biseccion!!!!

 
Vista:

Biseccion!!!!

Publicado por Cristian (6 intervenciones) el 20/06/2010 00:38:10
Gente, me piden calcular en cada paso de biseccion el error relativo% exacto y el aprox considerando al valor exacto a aquel que tenga como minimo 8 cifras de coincidencia.

El programa que tengo para los puntos que me piden anteriores y que ya resolvi es:

Definimos la función interés como:

function f=interes(I)
f=340/(I/1200)*(((1+(I/1200))^240)-1)-300000;
syms I
function df=derivada(I)
df=diff(f,I)

la function derivada sera:

function df=derivada(I)
f=340/(I/1200)*(((1+(I/1200))^240)-1)-300000);
df=diff(f,I);

Programa:

%1-Maximo Error Absoluto con 6 decimales.
format long
clear
t=6;
e=0.5*10^-t;
disp('El Maximo Error Absoluto es:'), disp(e);
%2-Calculo de la tasa de interes mediante el uso del metodo de la biseccion.
a=5;
b=15;
fa=interes(a);
fb=interes(b);
n=round((log(b-a)-log(e))/log(2)-1);
disp('La cantidad minima de iteraciones necesarias es:'), disp(n);
for i= 1 : n
c = (a+b)/2;
fc = interes(c);
if(fc*fa<0)
b = c;
fb = fc;
else
a = c;
fa = fc;
end
end
disp('El valor de la tasa de interes por medio del metodo de la Biseccion es:'), disp(a);
%3-Calculo de la tasa de interes mediante el uso del metodo de Newton.
clear
xo=15;
fxo=interes(xo);
dfxo=derivada(xo);
x1=xo-(fxo./dfxo);
fx1=interes(x1);
dfx1=derivada(x1);
n=1;
while (abs(x1-xo)>0.0000001)
xo=x1;
fxo=fx1;
dfxo=dfx1;
x1=xo-(fxo./dfxo);
fx1=interes(x1);
dfx1=derivada(x1);
n=n+1;
end
disp('El valor de la tasa de interes por medio del metodo de Newton es:'), disp(x1);
disp('Para lo cual, la cantidad de pasos necesarios fue de:'), disp(n);

Gracias!!!
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