MATLAB: функция fsolve

Я пытаюсь попрактиковаться с «fsolve» и не совсем понял, что происходит со следующим кодом. Кто-нибудь может пролить свет на это?

function N=productivity1(N,Ac,Aw)
global Thetac Thetaw tau a b
N=[N(1),N(2)];
N=[N(1)-(Thetac/a)^(1/b)*(1+tau)*Ac; 
  N(2)-(Thetaw/a)^(1/b)*(1+tau)*Aw;
  N(1)+N(2)-1]; %this meant to be a constraint...
end

N0=[0.7,0.3]; %initial guess for x
option=optimset('Display','iter');
result=fsolve(@(N)productivity1(N,Ac0,Aw0),N0,option);

Вот подробности:

Ac=2
Aw=20

Ac и Aw должны принимать такие значения, что N(1)+N(2)=1, начальные значения Ac и Aw не фиксированы.

Фиксированные значения параметров

Thetac=0.6
Thetaw=0.6
tau=0.07
a=0.01
b=0.8

Выход такой же, как вектор начальных значений, независимо от значения вышеуказанных параметров. Это проблема, с которой я столкнулся.


person london    schedule 29.11.2014    source источник


Ответы (1)


Вам необходимо добавить диагностику в вашу функцию Productivity1 на основе возвращаемого значения exitflag, которое описывает условие выхода из fsolve (http://nl.mathworks.com/help/optim/ug/fsolve.html).

person Kostya    schedule 29.11.2014