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

Reply via email to