I take a cash advance of 'amount' from my credit card, paying an up-front 'fee' (given as a percentage), with a promotional rate 'int' for time 'len'. I must pay at least 'min'% of the owed amount monthly.
I put 'amount' into an investment account earning 'p'% interest, and also make the monthly payments from this account.
Question: for what value of 'p' will I break even after time 'len'?
Here's how I set it up in 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 returns "DSolve::bvnul: For some branches of the general solution, the given boundary conditions lead to an empty solution", which is actually reasonable: there's only one value of 'p' that will yield a solution for the differential equations above.
How do I coerce Mathematica into finding this value?
I tried solving for owed[t], then substituting owed[t] into have[t], and then solving owed[len] == have[len], but this yield a similar error. Running Reduce on "owed[len] == have[len]" yielded something complex and ugly.