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

Автор работы: Пользователь скрыл имя, 13 Марта 2013 в 19:43, реферат

Краткое описание

В электронные таблицы Excel, систему управления базами данных Access, язык программирования Visual Basic и многие другие современные компьютерные технологии встроены так называемые “финансовые функции”: fv(), pv(), pmt(), ppmt(), ipmt(), rate(), nper() и т.д. В повседневной жизни с задачами, в которых они могут быть использованы, приходится сталкиваться достаточно часто.

Содержание

Введение
Динамика вклада
Задача о величине вклада
Задача о величине вклада после снятия денег в конце каждого периода
Задача о величине вклада после внесения (снятия) денег в конце или начале каждого периода
Задача о изменяющихся процентных ставках
Задача о изменяющихся процентных ставках и величинах снимаемых денег
Дисконтирование. Инвестиции. Консолидирование
Задача о дисконтировании
Задача о инвестировании проекта
Задача о консолидировании платежей
Платежи
Задача о равных платежах в конце каждого периода
Задача о платежах с одинаковой современной стоимостью
Задача о платежах на проценты
Разные задачи
Задача о величине процентной ставки
Задача о величине процентной ставки 2
Задача о количестве периодов для расчета заемщика с банком
Задача о суммарной способности к кредитованию
Задача о минимальном количестве банков
Задача о изменении величины суммарного кредитования
Заключение
Литература

Вложенные файлы: 1 файл

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

— 454.37 Кб (Скачать файл)

Приравнивая последнее выражение  нулю, и разрешая полученное уравнение  относительно W, получаем формулу (20):

 (20)

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

Замечание. Мы решали задачу, предполагая, что платежи поступают  в конце каждого из периодов. Это  совсем не обязательно. Формула (20) остается справедливой (с поправками) и в  следующих двух случаях:

Производится по m1 платежей через равные промежутки времени  в каждый из k периодов. В (20) вместо k и p необходимо подставить соответственно значения kЧm1 и p/m1.

Платежи проводятся через m2 периодов. В (20) вместо k и p необходимо подставить соответственно значения k/m2 и pЧm2.

Указанное замечание касается и многих других ранее рассмотренных  функций.

Задача о равных платежах в конце или начале каждого  периода.

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

Решение. Данная задача может  быть решена с помощью встроенной в Excel функции pmt=pmt(rate,nper,pv,type). При type=0 задачи 10 и 11 идентичны. Ниже приведено решение  для общего случая, основанное на легко  получаемой рекуррентной формуле. Будем  исходить из того, что современная  стоимость всех внесенных платежей должна быть равной произведенному займу pv. Пусть через pmtn (n=1,2,…) обозначена ставка платежей при выплатах за n периодов. Найдем связь между pmtn и pmtn-1, исходя из баланса современной стоимости  платежей при любом n. Пусть type=0. Тогда

Отсюда

 (21)

То же самое соотношение  получается и для type=1. Иными словами, при любом допустимом значении type имеет место следующая рекуррентная формула:

 (22)

Раскрывая рекуррентность (22), получаем

 (23)

 (24)

Соотношения (24) и (22) и взяты  соответственно в качестве базы и  декомпозиции при реализации рекурсивной  программы-функции pmt():

Из соотношений (23) и (24) при n=nper получается конечная формула для  вычисления значений pmt():

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

 

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

 

Некто занял pv денежных единиц на nper периодов при процентной ставке в rate процентов за период. Платежи ppmt по займу должны иметь одинаковую современную стоимость и производиться  в конце (type=0) или начале (type=1) каждого  периода. Определить величину платежа  в период per (per=1,2,…,nper).

Решение. Данная задача может  быть решена с помощью встроенной в Excel функции ppmt(rate,per,nper,pv,type). Получим  её рекурсивную реализацию. Пусть pk (k=1,2,…,nper) - последовательные платежи.

Рассмотрим сначала случай type=0. Современные стоимости всех платежей должны совпадать. Отсюда

 (25)

Но

 (26)

Аналогично при type=1 получим

 (27)

Из соотношений (25), (26) и (27) нетрудно получить соответствующие  формулы для случая произвольного  значения type. Выглядят они так:

Теперь ясно, что брать  в качестве базы рекурсии, и как  организовать декомпозицию по периодам при построении функции ppmt(), а также  как получить конечную формулу (ppmt1) для решения исходной задачи:

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

 

Задача о платежах на проценты

 

Некто взял заем в pv денежных единиц при ставке rate процентов за период. Возврат долга должен быть произведен nper равными платежами  в конце каждого периода. Подсчитать платеж ipmt в период per (1ЈperЈnper), составляющий часть общего платежа, равную приросту долга по процентам за этот период.

Решение. Данная задача может  быть решена с помощью встроенной в Excel функции ipmt(rate,per,nper,pv). Получим  её рекурсивную реализацию. Общая  величина платежа pmt в каждый из периодов может быть вычислена так (см. задачу 11 при type=0):

