Найти эквивалентную процентную ставку для денежного аванса + промо-тариф - PullRequest
1 голос
/ 16 декабря 2010

Я снимаю с моей кредитной карты аванс в сумме «сумма», оплачивая авансовый «сбор» (в процентах), с промо-ставкой «int» на время «len».Я должен платить не менее 'min'% от суммы задолженности ежемесячно.

Я помещаю «сумму» на инвестиционный счет с процентным доходом «p», а также осуществляю ежемесячные платежи с этого счета.

Вопрос: для какого значения 'p' я буду безубыточным даже после времени 'len'?

Вот как я настроил это в Mathematica:

DSolve[{ 

(* I start off owing amount plus the fee *) 
owed[0] == amount*(1+fee), 

(* The amount I owe increases due to credit card interest, 
   but decreases due to monthly payments *) 
owed'[t] == int*owed[t]-min*12*owed[t], 

(* I start off having amount *) 
have[0] == amount, 

(* The amount I have increases due to investment interest, 
   but decreases due to monthly payments *) 
have'[t] == p*have[t]-min*12*owed[t], 

(* After len, I want to break even *) 
owed[len] == have[len] 
}, 
{owed[t], have[t]}, {t}] 

Mathematica возвращает "DSolve :: bvnul: Для некоторых ветвей общего решения данные граничные условия приводят к пустому решению", что на самом деле разумно: есть только одно значение 'p', которое даст решение для дифференциальных уравнений выше.

Как заставить Mathematica найти это значение?

Я пытался решить для owed [t], затем подставил owed [t] в have [t], а затем решил owed [len] == have [len], но это привело к аналогичной ошибке.Выполнение Reduce для «owed [len] == have [len]» привело к чему-то сложному и безобразному.

1 Ответ

2 голосов
/ 16 декабря 2010

Уравнение:

owed'[t] == int owed[t]-min 12 owed[t] 

, если оба int и min являются константами, это просто экспоненциальная функция.С начальным условием

owed[0] == amount*(1 + fee)  

дает

owed[t_] := amount E^((int - 12 min) t) (1 + fee)  

И это решение для задолженности [t]

Теперь для have [t] вы можете использовать:

DSolve[{
  have'[t] == p*have[t] - min*12*owed[t],
  have[len] == owed[len]},
 {have[t]}, {t}]  

Это дает вам выражение для иметь [t], которое соответствует вашему условию безубыточности.

Для получения значения p вы должны использовать последнее уравнение:

 have[0] == amount  

или, после замены, имейте [0] в качестве значения:

(amount E^(-len p) (1 + fee) (12 E^(len p) min + 
   E^(len (int - 12 min)) (-int + p)))/(-int + 12 min + p) == amount 

Это последнее уравнение не так легко решить для p.Я попробовал несколько вещей (не слишком много, конечно), и это сильно сопротивляется.

Но ... заданные числовые значения для остальных параметров тривиально решаются любым численным методом (я полагаю)

...