       Re: TimeValue around NDSolve

• To: mathgroup at smc.vnet.net
• Subject: [mg127754] Re: TimeValue around NDSolve
• From: Bob Hanlon <hanlonr357 at gmail.com>
• Date: Sat, 18 Aug 2012 20:36:33 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• Delivered-to: l-mathgroup@wolfram.com
• Delivered-to: mathgroup-newout@smc.vnet.net
• Delivered-to: mathgroup-newsend@smc.vnet.net
• References: <20120818074423.BC2F66845@smc.vnet.net>

```age = 65;

eqn1 = y'[t] == 47/1000*y[t] - 5300;

sol1 = y[t] /. NDSolve[{eqn1, y[age] == 100000}, y[t], {t, age, 110}][];

data = Table[{t, sol1}, {t, age, 85}];

Plot[sol1, {t, age, 85},
Epilog -> {Red, AbsolutePointSize, Point[data]}]

However, this can be soved exactly using DSolve.

sol2[t_] = Simplify[y[t] /. DSolve[{eqn1, y[age] == 100000}, y[t], t][]]

100000/47 (53 - 6 E^((47 (-65 + t))/1000))

Plot[sol2[t], {t, age, 85},
Epilog -> {Red, AbsolutePointSize, Point[data]}]

In TimeValue you have fixed the time value at zero. Note that for
TimeValue[s, i, 0] this is independent of the intest rate and as you
observed there is no change.

TimeValue[s, i, t]

(1 + i)^t s

TimeValue[s, i, 0]

s

Presumably you want a time slider in addition to the interest rate slider.

Manipulate[sol3[t_] := TimeValue[sol2[t], discountRate/100, t2];
Column[{
Grid[
Partition[
Partition[
Table[{t, NumberForm[sol3[t] // N, {8, 2}]},
{t, age, 85}],
7] // Transpose // Flatten,
6],
Frame -> All],
Plot[sol3[t], {t, age, 85},
PlotRange -> {75000, 200000},
ImageSize -> 288]
}],
{t2, 0, 20, 1,
Appearance -> {"Labeled"}},
{{discountRate, 1.6, "Discount Rate"}, .8, 3, .1, Appearance -> {"Labeled"}}]

Bob Hanlon

On Sat, Aug 18, 2012 at 3:44 AM, Joe <design at rcn.com> wrote:
> (*  #1  This expression works.   I am trying to get the Present Value using a variable discountRate for each value in this table. *)
> age = 65;
> eqn1 = y'[t] == 4.7/100 *y[t] - 5300;
> sol1 = y[t] /. NDSolve[{eqn1, y[age] == 100000}, y[t], {t, age, 110}];
> Table[sol1, {t, age, 85}]
>
> (*  #2  This attempt fails  *)
> Manipulate[
>  age = 65;
>  eqn1 = y'[t] == 4.7/100 *y[t] - 5300;
>  sol2 = TimeValue[y[t] /. { NDSolve[{eqn1, y[age] == 100000}, y[t], {t, age, 110}]}, discountRate/100, 0];
>  Table[sol2, {t, age, 85}],
>   {{discountRate, 1.6, "Discount Rate"}, .8, 3, .1,Appearance -> {"Labeled", Tiny}}
> ]
>
> (*  #3  In the complete applet, this method calculates the PV correctly on opening but does not respond to the discountRate slider and eventually causes an error *)
> Manipulate[
>  age = 65;
>  eqn1 = y'[t] == 4.7/100 *y[t] - 5300;
>  sol2 = y[t] /. NDSolve[{eqn1, y[age] == 100000}, y[t], {t, age, 110}];
>  Table[TimeValue[sol2, discountRate/100, 0], {t, age, 85}],
>    {{discountRate, 1.6, "Discount Rate"}, .8, 3, .1, Appearance -> {"Labeled", Tiny}}
> ]
>
> I hope this is a better description of the problem than I provided several days ago.
>
> Joe Rimback
> design at rcn.com
> Gaithersburg, MD
>

```

• Prev by Date: Re: NIntegrate and replacements
• Next by Date: Re: Using a huge list of random numbers from random.org
• Previous by thread: TimeValue around NDSolve
• Next by thread: TemplateBox (was: compact notation for NonCommutativeMultiply that