Bucle con MATLAB
Publicado por Guillem (1 intervención) el 04/03/2008 18:29:27
Hola!
Necesito una ayudita con la programacion en lenguage Matlab. La cosa es que tengo que calcular (o deberia obtener como resultado) un vector (el z de 12 componentes) del cual conozco el primer elemento (z(1)). El resto los he de calcular como cero de una funcion f (factual = (x(1)+x(2))/96.231728-log((96.231728+x(1))/(96.231728-x(2)))) medinate el metodo de newton. No se si me podeis ayudar...
Aqui debajo incluyo lo que he intentado programar yo para que pueda verse por donde van los tiros (aunque no se si es suficientemente bueno).
Gracias
%Creamos los vectores que nos permitiran dibujar la evolucion de las iteraciones
x=[ ]
z=zeros(1,11)
z(1)=22.2591
for i=1:11
%Definicion de las variables
it=0; z(1)=22.2591;
tolz=0.5*10^(-8);
tolf=0.5*10^(-8);
itmax=50;
errz=1;errf=1;
%metodo de Newton
zactual=z(i); factual=f(zactual); dfactual=df(zactual);znuevo=0.;
while (errz>(tolz*abs(znuevo)) | errf>tolf)
znuevo=zactual-factual/dfactual
fnuevo=f(znuevo); dfnuevo=df(znuevo);
errz=abs(zactual-znuevo); errf=abs(factual);
z(it+1)=log10(errx);
x(it+1)=it+1;
if it>itmax
break
end
it=it+1;
zactual=znuevo; factual=fnuevo; dfactual=dfnuevo;
z(i+2)=z(i+1)
z(i+1)=z(i+2)
end
end
Necesito una ayudita con la programacion en lenguage Matlab. La cosa es que tengo que calcular (o deberia obtener como resultado) un vector (el z de 12 componentes) del cual conozco el primer elemento (z(1)). El resto los he de calcular como cero de una funcion f (factual = (x(1)+x(2))/96.231728-log((96.231728+x(1))/(96.231728-x(2)))) medinate el metodo de newton. No se si me podeis ayudar...
Aqui debajo incluyo lo que he intentado programar yo para que pueda verse por donde van los tiros (aunque no se si es suficientemente bueno).
Gracias
%Creamos los vectores que nos permitiran dibujar la evolucion de las iteraciones
x=[ ]
z=zeros(1,11)
z(1)=22.2591
for i=1:11
%Definicion de las variables
it=0; z(1)=22.2591;
tolz=0.5*10^(-8);
tolf=0.5*10^(-8);
itmax=50;
errz=1;errf=1;
%metodo de Newton
zactual=z(i); factual=f(zactual); dfactual=df(zactual);znuevo=0.;
while (errz>(tolz*abs(znuevo)) | errf>tolf)
znuevo=zactual-factual/dfactual
fnuevo=f(znuevo); dfnuevo=df(znuevo);
errz=abs(zactual-znuevo); errf=abs(factual);
z(it+1)=log10(errx);
x(it+1)=it+1;
if it>itmax
break
end
it=it+1;
zactual=znuevo; factual=fnuevo; dfactual=dfnuevo;
z(i+2)=z(i+1)
z(i+1)=z(i+2)
end
end
Valora esta pregunta


0