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