Базой рекурсии будем считать  случай per=1. К концу первого периода  часть долга, приходящаяся на проценты, будет равна pvЧrate/100. Декомпозицию проведем, опираясь на такие соображения. Решать исходную задачу, вычисляя ipmt в период per - это то же самое, что решать укороченную на один период задачу, но с начальным займом в pvЧ(1+rate/100) -pmt денежных единиц. Тогда решение задачи можно получать с помощью пары функций ipmt() и ip(). Первая из них вычисляет вспомогательную величину pmt - размер общих платежей в конце каждого периода, и передает её в качестве формального параметра функции ip(), в которой и организуется описанный рекурсивный процесс:

Вывести конечную формулу (ipmt1) для решения задачи можно так. Остаток долга после завершения (k-1) - го периода равен:

Тогда увеличение долга по процентам за k-ый период можно подсчитать так:

Но это и есть прирост  долга по процентам за k-ый период. И окончательно имеем:

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

Разные задачи

 

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

 

Банк выдал заемщику S денежных единиц. Условия кредита таковы: заемщик должен внести в банк k последовательных платежей. Первый платеж в a0 денежных единиц необходимо осуществить через t0 периодов, второй платеж в a1 единиц - через t1 периодов и т.д. и, наконец, (k-1) - й платеж в ak-1 единиц - через tk-1 периодов. Все величины tn (n=0. . k-1) отсчитываются от момента получения займа. Какую процентную ставку установил банк для этого кредита?

Решение. Пусть p - процентная ставка и x=1+p/100. Считая, что современная  стоимость всех внесенных в банк платежей должна равняться величине кредита, получаем:

Но t0<t1<…<tk-1 и для нахождения величины x, а значит и p, имеем уравнение:

Нам требуется определить положительный корень многочлена f(x), стоящего в левой части последнего соотношения. Из экономических соображений  вытекает, что такой корень должен существовать и быть единственным. Впрочем, с учетом того, что S>0 и an>0 (n=0. . k-1), чисто формальными рассуждениями  можно установить даже более сильное  утверждение. Многочлен f(x) имеет единственный неотрицательный корень x0. Модули остальных  его корней не превосходят x0. Доказательство этого факта вытекает из применения теоремы Фробениуса-Перона [8, c.263; 9, стр.319, 340] к сопровождающей матрице f(x).

Схема дальнейшей нашей работы будет такой. Пусть векторы a и t - заданы соотношениями (10). Напишем рекурсивную  программу-функцию vecto() формирования компонентов  вектора m коэффициентами f(x), начиная  от свободного члена a0 и далее по возрастающим степеням x. Затем в  головной программе percent(S,a,t) для нахождения процентной ставки p воспользуемся  композицией серии встроенных в Mathcad функций:

polyroots(m) – вычисление всех  корней f(x);

max(v) - нахождение числа  a+iЧb, где a и b наибольшие соответственно из действительных частей и коэффициентов при мнимых частях компонентов v;

Re(z) - вычисление действительной  части комплексного числа z.

 (28)

 (29)

Несколько слов об аргументах функции vecto(a,t,n,q,m). Назначение величин a, t и n ясно. Вспомогательный параметр q служит счетчиком количества сформированных в матрице m коэффициентов f(x): q=0. . tn.

Нерекурсивный вариант программ (28) -(29) может быть записан так:

 (30)

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

 

Задача о величине процентной ставки 2

 

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

Решение. Данная задача может  быть решена с помощью встроенной в Excel функции rate(nper,per,pv,type). Строя рекурсивные  аналоги rate(), будем делать это отдельно для случаев type=0 и type=1.

A. type=0. Современная стоимость  всех платежей должна быть  равна pv:

 (31)

Преобразуем (31) к виду

 (32)

На последнее соотношение  можно смотреть как на декомпозицию исходной задачи с прежними платежами  и процентной ставкой, nper-1 периодом и инвестициями в pvЧ(1+rate/100) -pmt денежных единиц. Правда, инвестиции здесь содержат неизвестный параметр rate. Далее ясно, что при nper=1

Если считать последнее  из этих соотношений базой индукции, то соответствующая программа-функция  могла бы выглядеть так:

 (33)

где за x обозначена величина rate(nper,pmt,pv). Мы получили, что в процессе рекурсивных вызовов функция  обращается к самой себе с тем  же самым набором значений параметров. Ясно, что вычисления по ней не будут  иметь останова. Точнее, останов  будет аварийным по переполнению стека. С подобной ситуацией мы уже  сталкивались при решении задачи 10. И там для выхода из создавшейся  ситуации был использован прием  введения дополнительного параметра. Поступим также и здесь, заменив (33) функцией:

 (34)

Теперь будем искать решения x=x* уравнения

 (35)

Делать это можно, например, методом дихотомии с помощью  рекурсивной функции dicho() (см. (17)).

Замечание. Обратим внимание на следующее обстоятельство. При  решении уравнения g(nper,pmt,pv,x) =0 с вычислениями по (34) могут появиться “посторонние корни” - значения x* є rate1(nper,pmt,pv,x*), но не являющиеся решениями исходной задачи. Поэтому все полученные корни (35) обязаны подвергнуться проверке по данным задачи, например, на выполнимость условия (31). Ограничимся рассмотрением  одного примера.

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

