I think that's it! Fantastic, thank you. I'm not getting any stack overflows at all with this method :) even for much longer time periods. Alistair
----- Original Message ---- From: R.E. Boss <[EMAIL PROTECTED]> To: Programming forum <[email protected]> Sent: Tuesday, 11 September, 2007 1:47:51 PM Subject: RE: [Jprogramming] stack overflow IMO, your V is defined by: V=: 3 : 0 if.y=0 do. ((b$~+/S<:k);(b$~16,~+/S>k)"0) 0 else. (>@:{.(V_ltk;V_gtk)>@:{:)@:V@:<: end. ) But this is equivalent to V1=: 3 : 0 (>@:{.(V_ltk;V_gtk)>@:{:)^:y ((b$~+/S<:k);(b$~16,~+/S>k)"0)0 ) as is shown by: (V 1000)-:(>@:{.(V_ltk;V_gtk)>@:{:)^:1000 ((b$~+/S<:k);(b$~16,~+/S>k)"0)0 1 (V 2000)-:(>@:{.(V_ltk;V_gtk)>@:{:)^:2000 ((b$~+/S<:k);(b$~16,~+/S>k)"0)0 1 ts'V 2000' 0.28364355 587648 ts'(>@:{.(V_ltk;V_gtk)>@:{:)^:2000 ((b$~+/S<:k);(b$~16,~+/S>k)"0)0' 0.2691088 57280 a little faster, but look at higher values of y: ts'(>@:{.(V_ltk;V_gtk)>@:{:)^:3000 ((b$~+/S<:k);(b$~16,~+/S>k)"0)0' 0.40596979 57280 ts'V 3000' |stack error: V | V 3000 Hope this helps. R.E. Boss > -----Oorspronkelijk bericht----- > Van: [EMAIL PROTECTED] [mailto:programming- > [EMAIL PROTECTED] Namens Alistair Tucker > Verzonden: dinsdag 11 september 2007 14:19 > Aan: Programming forum > Onderwerp: Re: [Jprogramming] stack overflow > > Yes that's right, the argument for V is the iteration count. > So V 2496 translates to about 1.4 years. > The step size dt *is* very small to satisfy convergence criteria (actually > it maybe should be even smaller). > I could have a larger dt if I were to implement the finite difference > scheme implicitly rather than explicitly. > But that's quite a bit more work which I'd like to avoid if possible! > So if there's some way to get around this limitation in J, I'd be very > pleased to hear it... > Alistair > > > ----- Original Message ---- > From: Devon McCormick <[EMAIL PROTECTED]> > To: Programming forum <[email protected]> > Sent: Tuesday, 11 September, 2007 12:36:49 PM > Subject: Re: [Jprogramming] stack overflow > > I see that it looks like an iteration count. It fails for me thusly: > > 6!:2 'rr=. V 2496' > 0.50126902 > 6!:2 'rr=. V 2497' > |stack error: Gamma > | rr=. V 2497 > > > On 9/11/07, Devon McCormick <[EMAIL PROTECTED]> wrote: > > > > What does an argument to "V" look like? > > > > On 9/11/07, Alistair Tucker <[EMAIL PROTECTED] > wrote: > > > > > > Hi > > > I'm a little disconcerted to find that I'm getting stack overflows for > > > more than two thousand iterations of my recursive function. > > > This is a problem. As it stands, my program (below) is unable to > price > > > a convertible bond with more than about a year to maturity. > > > Is there some way round this? Perhaps I should be implementing the > > > iteration in some other way? > > > Alistair > > > > > > NAS=: 100 > > > dS=: 2 > > > S=: dS*i.NAS > > > k=: 135 > > > r=: 0.05 > > > b=: 113.22 > > > dL=: %365 > > > sigma=: 0.4 > > > dt=: 0.9%*:sigma*NAS > > > > > > Sgtk=: S#~S>k > > > Sltk=: S#~S<:k > > > > > > Delta=: (2*dS)%~2&}.-_2&}. > > > Gamma=: (*:dS)%~2&}.+_2&}.-2*}.@:}: > > > dV_dL=: dL%~}."_1-}:"_1 > > > > > > negTheta_ltk=: ([:-r*{.@:[),(((r*}.Sltk)*Delta)+( 0.5**:sigma* > > > }.Sltk)*Gamma)@:([,{.@:{.@:])-r*}.@:[ > > > > > > step_gtk=: ((}:@:]+dt*(((r*}:Sgtk)*Delta)+(0.5**:sigma* > > > }:Sgtk)*Gamma)@:({:@:[,])-r*}:@:])(}:"_1@:]))+(dt*dV_dL@:}:@:]) > > > > > > V_ltk=: Sltk>.[+dt*negTheta_ltk > > > V_gtk=: (Sgtk>.b,.~],({.-~2*{:)@:(_2&{.))@:step_gtk > > > > > > Vrec=: (>@:{.(V_ltk;V_gtk)>@:{:)@:V@:<: > > > V=: Vrec`((b$~+/S<:k);(b$~16,~+/S>k)"0)@.(0=]) > > > > > > > > > > > > > > > > > > > > > ___________________________________________________________ > > > Want ideas for reducing your carbon footprint? Visit Yahoo! For Good > > > http://uk.promotions.yahoo.com/forgood/environment.html > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > > > > > > -- > > Devon McCormick, CFA > > ^me^ at acm. > > org is my > > preferred e-mail > > > > > -- > Devon McCormick, CFA > ^me^ at acm. > org is my > preferred e-mail > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > > > ___________________________________________________________ > Yahoo! Answers - Got a question? Someone out there knows the answer. Try > it > now. > http://uk.answers.yahoo.com/ > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ___________________________________________________________ Want ideas for reducing your carbon footprint? Visit Yahoo! For Good http://uk.promotions.yahoo.com/forgood/environment.html ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
