[Date Index]
[Thread Index]
[Author Index]
Re: Amortization Schedule--Global Symbol Value Error
*To*: mathgroup at smc.vnet.net
*Subject*: [mg126590] Re: Amortization Schedule--Global Symbol Value Error
*From*: Tomas Garza <tgarza10 at msn.com>
*Date*: Mon, 21 May 2012 05:59:19 -0400 (EDT)
*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com
*References*: <201205200636.CAA04287@smc.vnet.net>
I didn't check your formulas, and I assume they are almost correct, except that the last two lines give negative values for the balance. The issue with your Mathematica code is very simple: the line before the Manipulate defines t = j/12, but this is not recognized later, when you try to use t as a variable. Delete that line (t = j/12) and use j/12 instead of tin the Manipulate. I.e.,
Manipulate[TableForm[Prepend[Table[{i,Chop@paidInInterest[psv,r,j/12,i],paidInPrincipal[psv,r,j/12,i],remainingBalance[psv,r,j/12,i]},{i,1,j}],{"Month","Interest","Principal","Balance"}]],{{psv,100000,"Loan Amount"},100,200000,100},{{r,0.05,"Interest Rate"},0.01,.1,0.0005},{{j,120,"Number of Months"},{120,240,360}}]
This works nicely - the table is now OK. However, you must check why you get negative values in the last two lines. I'm sure this doesn't come from rounding.
-Tomas
> Date: Sun, 20 May 2012 02:36:13 -0400
> From: sandwaterhand at gmail.com
> Subject: Amortization Schedule--Global Symbol Value Error
> To: mathgroup at smc.vnet.net
>
> Let me begin by saying that I am very new to Mathematica, so any help is appreciated.
>
> I am trying to make an amortization schedule in a table format. The code I have is below:
>
>
> ***
>
> (* psv = Present Value, r = interest rate as a decimal, t = time in years, k = number of payments made *)
> (* mortgage function calculates the monthly mortgage amount *)
> mortgage[psv_, r_, t_] := N[psv*(r/12)/(1 - (1 + r/12)^(-12*t)), 2]
>
> (* amountLeftOwed function calculates the amount left on the loan including interest *)
> amountLeftOwed[psv_, r_, t_, k_] := N[psv*(1 + r/12)^k - mortgage[psv, r, t]*((1 + r/12)^k - 1)/(r/12), 2]
>
> (* paidInInterest function calculates the amount of the mortgage payment that goes towards the interest *)
> paidInInterest[psv_, r_, t_, k_] := N[amountLeftOwed[psv, r, t, k]*r/12, 2]
>
> (* paidInPrincipal function calculates the amount of the mortgage payment that goes towards the principal *)
> paidInPrincipal[psv_, r_, t_, k_] := N[mortgage[psv, r, t] - paidInInterest[psv, r, t, k], 2]
>
> (* remainingBalance function gives the remaining balance after payment has been made *)
> remainingBalance[psv_, r_, t_, k_] := N[amountLeftOwed[psv, r, t, k] - mortgage[psv, r, t], 2]
>
> (* j is the number of months. this converts months to years *)
> t = j/12;
>
> Manipulate[
> TableForm[
> Prepend[
> Table[{i, paidInInterest[psv, r, t, i], paidInPrincipal[psv, r, t, i], remainingBalance[psv, r, t, i]}, {i, 1, j}],
> {"Month", "Interest", "Principal", "Balance"}]],
> {{psv, 100000, "Loan Amount"}, 100, 200000, 100}, {{r, 0.05, "Interest Rate"}, 0.01, .1, 0.0005},
> {{j, 120, "Number of Months"}, {120, 240, 360}}
> ]
>
> ***
>
> Here's the issues I am having:
>
> 1) The variable j is coming up with the "Global symbols that have no assigned value" error despite it being assigned 120, 240, and 360 in the Manipulate[] function. When I add a line like "j = 120", the code "works". The reason for the quotations is explained in number 3 below.
> 2) Despite the N[*, 2] function, the numbers are coming out as scientific notation. Even with the line j = 120, the rounding is not to two places.
> 3) The table should end with the ending balance being zero. When I force the value of j (again, j = 120, 240, or 360), I am getting a negative value for the last two months. Is there a rounding issue related to #2?
>
> Again, very new to Mathematica. I appreciate any help.
>
> Thanks for reading,
>
> Mike
>
Prev by Date:
**Re: Amortization Schedule--Global Symbol Value Error**
Next by Date:
**Re: Amortization Schedule--Global Symbol Value Error**
Previous by thread:
**Amortization Schedule--Global Symbol Value Error**
Next by thread:
**Re: Amortization Schedule--Global Symbol Value Error**
| |