2010-12-15 30 views
1

我從我的信用卡中支取'金額'的預付現金,支付 預付費(以百分比形式給出),促銷價格爲「int '時間'len'' 。我必須每月支付至少「最低」的欠款額。查找現金預付費+促銷匯率的等值利率

我把「金額」放入一個賺取'p'%利息的投資賬戶,並且 也從這個賬戶進行月度支付。

問題:在'len'時間後,我會打破'p'的什麼值?

下面是我如何設置它在數學:

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}] 

數學返回「DSolve :: bvnul:對於一般 解決方案的一些分支機構,在給定的邊界條件導致空的解決方案」, 這實際上是合理的:只有一個'p'值, 產生上述微分方程的解。

如何強迫Mathematica找到這個值?

我試着解決owed [t],然後用owed [t]代入[t],然後求解[len] ==得到[len],但是這產生了類似的 錯誤。運行Reduce on「欠[len] ==有[len]」產生了一些複雜和醜陋的東西 。

+0

到目前爲止,我強迫人們給我更好的答案的計劃並未獲得廣泛的成功;) – barrycarter 2010-12-16 03:30:43

回答

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) 

而這對於欠[T]解決

現在對於有[T]你可以使用:

DSolve[{ 
    have'[t] == p*have[t] - min*12*owed[t], 
    have[len] == owed[len]}, 
{have[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解決。我嘗試了一些東西(不是太多,當然),它抗拒強。

但...給出其餘參數的數值通過任何數值方法瑣碎解決(我猜)

+0

好吧,這裏是你不能在DSolve中放置'have [0] == amount',因爲沒有通用的解決方案。然而,如果你計算一般的解決方案,然後做'有'數量'',你沒事。 – barrycarter 2010-12-16 00:45:12

+0

@barrycarter嗯,我不知道爲什麼它不適用於「所有內部」,只是試圖找到出路... – 2010-12-16 00:55:31

+0

是的,謝謝!我只是想弄清楚我做錯了什麼,看起來就是這樣。 – barrycarter 2010-12-16 00:56:46