1

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

Я поместил «сумму» в инвестиционный счет, заработав «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: Для некоторых отраслей общего решения, заданные граничные условия приводят к пустому раствору», который на самом деле разумно: существует только одно значение «р», которое будет даст решение для дифференциальных уравнений выше.

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

Я попытался решить для причитающегося [т], подставляя причитающийся [т] в есть [т], а затем Решая задолжали [Len] == есть [Len], но этот выход аналогичной ошибки. Running Reduce на «len] == have [len]« дал что-то сложный и уродливый.

+0

До сих пор мой план по принуждению людей к получению лучших ответов не имел большого успеха;) – barrycarter

ответ

2

Уравнение:

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

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

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

дает

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

И это решение для причитающейся [т]

Теперь у [т], вы можете использовать:

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

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

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

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. Я пробовал несколько вещей (не слишком много, конечно), и он сопротивляется сильным.

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

+0

ОК, поэтому суть вот что вы не можете поставить 'have [0] == amount' внутри DSolve, потому что нет общего решения. Однако, если вы вычислите общее решение, а затем сделаете «have [0] == amount», вы в порядке. – barrycarter

+0

@ barrycarter Ну, я не уверен, почему он не работает с «все внутри», просто попытался найти выход ... –

+0

Да, спасибо! Я просто пытался понять, что я сделал не так, и, похоже, это так. – barrycarter