Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб 1 - Copy

.docx
Скачиваний:
9
Добавлен:
19.01.2023
Размер:
215.88 Кб
Скачать

ФЕДЕРАЛЬНОЕ Государственное АВТОНОМНОЕ образовательное УЧРЕЖДЕНИЕ ВЫСШЕГО образования

«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ

ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»

(НИУ «БелГУ»)

ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ

Кафедра прикладной информатики и информационных технологий

Отчет по лабораторной работе № 1

Анализ хозяйственной деятельности заказчика (определение инвестиционной привлекательности заказчика)

по дисциплине «Автоматизация финансовых вычислений»

студента (ки) заочного отделения

2 курса 12002166 группы

Зубенко Михаила Петровича

Проверил:

Асс. Свиридова И. В.

БЕЛГОРОД, 2022

Цель работы

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

Общая постановка задачи

В первой части лабораторной работы для объекта Вейделевский район необходимо рассчитать чистый дисконтированный доход, индекс доходности, срок окупаемости и внутреннюю норму доходности.

Результаты выполнения работы

Исходные данные приведены на рисунке 1

Рисунок 1 – Исходные данные

Для вычисления необходимых данных была написана программа на языке Java с графическим интерфейсом.

Главное меню программы представлено на рисунке 2

Примеры работы программы представлены на рисунках 3 и 4

Рисунок 2 – Главное меню программы

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

Рисунок 3 – Работа с программой

Рисунок 4 – Работа с программой

Также был создан файл в программе Excel, в который были введены формулы для вычисления тех же показателей. Работа с файлом представлена на рисунках 5 и 6

Рисунок 5 – Работа в программе Excel

Рисунок 6 – Работа в программе Excel

Вывод

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

Приложение 1

Код программы

public class finModel {

//Все переменные указаны в миллионах рублей

double [] cashFlow = new double[]{3.5, 5.37, 7.1, 9.25, 12.16, 15.59}; //Денежный поток

double [] discCashFlow = new double[cashFlow.length]; //Дисконтированный денежный поток

double [] accDiscCashFlow = new double[cashFlow.length + 1]; //Накопленный дисконтированный денежный поток

//E - ставка дисконтирования

//NPV - ЧДД, чистый дисконтироанный доход

//IC - необходимые инвестиции

//CC - необходимая норма прибыли

//PI - индекс доходности

//Per - срок окупаемости в годах

//IRR = внутренняя норма доходности

int length = cashFlow.length;

private double E = 0.135, NPV = 0, PV, CC = 9, IC = 27.641, IRR, PI = 0, Per;

private boolean isNPV = false;

public finModel()

{

//Конструктор по умолчанию. Заполняются массивы дисконтированного и накопленного

//дисконтированного денежных потоков

accDiscCashFlow[0] = -IC; //Заполняем нулевой год накопленных потоков

//Дисконтируем каждый год

for (int i = 0; i < length; i++) discCashFlow[i] = cashFlow[i] / (1 + E);

//Вычитаем для каждой ячейки из первоначальных инвестиций поступивший доход

/*for (int k = 1; k < length; k++)

{

for (short i = 0; i < k; i++) accDiscCashFlow[k] += discCashFlow[i];

accDiscCashFlow[k] = -(IC - accDiscCashFlow[k]);

}*/

}

public finModel(double[] cashFlow, double CC, double IC, double E)

{

this.cashFlow = cashFlow;

this.CC = CC;

this.IC = IC;

this.E = E;

//Конструктор по умолчанию. Заполняются массивы дисконтированного и накопленного

//дисконтированного денежных потоков

//accDiscCashFlow[0] = -IC; //Заполняем нулевой год накопленных потоков

//Дисконтируем каждый год

for (int i = 0; i < length; i++) discCashFlow[i] = cashFlow[i] / (1 + E);

//Вычитаем для каждой ячейки из первоначальных инвестиций поступивший доход

/*for (int k = 1; k < length; k++)

{

for (short i = 0; i < k; i++) accDiscCashFlow[k] += discCashFlow[i];

accDiscCashFlow[k] = -(IC - accDiscCashFlow[k]);

}*/

}

public double calcNPV() //Считаем ЧДД и текущую стоимость проекта

{

NPV = 0;

for (int i = 1; i <= length; i++)

{

NPV += cashFlow[i - 1] / (Math.pow(1 + E, i));

}

PV = NPV;

NPV -= IC;

isNPV = true; //ЧДД уже вычислен

return NPV;

}

public double calcPI() //Считаем индекс доходности на основе ЧДД

{

if (!isNPV) calcNPV(); //Если ЧДД не вычислен, вычисляем

PI = 1 + NPV/IC;

return PI;

}

public double paybackPeriod() //Считаем срок окупаемости проекта

{

double midCashFlow = 0;

int i;

for (i = 0; i < cashFlow.length; i++) midCashFlow += discCashFlow[i];

//System.out.println(midCashFlow);

midCashFlow /= i;

//System.out.println(midCashFlow);

Per = IC/midCashFlow;

return Per;

}

public double getPV() //Считаем и возвращаем текущую стоимость на основе ЧДД

{

if (! isNPV) calcNPV();

return PV;

}

private double calcNPV(double E1) //Считаем ЧДД по нужной ставке дисконтирования для определения ВНД

{

double NPV1 = 0;

for (int i = 1; i <= length; i++)

{

NPV1 += cashFlow[i - 1] / (Math.pow(1 + E1, i));

}

NPV1 -= IC;

return NPV1;

}

public double calcIRR() //Считаем ВНД

{

double i1 = 0, i2;

double temp = 0;

//Перебираем проценты по одному для более точных вычислений ВНД

for (double i = 0; i < 100; i++) {

if (calcNPV(i / 100) > 0) temp = i;

else i1 = temp;

}

i2 = (i1 + 1) / 100;

i1 /= 100;

//System.out.println(i1 + " " + i2 + " " + calcNPV(i1) + " " + calcNPV(i2));

IRR = i1*100 + calcNPV(i1) / (calcNPV(i1) - calcNPV(i2)) * (i2*100 - i1*100);

return IRR;

}

}

Соседние файлы в предмете Автоматизация финансовых вычислений