• Jueves 20 de Febrero de 2025, 20:15

Autor Tema:  PROBLEMA: Error using ==> fzero  (Leído 1112 veces)

Diga

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
PROBLEMA: Error using ==> fzero
« en: Jueves 10 de Marzo de 2011, 19:38 »
0
En un programa, usando la función fzero, nos sale este aviso de error  "The function values at the interval endpoints must differ in sign."


if k>1
        lambdastar=fzero(@(lambda) dphi2(q1,p0,L,U,lambda,ro_alpha,ro_beta,npar,Amax,r1),[1e-100 1e100]);
    else
        lambdastar=1e100;
    end

    alpha(:,k+1)=xs(q1,p0,L,U,lambdastar,ro_alpha,ro_beta,npar);

donde xs es:

function out=xs(q1,p0,L,U,lambdastar,ro_alpha,ro_beta,npar)


for n=1:npar
    if q1(n)==0
        xt(n)=L(n);
    elseif p0(n)==0
        xt(n)=U(n);
    else
        xt(n)=((U(n)*sqrt(lambdastar*q1(n)/p0(n)))+L(n))/(1+sqrt(lambdastar*q1(n)/p0(n)));
    end
   
       
    if xt(n)<ro_alpha(n)
        xs(n)=ro_alpha(n);
    elseif xt(n)>ro_beta
        xs(n)=ro_beta(n);
    else
        xs(n)=xt(n);
    end
   
end
alpha=abs(xs)
out=alpha;

y dphi2 es:
function out=dphi2(q1,p0,L,U,lambda,ro_alpha,ro_beta,npar,Amax,r1)

x=xs(q1,p0,L,U,lambda,ro_alpha,ro_beta,npar);

sum=0;
for n=1:npar
    sum=sum+(q1(n)/(x(n)-L(n)));
end

% sum=q1*inv(x-L)
dphi2=abs(r1+sum-Amax);
out=dphi2;






end




end
muchas gracias por todo  :D