Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Delphi: Общие вопросы > Памажите, нужна формула вместо цикла.


Автор: Jiro 02.01.18, 14:07
Итак представьте себе что есть некий банк который каждый день выплачивает процент от суммы депозита,
и каждый день выплаченная сумма прибавляется к депозиту.

Например:
*Депозит 100$
*Ставка банка: 2,5% в сутки
*Сколько бабок будет через 3-ое суток и какой выхлоп ?

через сутки: 102,5$ через двое 105,0625$ через трое 107,6890625$.

можно изобретать велосипед для подсчёта но в юните math есть функция FutureValue которая всю эту работу делает.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    var
    total: extended;
    ....
    total:=FutureValue(2.5%/100%, 3-сутки, 0, 100$, ptEndOfPeriod);
    выхлоп:= total - 100$;


А теперь представьте, что нужно рассчитать сумму депозита, зная: желаемую сумму выхлопа, ставку банка и срок хранения депозита.
Например:

*Желаемый выхлоп = 8$
*Ставка банка: 2,5% в сутки
*Депозит на 3-рое суток
Сколько нужно положить бабла в депозит, что бы через 3 дня выхлоп был 8$ ?

ответ: 104,089$ точность до тысячных вполне годится.

================

По идее всё это можно сделать в цикле используя функцию FutureValue и инкремент по значению депозита, но этожь совсем не круто и долго ...

Ещё можно вывести формулу приблизительного вычисления, вычислить приблизительное значение и от него отталкиваться опятьже в цикле используя FutureValue.

И третий вариант, а он вобще возможен ? Можно ли вычислить всё что нужно по формуле ?
я конечно пытался состряпать такую формулу, но туповат я для такой задачи.
За сим спрашиваю подмогу.

Автор: MBo 02.01.18, 14:46
В школе степенную функцию и логарифмы ещё преподают?
Первое просто

sum = startvalue * (1 + procent / 100)n
так что
dohod = sum - startvalue = startvalue * ((1 + procent / 100)n - 1)
startvalue = dohod / ((1 + procent / 100)n - 1)

Автор: Jiro 02.01.18, 16:55
MBo
первое и не надо, надо только второе.
что такое n - Exp() ?

Автор: MBo 02.01.18, 17:22
Более общее - Power

Автор: Jiro 02.01.18, 19:42
MBo

А ещё одну можете решить ?

Есть депозит,
Есть процентная ставка
Есть ожидаемая прибыль

Нужно вычислить срок до ожидаемой прибыли, при условии, что после каждого вознаграждения из этого вознаграждения изымается некая фиксированная сумма.

Автор: MBo 03.01.18, 05:46
Нужно выписать выражение для первого периода, второго периода, третьего периода и увидеть закономерность, построить общую формулу для n-го периода. Вот начало:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    обозначим
    (1 + procent / 100) = mult
     
    v1 = startvalue * mult - fix
    v2 = (startvalue * mult - fix) * mult - fix =
         startvalue * mult^2 - fix * mult  - fix

Автор: Jiro 04.01.18, 11:17
MBo

Увы не догоняю :( можете написать как это выглядит в виде кода готовой функции ?

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)