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

  • Просмотров 1583
  • Скачиваний 5
  • Размер файла 202
    Кб

примеры. Замечание 2. В связи с задачей о динамике вклада может быть поставлен и такой вопрос. Сколько лет подряд вкладчик может снимать со счета по A денежных единиц в конце каждого периода после начисления процентов, если он положил в банк сумму в S единиц при ставке p процентов. Ответ на него может дать рекурсивная функция year(S,p,A): Здесь случай неубывания величины вклада выделен отдельно (loS), рекурсия организована по остаткам

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

вклада через nper периодов? Решение. Данная задача является прямым обобщением задач 1 и 2 и может быть решена с помощью встроенной в Excel функции fv(). Однако нас будут интересовать её рекурсивные аналоги. Будем считать, что знак величины pmt определяет тип операции, совершаемой вкладчиком в конце или начале каждого периода. При pmt0 деньги вносятся на счет, а при pmt<0 деньги снимаются со счета (в Excel наоборот!). Далее, пусть знак pv

определяет, имеет ли вкладчик деньги на счету или он должен банку. При pv0 деньги на счету есть, при pv<0 имеется задолженность в |pv| денежных единиц (в Excel наоборот!). Пусть fv(rate,nper,pmt,pv,type)  функция для решения исходной задачи. Ниже приведено два варианта (fv1(), fv2()) рекурсивной реализации fv(): Дадим пояснения к функциям fv1() и fv2(), например, при type=0. Параметризация задачи фактически осуществлена в её постановке. Базой рекурсии для обоих

предложенных вариантов служит случай nper=0. Иными словами, если pv денежных единиц положить в банк и сразу же их забрать, то будет возвращена та же самая сумма. Декомпозиция для fv1() и fv2() проведена, исходя из того, что решение исходной задачи по конечному результату равносильно соответственно совокупности следующих действий. Для fv1(): “Положить на тех же условиях pv денежных единиц в банк на nper1 период, снять всю сумму с вклада и,

наконец, на тех же условиях снова положить её на один период”. Для fv2(): “Положить на тех же условиях pv денежных единиц в банк на 1 период, снять всю сумму с вклада и, наконец, на тех же условиях снова положить её на nper1 период”. Именно это и реализовано в соответствующих программах функциях. При необходимости можно было бы вывести и конечную формулу для вычисления fv() или, по крайней мере, попытаться найти её в том или ином