Wolfram 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)

我从信用卡中预支了一笔“金额”的现金,支付一笔 预付“费用”(以百分比形式给出),促销费率为“int” 时间“len”。我必须每月至少支付所欠金额的“最低”

我将“金额”存入一个投资账户,赚取“p%”利息 也从这个帐户每月付款

问:在时间'len'之后,对于'p'的什么值,我会收支平衡

下面是我在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找到这个值

我试着解决欠下的[t],然后将欠下的[t]替换为have[t], 然后解出[len]==have[len],但这会产生类似的结果 错误。在“欠[len]==有[len]”上运行Reduce产生了一些结果 复杂而丑陋

方程式:

owed'[t] == int owed[t]-min 12 owed[t] 
 have[0] == amount  
如果intmin都是常数,则这只是一个指数函数。在初始条件下

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  
如果intmin都是常数,则这只是一个指数函数。在初始条件下

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”不起作用,只是想找到一条出路……是的,谢谢!我只是想弄清楚我做错了什么,似乎就是这样。到目前为止,我强迫人们给我更好的答案的计划没有获得广泛的成功;)到目前为止,我强迫人们给我更好答案的计划还没有获得广泛的成功;)