That's pretty good! Thank you, Arne. --Kip Sent from my iPad
On Mar 1, 2013, at 6:45 AM, Aai <[email protected]> wrote: > Here's a conjunction with the choice of left/right approach. > > It's like Raul's approach except it uses a bit more values and it compares > successive values up to a limited number of decimals. > > limit=: 2 :'({~1 i.~(}.=}:))<.&.((10^11)&*) u y v 0.5^i.1076' > > tests: > > ((4%~])* 3 o. 1r2p1 * 1-]) limit + 0 > 0.159155 > (_4 0 1&p.%_2 1&p.) limit + 2 > 4 > (1&o.%]) limit + 0 > 1 > % limit + 0 > _ > % limit - 0 > __ > %@^. limit + 0 > 0 > %@^. limit - 0 > 0 > %@^. limit + 1 > _ > >. limit - 0 > 0 > >. limit + 0 > 1 > > > > > On 28-02-13 22:28, km wrote: >> Here is what I did >> >> NB. right hand limit of a function >> lim =: 1 : 0 >> value =. u y + (2^_44) >> if. value <: - 2^40 do. __ >> elseif. value >: 2^40 do. _ >> elseif. do. value >> end. >> ) >> >> It does "reasonably well" but can be fooled, for example >> >> ] lim 2^40 >> _ >> >> Here it does better >> >> *: lim 1000 >> 1000000 >> dq =: 1 : (':'; 'y %~ (u x+y) - u x') NB. difference quotient >> 2&(^&3 dq)lim 0 NB. derivative of x^3 at 2 is 12 >> 12 >> >> --Kip >> >> Sent from my iPad >> >> >> On Feb 28, 2013, at 7:19 AM, Raul Miller <[email protected]> wrote: >> >>> Here's a model implementation: >>> >>> lim=: (1 :0)("0) >>> tests=. u ((1e_6*1>.|y)*0.5^i.1000)+y >>> tests {~{.I.((1 }. 0&~:) * 2 ~:/\ ])(,2:)(*!.0)2 -/\ tests >>> ) >>> >>> My assumptions are: >>> >>> (1) the limit in question is relatively stable (that my choices for >>> epsilon are adequate) >>> >>> (2) that the result of limit should be a consistent number. >>> >>> Note that (2) means that _ and __ will typically not be returned, >>> since they are inconsistent numbers (but, since they are inconsistent, >>> it's impossible to make an entirely consistent guarantee about their >>> treatment). >>> >>> (1&o.%]) lim 0 >>> 1 >>> % lim 0 >>> 2.67877e306 >>> -@% lim 0 >>> _2.67877e306 >>> >>> For my purposes, these "e306" values are close enough to infinity to >>> be treated as such. >>> >>> Note also that I'm probably being a bit too aggressive with the number >>> of epsilon values I'm using. >>> >>> If you really want _ and __ results, you could use something like this: >>> >>> lim=: (1 :0)("0) >>> tests=. u ((1e_6*1>.|y)*0.5^i.1000)+y >>> 1e_3*1e3* tests {~{.I.((1 }. 0&~:) * 2 ~:/\ ])(,2:)(*!.0)2 -/\ tests >>> ) >>> >>> However, note that this is a heuristic and its ability to force the >>> result to be an inconsistent infinity depends on the stability u (and >>> also depends on the actual limit value). I place less faith in this >>> mechanism than in the ability of the user to recognize that the result >>> should be thought of as infinite (and if the user does not understand >>> what's going on well enough to make that determination it's hard to >>> imagine how this distinction could be useful). >>> >>> FYI, >>> >>> -- >>> Raul >>> >>> On Wed, Feb 27, 2013 at 10:55 PM, km <[email protected]> wrote: >>>> Can you write an adverb lim so that >>>> >>>> sin =: 1&o. >>>> >>>> (sin % ])lim 0 >>>> 1 >>>> >>>> % lim 0 NB. limit is from right >>>> _ >>>> >>>> -@% lim 0 >>>> __ >>>> >>>> >>>> Kip Murray >>>> >>>> Sent from my iPad >>>> >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > > -- > Met vriendelijke groet, > @@i = Arie Groeneveld > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
