Финансовые функции и рекурсия

p=(p0,p1,…,pn-1) T, A=(A0,A1,…,An-1) T.

Ответ на первые два вопроса дают рекурсивные программы-функции waste2(sum,p,A) и waste3(sum,p,A). Если задача имеет решение, то они возвращают величину вклада после n периодов, а иначе - отрицательное число. Декомпозиция для функции waste2() проводилась, исходя из того же утверждения, что и для функции waste(), а декомпозиция для функции waste3() - ис

ходя из того же утверждения, что и для функции waste1(). Во втором случае получена более компактная и ясная программа:

Наряду с этими программами можно вывести и конечную формулу wa(S,p,A) для расчетов. Пусть n=length(p). Тогда:

И, наконец, в общем случае:

Контрольные примеры.

Попробуем теперь составить программу, отвечающую на третий из поставленных вопросов. Будем считать, что она должна возвращать вектор с двумя компонентами, который выглядит так:

[“O’key” решение] T, если задача имеет решение;

[период сальдо] T, если задача не имеет решения.

Во втором случае возвращается период (нумерация от 1 и далее) и отрицательное сальдо – количество денежных единиц, которых недостает для выплаты в данный период.

Всем перечисленным условиям удовлетворяет рекурсивная программа-функция waste4(sum,p,A,k):

Здесь k - вспомогательный параметр. При первом обращении к waste4() его значение должно быть равно нулю. Далее k используется для организации рекурсивных вычислений, а операторы return - для прекращения рекурсивных вызовов при получении решения задачи.

Контрольные примеры.

Дисконтирование. Инвестиции. Консолидирование

Задача о дисконтировании

Какую сумму следует внести сегодня в банк при процентной ставке p, чтобы через n периодов получить S денежных единиц?

Решение. Фактически речь идет о вычислении величины, называемой экономистами современной стоимостью отложенного платежа. Если положить в банк сумму в R=S/(1+p/100) n единиц, то через n периодов она превращается в S единиц. Та же самая сумма R через n-1 период превращается в S/(1+p/100) единиц. Таким образом, если discount(S,p,n) - решение исходной задачи, то при n¹0 имеем:

discount(S,p,n) = discount(S/(1+p/100),p,n-1).

Будем проводить рекурсию по количеству периодов n. Тогда последнее соотношение дает нам правило декомпозиции. Отсюда и получаем программу-функцию (5):

(5)

На вопросе о том, как проведена декомпозиция в (6), останавливаться не будем:

(6)

Замечание. Из проведенных рассуждений вытекает, что решение задачи может быть получено по конечной формуле:

Контрольные примеры.

Задача о современной стоимости потока равных платежей.

Пусть реализация некоторого проекта обеспечивает поток равных платежей по S денежных единиц за каждый из n периодов при банковской ставке p процентов. Подсчитать современную стоимость этого потока.

Решение. Если просуммировать сегодняшнюю стоимость первого, второго и т.д. и, наконец, последнего платежа, то мы и получим современную стоимость всего потока. Пусть она равна payment(S,p,n). Тогда в силу задачи 6 о дисконтировании будем иметь:

Впрочем, никто не мешает нам вывести и конечную формулу для расчетов, которая выглядит так:

Однако мы займемся написанием рекурсивной программы-функции решения данной задачи. Выделить базу и провести декомпозицию наиболее просто, исходя из таких утверждений. Если n=0, то есть не прошло ни одного периода, то и платежей поступит 0. Далее, современная стоимость всех платежей - это современная стоимость платежей за первые n-1 период плюс современная стоимость последнего n-го платежа, равного S/(1+p/100) n. Отсюда и получаем функцию (7):

(7)

Другой вариант рекурсивной функции решения задачи 7 можно записать так:

(8)

Контрольные примеры.

Задача о инвестировании проекта

Пусть некоторый проект в течение последующих nper периодов будет приносить доход по pmt денежных единиц. Пусть платежи инвестору производятся в конце каждого периода (type=0) или в начале их (type=1). Какую сумму инвестор может вложить в этот проект, чтобы при действующей процентной ставке, равной rate за период, он оказался выгодным?

Решение. Вопрос фактически ставится так. Если сегодня инвестор внес W денежных единиц в реализацию проекта, то оправданы ли эти затраты с его будущими доходами по pmt единиц в течение каждого из nper периодов? Из предыдущей задачи вытекает, что при type=0 проект оказывается выгодным лишь при выполнении условия W<payment(pmt,nper,rate). В общем виде эта задача является прямым обобщением задачи 7 и может быть решена с помощью встроенной в Excel функции pv() - вычисления современной стоимости потока равных платежей. Если W<pv(pmt,nper,rate,type), то финансировать проект выгодно. Сконструируем рекурсивныe аналоги pv1() и pv2() функции pv(). Рассмотрим два варианта.

Вариант 1. Функции pv10() и pv11() вычисляют современную стоимость потока платежей соответственно при type=0 и type=1. При этом pv10() равносильна функции (7), а pv11() строится по аналогии с pv10(). Далее, при известных функциях pv1() и pv2() написание функции pv1() для любого значения type труда не представляет:

Вариант 2. Функции pv20() и pv21() вычисляют современную стоимость потока платежей соответственно при type=0 и type=1. При этом pv20() равносильна функции (8), а pv2() строится по аналогии с pv20(). Далее, при известных функциях pv20() и pv21() написание функции pv2() для любого значения type труда не представляет:

Страница:  1  2  3  4  5  6  7  8  9  10 


Другие рефераты на тему «Экономико-математическое моделирование»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы