Wolfram mathematica 找到现金预付费的等值利率+;促销率
我从信用卡中预支了一笔“金额”的现金,支付一笔 预付“费用”(以百分比形式给出),促销费率为“int” 时间“len”。我必须每月至少支付所欠金额的“最低” 我将“金额”存入一个投资账户,赚取“p%”利息 也从这个帐户每月付款 问:在时间'len'之后,对于'p'的什么值,我会收支平衡 下面是我在Mathematica中设置它的方法:Wolfram mathematica 找到现金预付费的等值利率+;促销率,wolfram-mathematica,financial,differential-equations,Wolfram Mathematica,Financial,Differential Equations,我从信用卡中预支了一笔“金额”的现金,支付一笔 预付“费用”(以百分比形式给出),促销费率为“int” 时间“len”。我必须每月至少支付所欠金额的“最低” 我将“金额”存入一个投资账户,赚取“p%”利息 也从这个帐户每月付款 问:在时间'len'之后,对于'p'的什么值,我会收支平衡 下面是我在Mathematica中设置它的方法: DSolve[{ (* I start off owing amount plus the fee *) owed[0] == amount*(1+fee)
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找到这个值
我试着解决欠下的[t],然后将欠下的[t]替换为have[t],
然后解出[len]==have[len],但这会产生类似的结果
错误。在“欠[len]==有[len]”上运行Reduce产生了一些结果
复杂而丑陋 方程式:
owed'[t] == int owed[t]-min 12 owed[t]
have[0] == amount
如果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}]
这就给出了have[t]的表达式,它满足盈亏平衡条件
要获得p的值,必须使用最后一个等式:
owed'[t] == int owed[t]-min 12 owed[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,最后一个方程似乎不容易求解。我尝试了一些东西(当然不是太多),它抵抗力很强
但是。。。其余参数的给定数值可通过任何数值方法(我猜)轻松求解。方程式:
owed'[t] == int owed[t]-min 12 owed[t]
have[0] == amount
如果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}]
这就给出了have[t]的表达式,它满足盈亏平衡条件
要获得p的值,必须使用最后一个等式:
owed'[t] == int owed[t]-min 12 owed[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,最后一个方程似乎不容易求解。我尝试了一些东西(当然不是太多),它抵抗力很强
但是。。。其余参数的给定数值可以通过任何数值方法(我猜)确定,所以这里的关键是不能将'have[0]==amount'放在DSolve中,因为没有通用解。然而,如果你计算了通解,然后做了‘have[0]==amount’,你就没事了。@barrycarter好吧,我不知道为什么它对“all inside”不起作用,只是想找到一条出路……是的,谢谢!我只是想弄清楚我做错了什么,似乎就是这样。好吧,这里的关键是你不能把'have[0]==amount'放在DSolve里面,因为没有通用的解决方案。然而,如果你计算了通解,然后做了‘have[0]==amount’,你就没事了。@barrycarter好吧,我不知道为什么它对“all inside”不起作用,只是想找到一条出路……是的,谢谢!我只是想弄清楚我做错了什么,似乎就是这样。到目前为止,我强迫人们给我更好的答案的计划没有获得广泛的成功;)到目前为止,我强迫人们给我更好答案的计划还没有获得广泛的成功;)