NB. work on limit from right of a function
    
    lim =: 1 : 'u 1e_11 * 1 + <. 1e11 * y'  NB. Arne Groeneveld gave me this 
idea.
    NB. This version evaluates u at a value greater than y, never at y itself.
    NB. It attempts to approximate the limit from the right of u at y .
    
    % lim 0
 100000000000
    NB. _
    >. lim 0
 1
    NB. 1
    <. lim 0
 0
    NB. 0
    %@^. lim 1
 99999991726.4636
    NB. _
    %@^. lim 0
 _0.0394813165366593
    NB. 0
     ((4%~])* 3 o. 1r2p1 * 1-]) lim 0
 0.159155172017332
    NB. 0.159155
      (_4 0 1&p.%_2 1&p.) lim 2
 4
    NB. 4

--Kip Murray

Sent from my iPad


On Mar 2, 2013, at 10:08 AM, Aai <[email protected]> wrote:

> Different for me:
> 
>   0=0.5^1022+i.5
> 0 0 0 0 0
> 
> and
> 
>   0=0.5^1071+i.5
> 0 0 0 0 1
> 
> 
> I noticed the following
> 
>   0.5^1075
> 0
>   0.5^1074
> 4.94066e_324
> 
> and decided to use i.1076.
> 
> 
> 
> On 02-03-13 16:58, km wrote:
>> Arne, have you considered
>> 
>>     0=0.5^1022+i.5
>>  0 1 1 1 1
>> 
>> --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
> 
> -- 
> 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