I think you are right Justin, thanks.
On 2 oct, 19:08, "Justin C. Walker" <[EMAIL PROTECTED]> wrote:
> On Oct 2, 2008, at 09:35 , Janzo wrote:
>
>
>
>
>
> > Hi guys I have a problem with this recursive function, I am getting a
> > infinite loop.
>
> > The thing is that it is working fine for x(h), x(2*h) but not for any
> > upper value.
>
> > Any suggestions? Thanks a lot.
>
> > var('h,t')
> > h = 0.1
> > f = exp(t)*cos(t) - exp(t)*sin(t) #la ecuacion diferencial
>
> > def x(n):
> > if n == 0:
> > return 1 #punto conocido
> > else:
> > return (x(n-h) + h*f(n-h)) #funcion de Euler
>
> > for i in range(10):
> > print x(i*h)
>
> My guess is that your termination condition isn't going to work: you
> are using a real (ok, "float") value as an argument, and checking to
> see if that value is zero. The problem is that "zero" for floating
> point is notoriously hard to detect.
>
> "h=0.1" is "inexact", and therefore, so will be "i*h", and so on.
> That's why "n == 0" doesn't work for you.
>
> David's suggestion (h=1/10) does work because the results are "exact".
>
> HTH
>
> Justin
>
> --
> Justin C. Walker, Curmudgeon-At-Large
> Director
> Institute for the Enhancement of the Director's Income
> --------
> "Weaseling out of things is what separates us from the animals.
> Well, except the weasel."
> - Homer J Simpson
> --------
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---