Полученное значение x=7.35616 не является решением задачи, ибо pv=320.88289№b.

Получили решение задачи, ибо pv=320.88289=b.

B. type=1. К началу второго  периода задолженность инвестору  с одной стороны равна (pv-pmt) Ч(1+rate/100), а с другой стороны  - должна быть погашена вторым  платежом pmt. Таким образом

 (36)

Далее,

 (37)

Последние соотношения в (36) и (37) задают соответственно базу и  декомпозицию, на основе которых после  введения дополнительного параметра x и построена рекурсивная функция rate2():

src="http://xreferat.ru/image/114/1307203091_135.gif" alt="Финансовые функции и рекурсия" width="567" height="97" border="0" />

Все дальнейшие действия должны быть такими же, как и в случае type=0.

 

Задача о количестве периодов для расчета заемщика с  банком

 

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

Решение. Организуем рекурсию по величине долга в конце каждого  периода. Если R=SЧ(1+p/100) -WЈ0, то полностью  расплатиться удастся за один период, и условие RЈ0 можно взять в  качестве базы рекурсии. Нетрудно понять, что при R=S долг всегда будет одним  и тем же, а при R>S он будет  возрастать. Таким образом, при RіS рассчитаться с долгом вообще не удастся. Пусть R<S. Декомпозицию проведем, исходя из такого утверждения. Если с долгом величиной S можно рассчитаться за k периодов, то с долгом величиной R удастся рассчитаться за k-1 период. Эти соображения и  легли в основу формирования функции number(S,p,W):

 (38)

Разберем еще один вариант  решения данной задачи. Пусть a=1+p/100. Тогда:

 - долг через 1 период;

 - долг через 2 периода;

… … …

 - долг через k периодов;

Отсюда, прежде всего, вытекает, что с долгом удастся расплатиться, если SЧp/100<W, то есть его увеличение за первый период должно быть меньше разового платежа. Впрочем, это было ясно и  из предыдущих рассуждений. Далее, последнее  соотношение говорит о том, что  при SЧp/100<W долг будет погашен через k периодов, где k - наименьшее натуральное  число, удовлетворяющее неравенству:

Рассмотрим рекурсивную  функцию number1(S,p,W,k):

 (39)

с некоторым вспомогательным  натуральным аргументом k. Ясно, что  при обращении к ней с любыми значениями S, p и W (SЧp/100<W) и k=1 получим  решение исходной задачи. Обратите внимание на отсутствие отложенных вычислений при реализации number1(S,p,W,k).

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

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

(логарифм десятичный) и  взять наименьшее целое, большее  или равное num(S,p,W).

Рассмотрим еще одну задачу, проливающую свет на то, как банки  “делают деньги”. Пусть имеется  система из n банков B1, B2,..., Bn, для  каждого из которых установлена  норма резервов в p процентов. Это означает, что любой из этих банков p процентов своих наличных денег должен хранить в некотором Центральном банке B0 в виде обязательных резервов. Остальные деньги являются свободными резервами банков. Их можно давать в кредит под определенные проценты, вкладывать в различные проекты, а из полученных доходов выплачивать вкладчикам проценты за пользование их деньгами.

 

Задача о суммарной  способности к кредитованию

 

Пусть в банк B1 внесен вклад  в S денежных единиц. Будем считать, что свободные резервы банка Bk (k=1,2,...,n-1) в результате ряда операций становятся вкладом в банк Bk+1 (k=1,2,...,n-1), а норма обязательных резервов равна p процентов. Определить суммарную способность  к кредитованию рассматриваемой  системы банков.

Решение. Получить решение  данной задачи можно по рекурсивной  функции credit(S,p,n). Декомпозиция в ней  реализована, исходя из следующей посылки. Суммарная величина кредитования всей системы банков складывается из величины кредитования банка B1 и суммы величин  кредитования остальных банков с  учетом того, что вклад в банк B2 составил SЧ(1-p/100) денежных единиц. База рекурсии также очевидна: нет банков (n=0) - нет кредитования.

Вывод конечной формулы для  решения задачи (10) может быть проведен так:

 (40)

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

Какие же выводы можно сделать  из рассмотрения последней задачи? В системе коммерческих банков B1, B2,..., Bn не предполагалось, что все  они различны. Более того, допустим и такой крайний случай: B1 = B2 =... = Bn. Поэтому способность системы  банков к кредитованию, вообще говоря, не связана с их количеством. Но эта  способность существенно связана  с оперативным возвратом отдаваемых в кредит денег, после серии сделок с ними, снова в банки в виде вкладов. Кроме того ясно, как центральный  банк путем изменения ставки обязательных резервов может влиять на суммарный  объем кредитования. Если процент  обязательных резервов растет, то суммарная  величина кредитов убывает, если же этот процент уменьшается, то суммарная  величина кредитов возрастает.

Информация о работе Финансовые функции и рекурсия