Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

When I evaluate this code:

RSolve[{y[0] == y0, y[t + 1] == (1 - (t + 1)/100) y[t]}, y[t], t]

I get an RSolve::bvnul error. I don't understand why.

Yet, if I run this code, I get the sequence I want.

FoldList[#1 (1 - #2) &, 1, Range[1/100, 1, 1/100]]

The motivation for this problem is a discrete mortality model in which hazard increases in a linear way until age 100. I'd like a closed form solution for the sequence for an arbitrary maximum life span.

share|improve this question

1 Answer 1

Edit

If the corresponding model is to be used for a lifespan L, then RSolve works:

RSolve[{y[0] == y0, y[1 + t] == (1 + 1/L (-1 - t)) y[t]}, y[t], t]
(* {{y[t] -> -(-1 + L) (-L)^-t y0 Pochhammer[2 - L, -1 + t]}} *)

I suspect that RSolve fails because 1 - (t + 1)/100 becomes zero. Although mathematically that shouldn't matter, algorithmically it may.

Original

Is this not the same thing?

Product[(1 - t/100), {t, 1, n}] y0
(* (-(1/100))^n Pochhammer[-99, n] y0 *)

DiscretePlot[(-(1/100))^n Pochhammer[-99, n], {n, 0, 100}, PlotRange -> All]

DiscretePlot

Check:

FoldList[#1 (1 - #2) &, 1, Range[1/100, 1, 1/100]] == 
 Table[(-(1/100))^n Pochhammer[-99, n], {n, 0, 100}]
(* True *)

(One can also substitute an arbitrary lifespan L for 100 in the Product.)

share|improve this answer
    
Case closed. Thanks! Kind of strange how the problem works for an arbitrary lifespan L but does not work when puts in a particular value. And, yes, your Product alternative is at least as good as my FoldList. –  Seth Chandler Apr 16 '13 at 0:38

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.