Реферат по предмету "Экономико-математическое моделирование"


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

Министерство образования РФ
Тульский государственный педагогический университет
имени Л.Н. Толстого
Кафедра информатики
Дипломная работа
«Финансовые функции» и рекурсия
Выполнил:
Научный руководитель:
Тула-2000
План
Введение. 4
Динамика вклада. 7
Задача о величине вклада. 7
Задача о величине вклада после снятия денег в конце каждогопериода  11
Задача о величине вклада после внесения (снятия) денег вконце или начале каждого периода. 13
Задача о изменяющихся процентных ставках. 15
Задача о изменяющихся процентных ставках и величинахснимаемых денег  16
Дисконтирование. Инвестиции. Консолидирование. 19
Задача о дисконтировании. 19
Задача о инвестировании проекта. 21
Задача о консолидировании платежей. 23
Платежи. 25
Задача о равных платежах в концекаждого периода. 25
Задача о платежах с одинаковойсовременной стоимостью… 30
Задача о платежах на проценты… 31
Разные задачи. 34
Задача о величине процентной ставки. 34
Задача о величине процентной ставки 2. 36
Задача о количестве периодов для расчета заемщика с банком… 38
Задача о суммарной способности к кредитованию… 41
Задача о минимальном количестве банков. 42
Задача о изменении величины суммарного кредитования. 43
Заключение. 50
Литература. 51
Введение
Вэлектронные таблицы Excel, систему управления базамиданных Access, язык программирования Visual Basic и многие другие современныекомпьютерные технологии встроены так называемые “финансовые функции”: fv(), pv(), pmt(),ppmt(), ipmt(), rate(), nper() и т.д. В повседневнойжизни с задачами, в которых они могут быть использованы, приходитсясталкиваться достаточно часто. Это заставляет преподавателей информатикипедагогических вузов не только знакомить студентов различных специальностей ссинтаксисом и семантикой этих функций, но и уделять особое внимание поискуновых методик и технологий обучения, ориентированных на прочное усвоениесоответствующих знаний. И здесь на помощь может прийти рекурсия, с помощьюкоторой строятся лаконичные и легко понимаемые алгоритмы, а затем исоответствующие информационные модели в виде рекурсивных программ на том илиином языке программирования [9, 10]. И что особенно важно, набор упомянутыхфинансовых функций и рекурсивные алгоритмы их вычисления могут служить весьмаподходящим фоновым материалом для начального освоения студентами рекурсии какдостаточно общего и эффективного метода решения практических задач.
Заметим, чтовычисление значений финансовых функций с помощью электронных таблиц Excel или других пакетов прикладных программ можно признатьцелесообразным лишь при уже полностью сформированном понимании их синтаксиса исемантики. Но при первом знакомстве с этими и другими функциями рекурсивныйподход в полной мере демонстрирует все свои дидактические преимущества посравнению с простым описанием функций и решением по ним соответствующихприкладных задач. Он дает возможность не только всесторонне понять содержаниеизлагаемого материала, но сделать это быстро и эффективно. И что особенноважно, полученные знания становятся достоянием долговременной памяти. Последнийвывод убедительно подтверждается результатами проверочной работы, проведенной вдвух группах студентов через год после ознакомления их с финансовыми функциями.Результаты эти оказались и удивительными, и убедительными. Более 36 процентовстудентов, которым материал преподносился традиционно, с предъявленным заданиемне справились. В то же самое время в группе, осваивавшей этот же материал сиспользованием рекурсии, с заданием не справились лишь 12 процентов студентов(3 человека). Столь разительное различие в уровне усвоения знаний вэкспериментальной и контрольной группах заставляет нас по-новому оценитьдидактические возможности рекурсии и осознать её роль и место в построениисовременного курса информатики в педагогических вузах. И эта роль, по-видимому,будет возрастать вместе с дальнейшим развитием компьютерной техники ипрограммного обеспечения. В связи с этим главной задачей данной дипломнойработы является разработка методик решения финансовых задач рекурсивнымиметодами и их практическая реализация в виде обучающей программы (Web-узла) по данной теме.
При отборематериала для первоначального знакомства студентов и учащихся с рекурсивнымиметодами решения прикладных задач, ориентированных на экономическиеспециальности, существенную роль играют два фактора: наличие экономическогосодержания в этих задачах и прозрачность свойств рекурсивности рассматриваемыхв них объектов. И то, и другое в полной мере может быть обеспечено рекурсивнойреализацией финансовых функций.
Большойвыбор содержательных задач, решаемых финансовыми функциями, можно встретить всфере банковской деятельности [1,3-6]. Причем возникают они здесь наобслуживании всего лишь двух операций. Банк, являясь финансовым посредником междувкладчиками и заемщиками (рис.1), с одной стороны, принимает деньги и платит поним проценты, а с другой стороны, дает кредиты и получает за них проценты. Разностьмежду той суммой, которую получает банк от заемщиков по процентам за конкретныйпериод, и той, которую он платит вкладчикам по процентам за этот же период, исоставляет прибыль банка. Как говорил американский писатель-сатирик Генри УилерШоу [2, с.30] “Банковский процент не знает ни отдыха, ни богослужений, онработает и по ночам, и в воскресенье, и даже в дождливые дни”. /> />
Рис.1. Банк как финансовый посредник между вкладчиками и заемщиками
Врассматриваемой ниже серии задач везде речь идет об обычных вкладах и сложныхпроцентах, а решения оформлены в виде рекурсивных программ-функций на языкепрограммирования вычислительной среды Mathcad. Все ониделятся на три категории: прямые рекурсивные аналоги, частные случаи иобобщения встроенных в Excel финансовых функций. Дляпервой категории функций и их аргументов используются стандартные обозначения. Виных ситуациях обозначения произвольны. Наличие почти во всех задачах несложновыводимой при определенных навыках, но обычно громоздкой, конечнойформулы-решения позволяет на контрольных примерах легко проверить правильностьсоставленных для них рекурсивных программ. Отметим, что все приведенныепрограммы, благодаря рекурсивности, весьма просты и для их написания нетребуется знания соответствующих конечных формул. В дополнении к данной работедается краткое описание Mathcad ипрограммы Microsoft FrontPage 2000, с помощью которой был создан Web-узел.
Динамика вклада
Начнемупомянутую серию задач с рассмотрения простой и многим знакомой житейскойпроблемы хранения денег в банке. Задача о величине вклада
Вкладчик положилв банк сумму в sum денежных единиц под p процентов за один период времени (год,месяц, неделя и т.д.). Составить программу-функцию, возвращающую величинувклада по истечении n периодов времени (n = 1, 2, …).
Решение. Пустьinvest(sum,p,n) — искомая функция. Вычислениязначений invest() можно проводить по известной формуле:
invest(sum,p,n) = sum×(1+p/100) n.
Однако вучебных целях нас будет интересовать рекурсивный вариант алгоритма решениязадачи. Её параметризация реализована в постановке. Рекурсию будем осуществлятьпо параметру n. База рекурсии очевидна. В самом деле, если вклад положен нахранение и взят сразу, то есть до истечения первого периода времени начисленияпроцентов, то возврату подлежит начальная сумма вклада — sum. Далее, декомпозиция может бытьреализована исходя из следующего факта. Положить некоторую сумму в банк на nпериодов – это то же самое, что положить эту сумму на n – 1 период, взять иснова положить на 1 период. Соответствующий вариант программы-функции решениязадачи выглядит так:
/> (1)
Реализуядекомпозицию иным способом, получим другой вариант рекурсивной программы (1). Например,сделаем это исходя из такого факта. Положить некоторую сумму в банк на nпериодов – это то же самое, что положить эту сумму на 1 период, взять и сноваположить на n-1период. Соответствующая программа-функция выглядит так:
/> (2)
В данной иподобной ей задачах указанные декомпозиционные посылки программно реализуютсяприблизительно с равной степенью сложности и, тем самым, обе имеют право насуществование. Однако может возникнуть ситуация, когда предпочтение должно бытьотдано той или иной конкретной посылке. Например, если в последующем имеетсянеобходимость перейти к нерекурсивному варианту программы, то лучшепользоваться посылкой первого типа, а если есть проблемы с доказательствомправильности реализуемого алгоритма, то целесообразно работать с посылкойвторого типа.
Нетрудновидеть, что общее количество рекурсивных вызовов при вычислении invest(sum,p,n) и invest1(sum,p,n) равно n.Можно было бы уменьшить это значение до величины floor(log2(n)) +1, где floor(a) — целая часть натурального числа a, исходя из следующих двух декомпозиционных посылок.
Пусть сумма sum=m× g денежных единиц помещена на вклад при ставке в p процентов за период. Тогда через n периодов sum возрастет до той жесамой величины, что и совокупная сумма m отдельныхвкладов по g денежных единиц каждый, также помещенных подр процентов за период. Не ограничивая общности, величину sumможно считать целым неотрицательным числом. В противном случае можно было быперейти к иному номиналу денежных единиц. Значения m и g также будем считать целыми числами.
Положитьнекоторую сумму sum в банк на n периодов – это то жесамое, что положить эту сумму на k (0£k£n) периодов,взять и снова положить на n-k периодов.
Основаннуюна этих посылках рекурсивную функцию для решения задачи 1 обозначим через inv(sum,p,n). Указанные посылки обнаруживают такие свойства этойфункции.
Перваяпосылка.
/>
В частности,при m=1 получаем:
/>
Первая ивторая посылки. Пусть k=floor(n/2), тогда.
/>
/>
Отсюда при n=2×k сразу же получаем:
/>
При n=2×k+1 имеем:
/>
/>
Выведенныесоотношения для inv() позволяют записать такуюпрограмму для её вычисления:
/>
Общееколичество рекурсивных вызовов при счете по этой программе-функции можно былобы подсчитать с помощью следующей вспомогательной рекурсивной функции:
/>
и онодействительно равно /> 
Контрольныепримеры.
/> 
/>
/>
Незначительнаяперестройка структуры функции inv(sum,p,n) позволяет получить еще одинвариант её реализации, в котором количество рекурсивных вызовов в точностиравно /> Сделатьэто можно так:
/>
Замечание. Влюбых ситуациях, в которых возникают вопросы о быстродействии алгоритма,желательно по возможности минимизировать общее количество рекурсивных вызовов. Врассмотренной задаче построить алгоритм с />рекурсивными вызовами можно былобы значительно проще, исходя из конечной формулы для решения задачи и дихотомии.Однако путь, который мы прошли, имеет свои достоинства. Он позволяет в общемслучае выявить ограничения на рекурсивную функцию, достаточные для столь малогоколичества рекурсивных обращений при её вычислении. Фактически, из проведенныхрассуждений вытекает такое утверждение.
Пустьфункция F(a,n,v) удовлетворяет условиям:
F(a,1,v) =g(a,v),
F(a,n,v) =a×F(1,n,v),
F(a,n,v) =F(F(a,k,v),n-k,v) (1£k£n),
где a — действительное число, n — натуральное число, v=(v1,v2,…,vs) T — вектор с числовыми компонентами,g(a,v) — функция, значения которой для a и v из области определения F(a,n,v)мы вычислять можем. Тогда рекурсивная программа-функция:
/>
вычисляетзначение F(a,n,v) ровно за />рекурсивных вызовов.
Доказательствоэтого факта с использованием свойств A, B и C можно провести так:
/> 
Отсюда, при n=2×k имеем
/>
а при n=2×k+1 получаем
/>
/>
Именно наэтих соотношениях и базируется алгоритм, реализуемый программой-функцией F(a,n,v).
И взаключение замечания приведем пример функции, удовлетворяющей условиям A, B и С: /> где в области определения функцииf(v) её значения мы вычислятумеем. Задача о величине вклада после снятия денег в концекаждого периода
Вкладчик положилв банк сумму в sum денежных единиц под p процентов за один период времени. Вконце каждого периода вкладчик после начисления процентов снимает со счета A денежных единиц. Определить сумму вклада через n периодов времени.
Решение. Даннаязадача весьма похожа на задачу 1. Рекурсивная программа-функция waste(sum,p,A,n) реализует декомпозицию, исходяиз такого утверждения. Положить сумму sum в банк на nпериодов со снятием в конце каждого периода по Aденежных единиц – это то же самое, что положить данную сумму на тех же условияхна n – 1 период, взять, снова положить на 1 период и затем снять A единиц.
/> (3)
Нетруднопонять, на какую посылку опирается при декомпозиции рекурсивнаяпрограмма-функция waste1(sum,p,A,n),решающая ту же самую задачу о динамике вклада.
/> (4)
Замечание 1.Конечная формула для решения задачи 2 выглядит так:
/>
Выводитсяона следующим образом.
/>
/>
/>
Одно изпреимуществ “формул” waste() и waste1()в том, что они выписываются без всякого вывода и практически без затруднений.
Контрольныепримеры.
/> 
Замечание 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
Пусть 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() или, по крайней мере, попытаться найти её в том или иномсправочнике. Но это требует дополнительных усилий и затрат времени. Да ивыглядит формула достаточно громоздко:
/>Задача о изменяющихся процентных ставках
В банкположена сумма в S денежных единиц. Пусть банк проводитначисления в процентах: в течение n0 периодов — по ставке p0, затемв течение n1 периодов — по ставке p1 и т.д. и, наконец, в течение nk-1 периодов — поставке pk-1. Считая nj (j=0… k-1) натуральными числами, вычислить размервклада через n0+n1+…+nk-1 периодов.
Решение. Рассмотримвекторы длин периодов n и процентных ставок p:
n=(n0,n1,…,nk-1) T, p=(p0,p1,…,pk-1) T.
Даннаязадача является обобщением задачи 1 и при длине вектора n,равной единице, совпадает с ней. Пусть revise(S,p,n) — решение задачи 4. Тогда, в силусказанного, при length(n) =1 имеем
revise(S,p,n) =invest(S,p,n),
и этосоотношение может служить базой рекурсии. Декомпозицию реализуем, исходя изследующих соображений. Пусть length(n)>1 и задача 4 решена для векторов n1 и p1, полученных отбрасыванием последнего компонента соответственноу векторов n и p. Образовавшийсяпри этом новый размер вклада обозначим через sum. Тогдадля получения решения исходной задачи с векторами n и p остается подсчитать сумму, возвращаемую при инвестированиивеличины sum на последние nk-1периодов под pk-1 процентов. Иными словами, необходимоеще раз решить задачу 1, то есть вычислить значение функции invest(sum,pk-1,nk-1).Именно эти соображения и использованы при написании функции revise():
/> 
Рекурсивнаяфункция revise1(S,p,n) построена на способедекомпозиции, вытекающем из таких соображений. Если исходную сумму S инвестировать под p0 процентов на n0 периодов, то с полученной суммой останется решить исходнуюзадачу для векторов n и p c удаленными первыми компонентами:
/> 
Замечание. Принеобходимости можно было бы вывести конечную формулу для решения задачи 4. Выглядитона так:
/>
Контрольныепримеры.
/> Задача о изменяющихся процентных ставках ивеличинах снимаемых денег
Вкладчикположил в сбербанк sum денежных единиц под pk (k=0… n-1) процентов за каждый из n последующих периодов времени. Вконце каждого периода k (k=0… n-1) посленачисления pk процентов он снимает со счета Ak денежных единиц. Иными словами,допускается, вообще говоря, и изменение процентной ставки, и величины денежныхединиц, снимаемых с вклада. Составить программы, отвечающие на следующиевопросы:
Имеет лизадача решение?
Если задачаимеет решение, то какова величина вклада после n периодов?
Если задачане имеет решения, то каков наименьший номер периода, в котором взятиесоответствующей суммы оказалось невозможным?
Решение. Рассмотримвекторы процентных ставок и величин уменьшения вклада:
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
Вариант 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 труда не представляет:
/>
/>
/>
Выводконечной формулы для расчета pv() можно провести так.
type=0.
/>
type=1.
/>
Общий случай.
/>
Контрольныепримеры.
/>
/>
/>Задача о консолидировании платежей
Заемщик присуществующей ставке в p процентов должен внести в банк k последовательных платежей. Первый платеж в a0 денежных единиц необходимо осуществить через t0 периодов, второй платеж в a1единиц — через t1периодов и т.д. и, наконец, k-й платеж в ak-1 единиц — через tk-1 периодов. Все величины tn (n=0… k-1) отсчитываются от момента получения займа.Из-за невозможности внести первый взнос заемщик просит консолидировать егоплатежи, то есть разрешить ему через некоторое время заплатить сразу весь долг a0+a1+…+ak-1.Через какое количество q периодов заемщик обязанрассчитаться, чтобы ничьи интересы не пострадали?
Решение. Будемисходить из того, что современная стоимость потока платежей заемщика исовременная стоимость единовременно вносимой им суммы должны совпадать. Отсюдадля нахождения значения q получаем так называемоеуравнение эквивалентности процентных ставок при дисконтировании:
/> (9)
Параметр q можно непосредственно определить из этой формулы. Пусть a и t — векторы платежей и периодов:
a=(a0,a1,…,ak-1) T, t=(t0,t1,…,tk-1) T. (10)
Будемвычислять q с помощью функции conso(a,t,p) и вспомогательнойрекурсивной функции summa(a,t,p), служащей для нахождения сумм в(9). Значение q=conso(a,t,p) можетоказаться дробным.
Выглядят этифункции так:
/> (11)
/> (12)
Замечание. Величиныtn (n=0… k-1) можно измерять в долях целогопериода. Например, если один период — это год, то tn можно измерять в месяцах, днях, а принеобходимости — и в часах. При этомпроцентная ставка p должна быть скорректированасоответственно на p/12, p/365или p/(365×24).
Контрольныепримеры.
/> 
ПлатежиЗадача о равных платежах в конце каждого периода
Банк выдалзаемщику кредит в S денежных единиц на k периодов с необходимостью выплаты долга равными частями вконце каждого периода. Определить величину разовых выплат, если процентнаяставка банка за один период равна p.
Решение. Этазадача весьма поучительна. Она дает нам возможность на конкретном примерепоговорить об одном необычном способе построения эффективных рекурсивныхалгоритмов решения определенного класса задач, отправляясь от “алгоритмов сбесконечным числом рекурсивных обращений”. Обозначим через pay(S,p,k) решениезадачи. Попробуем обсудить приведенный ниже текст программы вычисления pay(S,p,k):
/> (13)
С точкизрения логики здесь как будто бы все в порядке. Фактически записано, что если k=1, то есть расчет должен произойти в конце первого периода,то выплатить придется всю задолженность сразу, а именно, S×(1+p/100)денежных единиц. В противном случае необходимо поступить так. Произвести расчетв конце первого периода и с оставшейся задолженностью
/> (14)
рассчитыватьсяследующие k-1периодов. Что же в этом рассуждении не работает? Дело в том, что в (14) величинаpay(S,p,k) неизвестна. Именно её по условию задачи и требуетсявычислить. Поэтому попытка реально реализовать счет по программе-функции (13) всегдабудет завершаться аварийно — переполнением стека рекурсивных вызовов. Иными словами, тело рекурсивнойфункции не может содержать ссылку на эту же функцию с тем же самым наборомпараметров! Но не будем отчаиваться. Подставим в теле (13) вместо pay(S,p,k) некоторый параметр X:
/> (15)
Полученнаяфункция payw() при любом фиксированном X уже вполне пригодна для вычислений. Здесь рекурсия четкоорганизована по параметру k. Правда, непонятно, что payw() вычисляет? Но это и знать незачем. Все, что намтребуется — это зафиксировать X не произвольно, а таким образом, чтобы полученное врезультате вычислений по (15) значение для payw(S,p,k) оказалосьравным X. В этом случае фактически будет вычислено pay(S,p,k) в (13), то есть решена исходная задача. Однако методхаотичных проб и ошибок вряд ли здесь может привести к успеху. Необходимонаучиться управлять параметром X, изменяя его значениев правильном направлении. Для этих целей к аргументам функции payw(S,p,k) добавимX:
/> (16)
Получилифункцию paywi(). При любом фиксированном X значения функций (15) и (16) равны. Поэтому поиск решенияисходной задачи окончательно свелся к нахождению в (16) такого X, при котором
g(S,p,k,X) ºpaywi(S,p,k,X) — X=0.
Фиксируемзначения S, p и k. Тогда g(S,p,k,X) — непрерывная на всей числовой осифункция одной переменной. Нам необходимо найти по крайней мере один еёвещественный корень X* (g(S,p,k,X*) º0).Делать это можно по-разному. Например, определить отрезок, на котором g() принимает значения разных знаков, а затем использоватьбыстро сходящийся метод дихотомии (деления отрезка пополам).
Приведеннаяниже рекурсивная программа-функция dicho(f,a,b,e) для произвольной непрерывной наотрезке [a,b] (a0 находит некоторый вещественный корень f(x). Эту функцию и будем использовать далее:
/> (17)
Контрольныйпример. Подсчитать величину равных платежей в конце каждого периода, если заемв 1000 денежных единиц взят под 10 процентов на каждый из 4 периодов.
/> 
Предложенныйспособ решения задачи (10) не является наилучшим. Можно было бы для этих целейпредложить и такие рекурсивные функции:
/> (18)
/> (19)
Функция paywi1() отличается от функции paywi2()количеством рекурсивных вызовов при вычислениях. Порядок их в первом случаеравен k, а во втором — log2(k).
Решениепредложенной задачи может быть осуществлено и по конечной формуле (20). Выводитсяона так. Пусть W=W(S,p,k). Содной стороны, задолженность через k периодов должнабыть полностью погашена, а с другой — её можно подсчитать так:
/>
Приравниваяпоследнее выражение нулю, и разрешая полученное уравнение относительно 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
/>
Намтребуется определить положительный корень многочлена 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():
/>
Вседальнейшие действия должны быть такими же, как и в случае type=0.Задача о количестве периодов для расчета заемщика сбанком
Клиент банкаполучил заем в S денежных единиц при ставке p процентов. В конце каждого периода заемщик долженвозвращать банку по W единиц, за исключением может бытьпоследнего периода, когда его задолженность Z окажетсяменьшей W. В этом случае необходимо возвратить Z единиц. Подсчитать количество периодов, необходимых длярасчета заемщика с банком.
Решение. Организуемрекурсию по величине долга в конце каждого периода. Если R=S×(1+p/100) -W£0,то полностью расплатиться удастся за один период, и условие R£0 можно взять в качествебазы рекурсии. Нетрудно понять, что при R=S долг всегда будет одним и тем же, а при R>S он будет возрастать. Таким образом, при R³Sрассчитаться с долгом вообще не удастся. Пусть R
/> (38)
Разберем ещеодин вариант решения данной задачи. Пусть a=1+p/100. Тогда:
/> - долг через 1период;
/> - долг через2 периода;
… … …
/>
/> -долг через k периодов;
Отсюда,прежде всего, вытекает, что с долгом удастся расплатиться, если S×p/100
/>
Рассмотримрекурсивную функцию number1(S,p,W,k):
/> (39)
с некоторымвспомогательным натуральным аргументом k. Ясно, что приобращении к ней с любыми значениями S, p и W (S×p/100
Контрольныепримеры.
/>
Замечание. Изпредыдущих рассуждений вытекает, что решение задачи 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. Поэтому способность системы банков к кредитованию, вообщеговоря, не связана с их количеством. Но эта способность существенно связана соперативным возвратом отдаваемых в кредит денег, после серии сделок с ними,снова в банки в виде вкладов. Кроме того ясно, как центральный банк путемизменения ставки обязательных резервов может влиять на суммарный объемкредитования. Если процент обязательных резервов растет, то суммарная величинакредитов убывает, если же этот процент уменьшается, то суммарная величинакредитов возрастает. Задача о минимальном количестве банков
Пусть в банкB1 внесен вклад в S денежных единиц. Будем считать, что свободные резервы банкаBk (k=1,2,...,n-1)в результате ряда операций становятся вкладом в банк Bk+1(k=1,2,...,n-1), а нормаобязательных резервов равна p процентов. Определитьминимальное количество n системы банков Bk (k=1,2,...,n),для которых суммарная способность к кредитованию не меньше заданной величины H.
Решение. Здесь,как и в предыдущей задаче, не предполагается, что все банки Bk(k=1,2,...,n) различны. Поэтому фактически речь идет не о минимальномколичестве банков, обеспечивающих кредитование, не меньшее заданной величины H, а о минимальном количестве (оперативных) возвратов в банкиденег, отдаваемых в кредит. Но нам удобней вести речь о количестве банков. Преждевсего, из общей формулы (40) вытекает, что данная задача не всегда имеетрешение. При бесконечной системе банков предельная сумма кредитования равна L(S,p) = (S×100/p)×(1-p/100). Поэтомурешать задачу можно лишь при условии H
/>
Мы будемвычислять n с помощью функций findn()и num():
/>
/>
Декомпозицияв рекурсии для findn(S,p,H) организована по величинамоставшегося неудовлетворенным кредита по мере увеличения числа банков в системе.
Контрольныепримеры.
/>Задача о изменении величины суммарного кредитования
Пусть в банкB1 внесен вклад в S денежных единиц. Будем считать, что свободные резервы банкаBk (k=1,2,...,n-1)в результате ряда операций становятся вкладом в банк Bk+1(k=1,2,...,n-1), а нормаобязательных резервов установлена в p (00 (a¹1)раз, то есть либо увеличилась в a разпри a>1, либо уменьшилась в 1/a раз при 0
Решение. Сразуотметим, что как и в предыдущей задаче не предполагается, что все банки Bk (k=1,2,...,n) различны. Задача, по-видимому, не всегдаимеет решение. Если решение x есть, то как его искать? Напомощь может прийти формула (40). В соответствии с ней имеем:
/>
Сократим обечасти этого соотношения на S×100 и, обозначив правую часть через b:
/>
длянахождения решений задачи получим уравнение:
/> (41)
Последовательнопреобразуем правую часть (41):
/>
/>
/>
/>
/>
/>
Следовательно,если x есть решение задачи, то его следует искать средидействительных корней многочлена g(t)(t=x/100) степени n, где
/> (42)
со следующимвектором коэффициентов:
/> (43)
При этом, посмыслу задачи у многочлена (42) на промежутке (0,1) может быть не более одногокорня t=x/100.
Такимобразом, решение исходной задачи свелось к нахождению для многочлена g(t) cкоэффициентами (43) действительного корня t: 0
Решениеисходной задачи может быть найдено с помощью функции times(n,p,a),обращающейся к следующим рекурсивным функциям: pow(a,n), C(n,m), binom2(n,k) и finroo(v). Ниже приведено краткое описание всех этих функций.
pow(a,n) — быстрое возведениедействительного или комплексного числа a в целуюнеотрицательную степень n. Декомпозиция в рекурсииорганизована с помощью дихотомии — последовательными уменьшениями степени в два раза, то есть представлением a в виде:
/>
C(n,m) — вычисление количества сочетанийиз n элементов по m элементов. Декомпозицияв рекурсии организована в соответствии с известной формулой: />
binom2(n,k) — вычисление последовательностибиномиальных коэффициентов /> со знаком /> Декомпозиция в рекурсииорганизована по величине аргумента s. База рекурсиисоответствует значению s=2.
finroo(v) — нахождение в векторе vпервой из компонент t, удовлетворяющей условию (Im(t) =0) ×(Re(t) Î(0,1)). Если таковыхкомпонент не имеется, то возвращается значение, равное ¥. Декомпозиция в рекурсии организована по значению длиныменяющегося вектора v.
times(n,p,a) — с помощью функций pow(), С() и binom2()находится вектор v коэффициентов (43) многочлена (42). Послеэтого с использованием встроенной функции polyroots(v) отыскиваются корни многочлена (42). При написаниипрограммы-функции times(n,p,a) учтеноутверждение критерия существования решения задачи, сформулированное ниже в виделеммы 1:
/>
/>
/>
/>
/>
Замечание. Посколькувстроенная функция polyroots() находит значения корнейприближенно, то даже при точных коэффициентах многочлена g(t) вместо корня tÎ(0,1) мы можем получить близкий к немукомплексный корень t1 с Re(t1) Î(0,1) и Im(t1) ¹0.Тогда функция times() сообщит об отсутствии решенияисходной задачи. Но это может быть и не так. Поэтому получение такого сообщениятребует более тщательного анализа корней многочлена (42). Например, искатьтребуемый вещественный корень в промежутке (0,1) с заданной степенью точностиможно методом дихотомии. При этом следует исходить из следующего утверждения.
Лемма 1. Длясуществования решения исходной задачи необходима и достаточна положительностьсвободного члена многочлена (42), то есть выполнение условия g(0)>0. Иначе это условие можно записать в виде n>100×bили, по-другому,
/>
Доказательство.Необходимость. Пусть решение x исходной задачисуществует. Тогда, как мы уже отмечали, его следует искать среди действительныхкорней многочлена g(t) (t=x/100 Î (0,1)). Нам понадобится значение g(t) в нуле: g(0) =n-100×b. Пусть t*Î(0,1) — корень g(t). В этом случае
/>
/>
/> (44)
Но при любомt*Î(0,1) справедливонеравенство:
/>
/> (45)
Последнийпереход в (45) сделан с использованием одного замечательного неравенства [13, c.24-27]:
xq — q×x +q -1 > 0 (x > 0, q > 1),
легкоустанавливаемого с помощью методов дифференциального исчисления и являющегосяосновой для доказательства многих классических неравенств таких, например, какосновные неравенства Гельдера и Минковского. Но тогда из (44) следует, что g(0) >0 и необходимость установлена.
Достаточность.Пусть выполнено условие g(0) >0. Подсчитаем значениефункции g(t) в точке 1:
/>
/>
/>
Последнеенеравенство вместе с предположением g(0) >0гарантирует наличие у многочлена g(t)действительного корня t*Î(0,1), а значит и решения x=t*×100исходной задачи. Тем самым установлена достаточность, и лемма полностьюдоказана.
Дополнение 1к задаче 19. Пусть банки Bk (k=1,2,...,n) функционируюттак, как это описано в условиях задачи 19. Можно ли на r процентов (-100
Решение. Заметим,что если r>0, то величина кредитов увеличивается, аесли r
/>
Дополнение 2к задаче 19. Пусть банки Bk (k=1,2,...,n) функционируюттак, как это описано в условиях задачи 19. Определить начальную процентнуюставку p обязательных резервов, если её изменение до p1 процентов привело к изменению суммарной величины кредитовв b раз.
Решение. Согласно(40)
/>
Если считатьp неизвестным, то фактически мы опять имеем задачу 19,в которой требуется лишь заменить p на p1 и a на 1/b. Условие существования решения в данномслучае запишется так:
/>
Завершаярассмотрение предложенного цикла задач, отметим, что большая часть из нихдопускает то или иное естественное обобщение и развитие.
Заключение
Рассмотрениезатронутой в этой работе проблемы сейчас очень актуально, поэтому необходимосоздание эффективных методик решения практических задач именно с помощьюрекурсии, как одного из самых простых, понятных и наглядных методов решениязадач. Реализация же рекурсивных алгоритмов в любой вычислительной средедостаточно очевидна, поэтому составление обучающих программ, реализация их ввиде Web-узла и публикация их в Internetявляется очень полезным делом по вышеизложенным причинам. Продолжая освоениерекурсии в рамках данного или иного направления нелишне помнить словавыдающегося математика и педагога Д. Пойа [12, c.13]: “Решениезадач — практическое искусство,подобное плаванию, катанию на лыжах или игре на фортепиано; научиться емуможно, только подражая хорошим образцам и постоянно практикуясь. … Помните: есливы хотите научиться плавать, то смело входите в воду, а если хотите научитьсярешать задачи, то решайте их! ”. В вопросах освоения рекурсии именно так и нужнопоступать. Только подражая хорошим образцам и постоянно практикуясь, можноосвоить рекурсивный метод решения прикладных задач.
Литература
1.     Симонов А.С. Экономика на уроках математики. М.: Школа-Пресс, 1999.
2.     Борохов Э. Энциклопедия афоризмов (Мысль в слове). М.: изд. АСТ, 1999.
3.     Дорофеев Г.В., Седова Е.А. Процентные вычисления. СПб.: Специальнаялитература, 1997.
4.     Доллан Э.Д., Линдсей Д.Б. Рынок. Макроэкономическая модель. СПб., 1992.
5.     Макконнелл К.Р., Брю С.Л. Экономикс. Т.1,2. М.: Республика, 1993.
6.     Самуэльсон П. Экономика. Т.1,2. М.: Алгон, 1992.
7.     Фишер С. и др. Экономика. М.: Алгон, 1992.
8.     Ланкастер П. Теория матриц. М.: Наука, 1978.
9.     Беллман Р. Введение в теорию матриц. М.: Наука, 1969.
10.   Добровольский Н.М., Есаян А.Р., Пихтильков С. A., Стеценко В.Я. Об одномвычислительном эксперименте. Межвузовский сборник статей. Ч.1-Тула: Изд-во Тул. гос. пед. ун-та, 1999.10 с.
11.   Есаян А.Р. Фракталы и рекурсия. Учеб. пособие для студентов педвузов. — Тула, 1999. -52с.
12.   Пойа Д. Математическое открытие. Решение задач: основные понятия,изучение и преподавание. М.: Наука, 1970.
13.   Беккенбах Э., Беллман Р. Неравенства. М.: Мир, 1965.
14.   Вайскопф Дж. Microsoft FrontPage 2000: учебный курс — СПб.: Питер, 2000.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.