|
|
|
| |
Главная С++ (часть 2) Расчет суммы вложения, обеспечивающей заданный аннуитет
Расчет суммы вложения, обеспечивающей заданный аннуитет |
Другой распространенный расчет — определение суммы, которую нужно вложить, чтобы выплачивался заданный с учетом регулярных расходов аннуитет. Например, вы можете решить, что при выходе на пенсию вам нужно 5000 долларов ежемесячно в течение 20 лет. Вопрос состоит в том, сколько вам нужно вложить, чтобы гарантировать необходимые регулярные выплаты-Поможет найти ответ следующая формула. Initial Investment = ((regWD * wdPerYear) / rateOfRet * *(!-(!/ (rateOfRet / WdPerYear) + O^PerYear* numYears)), где rateOfRet содержит процентную ставку, regWD — планируемая сумма регулярных расходов, wdPerYear — число расходуемых сумм (regWD) в год и numYears — продолжительность регулярных выплат (the length of annuity) в годах. g программе, приведенной в листинге 6.4, функция annuity () вычисляет размер первоначальной инвестиции, требуемый для получения необходимого аннуитета. Ей передаются величина регулярных расходов, процентная ставка, необходимая продолжительность выплат и количество начислений процентов в год. Функция возвращает минимальный размер вложения, достаточный для получения регулярно выплачиваемого аннуитета заданной величины. ^Листинг 6.4. Расчет размера начальной инвестиции для получения заданного МйУитета ------------------'¦-----------------------1--------------------- finclude <iostream> finclude <cmath> finclude <iomanip> finclude <locale> using namespace std; // Вычисляет размер первоначальной инвестиции, необходимой для // получения заданных регулярных выплат. Другими словами, находит // начальную сумму, обеспечивающую заданные регулярные // расходы в течение определенного периода времени, double annuity(double regWD, double rateOfRet, int numYears, int numPerYear) { double b, e; double tl, t2; rateOfRet /= 100.0; // преобразует проценты в дробь tl = (regWD * numPerYear) / raceOfRet; b = (1 + rateOfRet/numPerYear); e = numPerYear * numYears; t2 = l - (l / pow(b, e)); return tl * t2; } int mainO { double wd, r; int y, wpy; // Присваивает locale значение english. // Откорректируйте, если необходимо, язык/регион. cout.imbue(locale("english")); cout « "Enter desired withdrawal: ."; cin » wd; cout « "Enter rate of return (as a percentage): "; cin » r; cout « "Enter number years: "; cin » y; cout « "Enter number of withdrawals per year: "; cin » wpy; cout « "\nlnitial investment required: " « fixed « setprecision(2) « annuity (wd, r, y, wpy) « endl; return 0; } Далее приведен пример вывода программы. Enter desired withdrawal: 5000 Enter rate of return (as a percentage): 6 Enter number of years: 20 Enter number of withdrawals per year: 12 Initial investment required: 697,903.86 расчет максимального размера аннуитета для заданной суммы вложения ?ще один расчет аннуитета позволяет найти максимально возможный размер выплат (на покрытие регулярных расходов) в течение определенного периода при заданном размере вложения. Например, если у вас есть 500 ООО долларов на пенсионном счете, сколько вы можете брать ежемесячно в течение 20 лет с учетом процентной ставки 6%? Приведенная далее формула вычисляет максимально допустимую величину регулярных расходов. Maximum Withdrawal = principal * (((rateOfRet / wdPerYear)/ /(-1 + ((rateOfRet / WdPerYear) + l)vd*rYear* numYcars))+ +(rateOfRet * wdPerYear)), ще rateOfRet задает процентную ставку, principal содержит величину начального вложения, wdPerYear определяет число выплат в год, numYears — продолжительность получения аннуитета в годах. функция maxwdo, приведенная в листинге 6.5, вычисляет максимальный размер регулярных расходов в течение указанного периода времени при заданной процентной ставке. Ей передаются величина инвестиции, процентная ставка, продолжительность получения аннуитета в годах и количество . начислений процентов в год. Функция возвращает величину максимально возможного аннуитета.
|
|
|
|
|