Реферат Визначення сучасної вартості потоку платежів для складної процентної ставки
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Міністерство освіти України
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
“КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра прикладної математики
РОЗГРАХУНКОВО-ГРАФІЧНА РОБОТА
з дисципліни:
"Програмне забезпечення ЕOМ"
7-ий семестр
на тему:
«Визначення сучасної вартості потоку платежів для складної процентної ставки»
Виконала: Сипливець Ю.О
Група КМ-73 факультет ФПМ
N залікової книжки 7313
Керівник _______________ (Олефір О. С.)
"___" _________ 2010 р.
КИЇВ - 2010
ВВЕДЕНИЕ
В наше время экономика играет важную роль как в жизни отдельных людей так и в жизни целой страны. Ежедневно нужно решать различные вопросы: «Как правильно инвестировать прибыль?», «Как спланировать семейный бюджет?» и другие. Однако сердцем этой науки есть понимание того, как общество разделяет свои ограниченные ресурсы.
В данной работе поднимается вопрос о капиталовложениях, а именно об анализе и планировании некоторого инвестиционного проекта. На крупных предприятиях задача выбора схемы финансирования инвестиционного проекта с необходимостью уходит на высший уровень управления.
Целью является проектирование программного обеспечения, которое бы определяло современную стоимость инвестиционного проекта для сложной процентной ставки. Это делается для того, чтобы проанализировать и выбрать оптимальный инвестиционный план, то есть оптимальную схему финансирования инвестиционного проекта.
Следуя из вышеперечисленных убеждений, можно согласиться, что данный программный продукт является действительно необходимым и достаточно эффективным.
1. ПОСТАНОВКА ЗАДАЧИ
Как нам известно, успешным является тот инвестиционный проект, который имеет наибольшую ценность. В данной работе я буду рассматривать некоторый инвестиционный проект и задачу – вычисление его современной стоимости.
Целью данной работы является разработка программного обеспечения, которое и определяет современную стоимость проекта для сложной процентной ставки на основании денежных потоков проекта.
Далее приведем формулировку самой задачи:
Пусть имеется поток платежей некоторого инвестиционного проекта
Период | 1 | 2 | … | n |
Размер платежа | a1 | a2 | … | an |
Следовательно, состояния a
1
,
a
2
…,
an – сумма платежей
Определить:
1. график интенсивности потока платежей;
2. номинальную процентную ставку;
3. современную стоимость потока платежей;
Математическая модель:
Численное интегрирование методом трапеций и методом парабол.
Выполняемые функции
· введение исходных данных;
· определение ценности инвестиционного проекта;
· вывод результатов
Требования к программными техническим средствам
· операционная система Windows 2000, XP и другие;
· процессор с частотой не меньше 133 МГц;
· оперативна память –не меньше 64 Мб;
· программное обеспечения - BorlandDelphi
7.
2. ОБЗОР ЛИТЕРАТУРЫ
На данный момент задача анализа инвестиционных проектов является актуальной. Все чаще приходиться решать вопрос о правильном капиталовложении денег, с целью получения максимальной прибыли.
Задача нахождения современной стоимости инвестиционного проекта включает в себя задачу численного интегрирования, которую можно решить следующими методами:
1. Интерполяционные методы Ньютона-Котеса
· Формула левых прямоугольников
· Правых прямоугольников
· Средних прямоугольников
· Трапеций
· Парабол (Симпсона)
2. Методы Монте-Карло
3. Сплайновые методы
Для выше поставленной задачи выбраны следующие 2 метода:
1. Метод трапеций;
2. Метод Симпсона;
Задача численного интегрирования состоит в замене исходной подинтегральной функции f(x), для которой трудно или невозможно записать первообразную в аналитике, некоторой аппроксимирующей функцией φ(x). Такой функцией обычно является полином (кусочный полином):
То есть:
,
где – априорная погрешность метода на интервале интегрирования,
а r(x) – априорная погрешность метода на отдельном шаге интегрирования.
В методах Ньютона-Котеса[1] φ(x) – полином различных степеней. Сюда относятся метод прямоугольников, трапеций, Симпсона.
В методе прямоугольников на каждом шаге интегрирования функция аппроксимируется полиномом нулевой степени – отрезком, параллельным оси абсцисс. Суть метода ясна из рис.1.
Аппроксимация в методе трапеций осуществляется полиномом первой степени. Суть метода ясна из рис.2а .
Рис.2: Геометрическая интерпретация методов трапеций (а) и Симпсона (б)
В методе Симпсона подынтегральная функция f(x) заменяется интерполяционным полиномом второй степени P(x) – параболой, проходящей через три узла, например, как показано на рис.2б. ((1) – функция, (2) – полином).
В методах статистических испытаний (методы Монте-Карло) [1] узлы сетки для квадратурного или кубатурного интегрирования выбираются с помощью датчика случайных чисел, ответ носит вероятностный характер. В основном применяются для вычисления кратных интегралов.
В сплайновых методах [1] φ(x) – кусочный полином с условиями связи между отдельными полиномами посредством системы коэффициентов.
Среди методов Ньютона-Котеса, методы правых и левых прямоугольников имеют первый порядок точности, трапеций – второй порядок точности, метод Симпсона – Метод Симпсона имеет четвертый порядок точности с очень малым численным коэффициентом. Однако погрешность метода трапеций в два раза выше, чем у метода средних прямоугольников! Но на практике найти среднее значение на элементарном интервале можно только у функций, заданных аналитически (а не таблично), поэтому использовать метод средних прямоугольников не удастся.
Указанные методы выбраны, исходя из следующих соображений:
· данные методы дают высокий порядок точности (второй и третий соответственно), что для численного интегрирования является очень неплохим приближением
· Методы не требуют выполнения сложных арифметических действий;
· Методы несложны в реализации.
3. МАТЕМАТИЧЕСКИЕ МЕТОДЫ РЕШЕНИЯ ЗАДАЧИ
Теоретические сведения
Допустим, интенсивность некоторого непрерывного денежного потока F задаётся функцией f(t). Это значит, что за каждый конкретный промежуток времени (t, t + dt) данный поток приносит сумму денег, приближённо равную f(t) · dt. Причём чем меньше величина dt, тем точнее приближение. Если сложная годовая процентная ставка равна i, то современная стоимость этого «микроплатежа» составляет
f(t) · dt · (1 + i )–t |
Сумма всех таких «микроплатежей» и будет являться приближённым значением современной стоимости рассматриваемого нами непрерывного потока платежей. Причём, повторюсь, чем меньше величина dt, тем точнее приближение. Значит, для получения точного значения нам нужно устремить dt к нулю. Но сумма величин при стремлении dt к нулю равна интегралу
, |
который и является современной стоимостью потока платежей F с функцией плотности f(t). В этой формуле T — это момент окончания денежного потока, который может равняться бесконечности.
Номинальная ставка непрерывного начисления процентов
Для непрерывного денежного потока номинальная процентная ставка должна соответствовать непрерывной капитализации (непрерывному начислению процентов). Так как сложную процентную ставку i с номинальной процентной ставкой j объединяет соотношение
(1 + i )τ = 1 + j τ,
где τ — это период начисления процентов, то, согласно второму замечательному пределу, при стремлении τ к нулю будет достигаться следующее равенство:
1 + i = e j.
Значит, с использованием номинальной процентной ставки j современная стоимость может быть записана таким образом:
. |
Этот интеграл мы будем численно считать методами трапеций и парабол.
Метод трапеций
Если функцию на каждом из частичных отрезков аппроксимировать прямой, проходящей через конечные значения, то получим метод трапеций.
Площадь трапеции на каждом отрезке:
Погрешность аппроксимации на каждом отрезке:
где
Полная формула трапеций в случае деления всего промежутка интегрирования на отрезки одинаковой длины h:
где
Метод парабол (
метод Симпсона)
Используя три точки отрезка интегрирования, можно заменить подынтегральную функцию параболой. Обычно в качестве таких точек используют концы отрезка и его среднюю точку. В этом случае формула имеет очень простой вид
.
Если разбить интервал интегрирования на 2N равных частей, то имеем
где .
3.2.Описание контрольных примеров
Пример №1
Задан денежный поток некоторого инвестиционного проекта:
Год | Сумма |
0 | -100000 |
0,1 | -50000 |
0,2 | -35000 |
0,3 | -10000 |
0,4 | -5000 |
0,5 | -1000 |
0,6 | 0 |
0,7 | 2000 |
0,8 | 5000 |
0,9 | -5000 |
1 | -500 |
1,1 | 1000 |
1,2 | 2000 |
1,3 | 13000 |
1,4 | 50000 |
1,5 | 100000 |
1,6 | 200000 |
Построить график функции f(t), которая представляет собой интенсивность денежного потока инвестиционного проекта.
Вычислить современную стоимость потока платежей для сложной процентной ставки 15%.
Решение:
Построим функцию интенсивности денежного потока:
Определим номинальную процентную ставку:
j = ln(1 + 0,15) ≈ 0,14, или 14%
Современная стоимость рассматриваемого нами потока платежей равна:
Шаг по времени – постоянный:
t = tk – tk–1=0.1
Поскольку функция задана таблично, то можно посчитать интеграл численно.
Для этого составим таблицу подынтегральной функции:
Год | Сумма(тыс) | Значение подинтегр функции |
0 | -100 | -98,6121 |
0,1 | -50 | -49,3061 |
0,2 | -35 | -34,5142 |
0,3 | -10 | -9,86121 |
0,4 | -5 | -4,93061 |
0,5 | -1 | -0,98612 |
0,6 | 0 | 0 |
0,7 | 2 | 1,972242 |
0,8 | 5 | 4,930605 |
0,9 | -5 | -4,93061 |
1 | -0,5 | -0,49306 |
1,1 | 1 | 0,986121 |
1,2 | 2 | 1,972242 |
1,3 | 13 | 12,81957 |
1,4 | 50 | 49,30605 |
1,5 | 100 | 98,6121 |
1,6 | 200 | 197,2242 |
| | |
Согласно методу трапеций:
где
Подставив наши значения, получим:
I= 11,48831
Согласно методу Симпсона:
Подставив наши значения, получим:
I= 11,94594
Значит современная стоимость рассматриваемого нами потока платежей равна: 11,48831 тыс. (по методу трапеций), и 11,94594тыс. (по методу Симпсона).
Пример №2
Задан денежный поток некоторого инвестиционного проекта:
Год | Платеж(тыс) |
0 | -20 |
0,1 | -5 |
0,2 | 0 |
0,3 | 1 |
0,4 | 3 |
0,5 | 10 |
0,6 | -1 |
0,7 | -2 |
0,8 | 5 |
0,9 | 15 |
1 | 30 |
Построить график функции f(t), которая представляет собой интенсивность денежного потока инвестиционного проекта.
Вычислить современную стоимость потока платежей для сложной процентной ставки 10%.
Решение:
Построим функцию интенсивности денежного потока:
Определим номинальную процентную ставку:
j = ln(1 + 0,10) ≈ 0,095, или 9,5%
Современная стоимость рассматриваемого нами потока платежей равна:
Шаг по времени – постоянный:
t = tk – tk–1=0.1
Поскольку функция задана таблично, то можно посчитать интеграл численно.
Для этого составим таблицу подынтегральной функции:
Год | Платеж(тыс) | Значение подинтегральной функции |
0 | -20 | -19,8103 |
0,1 | -5 | -4,95257 |
0,2 | 0 | 0 |
0,3 | 1 | 0,990514 |
0,4 | 3 | 2,971543 |
0,5 | 10 | 9,905143 |
0,6 | -1 | -0,99051 |
0,7 | -2 | -1,98103 |
0,8 | 5 | 4,952571 |
0,9 | 15 | 14,85771 |
1 | 30 | 29,71543 |
Согласно методу трапеций:
где
Подставив наши значения, получим:
I= 2,134823
Согласно методу Симпсона:
Подставив наши значения, получим:
I= 2,301714
Значит современная стоимость рассматриваемого нами потока платежей равна: 2,134823 (по методу трапеций), и 2,301714 (по методу Симпсона).
Примечание: все вычисления были произведены с помощью Microsoft Exel
3. АРИХИТЕКТАРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Блок схема алгоритма работы проектируемого программного обеспечения представлена на рис. 3.
Рис. 3: Общая структура разрабатываемой программы
Подпроцедура построения платежной матрицы строит платежную матрицу по входным параметрам: период инвестирования, процентная ставка и количество платежей. Правильность введения этих данных проверяется программой.
Подпроцедедура – метод трапеций – вычисляет необходиммый интеграл методом трапеций. входными данными для этой процедуры является платежная матрица. Она заполняется пользователем. Правильность заполнения проверяется программой.
Подпроцедедура – метод Симпсона – вычисляет необходиммый интеграл методом Симпсона. Входными данными для этой процедуры является платежная матрица. Она заполняется пользователем. Правильность заполнения проверяется программой.
Подпроцедедура – вывод результатов – выводит современную стоимость инвестиционного проекта, номинальную ставку и график интенсивности потока платежей. Необходимая информация вычисляется с помощью процедур – построения графика интенсивности, метод Симпсона, метод трапеций.
Подпроцедура – справка о программе – содержит ключевую информацию о программе и автора программы.
Процедура – выход – осуществляет выход с программы.
4. ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ
4.1.Описание входных данных
В качестве входных параметров для поставленной задачи являются следующие данные:
1. Период инвестирования
Данный параметр вводятся с клавиатуры. Значение являются вещественным типом
2. Количество платежей
Данный параметр вводятся с клавиатуры. Сами значения являются целочисленными.
3.Значение сложной процентной ставки –
Этот параметр вводиться с клавиатуры, значения является целочисленным
Исходя из этих параметров формируется матрица А - матрица денежного потока:
Данная матрица содержит числа вещественного типа.
4.2 Описание результатов
Результатом работы программы является:
1. Построение графика интенсивности потока платежей (зависимость размера платежа от времени)
2. Расчет номинальной процентной ставки;
Данная величина является вещественного типа.
3. Расчет современной стоимости инвестиционного проекта.
Данная величина является вещественного типа.
6. СРЕДСТВА УПРАВЛЕНИЯ ПРОГРАММОЙ
При открытии программы пользователь увидит окно вида:
Для решения задачи нужно ввести начальные данные: значение сложной процентной ставки (%), период инвестирования (год), и количество вкладов. После этого следует нажать «Построить таблицу». Например:
Если данные будут введены некорректно, пользователь увидит ошибку:
Если пользователю все же удалось построить таблицу он должен заполнить ее. После чего пользователь может построить график интенсивности потока платежей, нажав «График интенсивности»:
Если данные введены некорректно, то при нажатии любой из кнопок «График интенсивности», «Метод трапеций», или же «Метод Симпсона» пользователь увидит ошибку:
Нажатие «Метод трапеций» приводит к нахождению современной стоимости потока платежей с помощью метода трапеций:
Нажатие «Метод Симпсона» находит современную стоимость потока платежей с помощью метода Симпсона:
Нажатие «О программе» открывает новое окно с краткой информацией о программе и авторе программы:
ЗАКЛЮЧЕНИЕ
В данной расчетной работе были изучены методы численного интегрирования, а также спроектированное программное обеспечение, которое рассчитывает современную стоимость инвестиционного проекта для сложной процентной ставки. Это позволяет анализировать ценность инвестиционных проектов при различных финансовых планах. В результате можно выбрать наилучший финансовый план и следовать ему. Таким образом, программа рассчитана для правильного принятия решения вкладывать ли свой капитал в тот или иной инвестиционный проект или нет.
Следовательно, это программное обеспечение является полезным и при желании его можно усовершенствовать. На его основе можно проводить анализ инвестиционных проектов для разных процентных ставок (сложной и простой), осуществлять полную оценку инвестиционных проектов, находить и анализировать показатели экономической эффективности и многое другое.
ЛИТЕРАТУРА
1. http://solidbase.karelia.ru/edu/meth_calc/
2. Каханер Д., Моулер К., Нэш С. Численные методы и программное обеспечение (пер. с англ.). М.: Мир, 2001, 575 c. ISBN 5-03-003392-0.
3. Самарский А. А., Гулин А. В. Численные методы: Учеб. пособие для вузов. — М.: Наука. Гл. ред. физ-мат. лит., 1989. — 432 с. ISBN 5-02-013996-3.
4. Пискунов Н. С. Дифференциальное и интегральное исчисления для вузов. — 13-е изд. — М.: Наука. Гл. ред. физ-мат. лит., 1985. — 432 с.
П
РИЛОЖЕНИЕ
Текст программы
unit spw2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Buttons, ComCtrls, ShellApi,Math,
Grids;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Button4: TButton;
Button1: TButton;
Label5: TLabel;
Button2: TButton;
StringGrid1: TStringGrid;
Edit3: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Label13: TLabel;
Label14: TLabel;
Button3: TButton;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
Label6: TLabel;
Label7: TLabel;
Button5: TButton;
Chart1: TChart;
Series1: TLineSeries;
Edit2: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Mas: Array[0..255] of double;
implementation
uses Unit2, Unit3;
{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i,b,n :integer;
x,a,h :double;
begin
a:=0; {начало интервала}
b:=StrToInt(Form1.Edit3.Text); {конец интервала}
n:=StrToInt(Form1.Edit4.Text); {количество разбиений}
h:=(b-a)/(n-1);
Form1.StringGrid1.ColCount:=n;
for i:=0 to n-1 do begin
Form1.StringGrid1.Cells[i,0]:=FloatToStr(a);
a:=a+h; end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,b,n :integer;
x,a,h, stavka,mn, integral :double;
mas1: array[0..255] of real;
begin
a:=0; {начало интервала}
b:=StrToInt(Form1.Edit3.Text); {конец интервала}
n:=StrToInt(Form1.Edit4.Text); {количество разбиений}
h:=(b-a)/(n-1);
for i:=0 to n-1 do begin
Form1.StringGrid1.Cells[i,0]:=FloatToStr(a);
a:=a+h; end;
Stavka:=100*ln(1+StrToInt(Form1.Edit2.TEXT)/100);
Form1.Edit7.Text:=FloatToStr(Stavka);
mn:=exp(-stavka*h);
for i:=0 to n-1 do begin
mas[i]:=StrToFloat(StringGrid1.Cells[i,1]);
end;
for i:=0 to n-1 do begin
mas1[i]:=mn*StrToFloat(StringGrid1.Cells[i,1]);
end;
Integral:=0;
For i:=0 to n-1 do begin
if (i=0)or(i=n-1) then
begin
Integral:=Integral+mas1[i];
end;
if i=1 then
begin
Integral:=Integral+4*mas1[i];
end
else
begin
Integral:=Integral+2*mas1[i];
end;
end;
Integral:=((b)/6*(n-1))*Integral;
Edit8.Text:=FloatToStr(Integral);
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,b,n :integer;
x,a,h, stavka,mn, integral :double;
mas1: array[0..255] of real;
begin
a:=0; {начало интервала}
b:=StrToInt(Form1.Edit3.Text); {конец интервала}
n:=StrToInt(Form1.Edit4.Text); {количество разбиений}
h:=(b-a)/(n-1);
for i:=0 to n-1 do begin
Form1.StringGrid1.Cells[i,0]:=FloatToStr(a);
a:=a+h; end;
Stavka:=100*ln(1+StrToInt(Form1.Edit2.TEXT)/100);
Form1.Edit7.Text:=FloatToStr(Stavka);
mn:=exp(-stavka*h);
for i:=0 to n-1 do begin
mas[i]:=StrToFloat(StringGrid1.Cells[i,1]);
end;
for i:=0 to n-1 do begin
mas1[i]:=mn*StrToFloat(StringGrid1.Cells[i,1]);
end;
Integral:=0;
For i:=0 to n-1 do begin
if (i=0)or(i=n-1) then
begin
Integral:=Integral+mas1[i];
end
else
begin
Integral:=Integral+2*mas1[i];
end;
end;
Integral:=((b)/2*(n-1))*Integral;
Edit8.Text:=FloatToStr(Integral);
end;
procedure TForm1.Button4Click(Sender: TObject);
var n,i,b: integer;
h,a: real;
begin
Series1.Clear;
a:=0; {начало интервала}
b:=StrToInt(Form1.Edit3.Text);
n:=StrToInt(Form1.Edit4.Text);
h:=(b-a)/(n-1);
for i:=0 to n-1 do begin
mas[i]:=StrToFloat(StringGrid1.Cells[i,1]);
Series1.AddXY(a,mas[i]);
a:=a+h;
end;
end;
end.