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

Reply via email to