Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Математические пакеты > Арбитражное уравнение для цен актвива


Автор: Redb 15.12.2016, 13:12
Помогите с арбитражным уравнением.
Необходимо решить уравнение r*p=d(t)+ṗ.
Функция должна возвращать значение (−p˙) как функцию от p и (−t).
В условие задано, что при t>=20 d(t)=0.
Функция d(t) рассчитывается по следующему коду:
Код

function d = dividend(t)
d = 1 * and(t >= 5, t < 10) + 0.02 * t .* (t < 5) + 0.1 * (15 - t) .* and(t >= 10, t < 15);

Пишу следующий код для решения уравнения:
Код

    function ndp = neg_dot_p(neg_t,p)
    %NEG_DOT_P
    %функции возвращает значение (-pМ‡)
    %как функцию от p и (-t)
     
    %получаем доступ к глобальным переменным
    global r
    %используем уравнение r*p=d(t)+pМ‡
    if (abs(neg_t)>=20)
        ndp = r*p;
    else
        ndp =  r*p - dividend(neg_t); %
    end
    end

При этом должно быть удовлетворено условие: lim(|p(t)|)<∞ при t →∞
Какое тогда будет уравнение p(t)?
Функция должна проходить текст:
Код

for i = 1:1000;
  res = res + neg_dot_p(-i/100, i/1000);
end
if abs(res - 475) > 1
  fprintf('test not passed\n');
  error('Function "neg_dot_p" is not correct');
end

В чем ошибка?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)