[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*To*: mathematica@xxxxxxxxx*Subject*: Re: [srfi-70] Limit*From*: Aubrey Jaffer <agj@xxxxxxxxxxxx>*Date*: Wed, 15 Jun 2005 15:08:17 -0400 (EDT)*Cc*: srfi-70@xxxxxxxxxxxxxxxxx*Delivered-to*: srfi-70@xxxxxxxxxxxxxxxxx*In-reply-to*: <20050615042546.24839136@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> (mathematica@xxxxxxxxx)*References*: <20050615042546.24839136@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>

| Date: Wed, 15 Jun 2005 12:25:24 +0800 | From: "Chongkai Zhu" <mathematica@xxxxxxxxx> | | ======= At 2005-06-14, 03:33:33 Aubrey Jaffer wrote: ======= | >The new limit procedure works better than I had expected; even | >handling a nasty example from an old Macsyma manual (see appended | >examples). Arguments that limits are too esoteric or new | >counterexamples may yet scuttle them from srfi-70. | > | | A counterexample: | | > (limit (lambda (x) (exp (expt x -2))) 0.1 0.2) | +1/0 | > (exp (expt 0.1 -2)) | 2.6881171418161084e+043 | > (limit (lambda (x) (exp (expt x -2))) 0.1 0.1000001) | +1/0 | > (limit (lambda (x) (exp (expt x -2))) 0.1 0.1000000001) | +1/0 The x2 value in your example is too large; testing the region between 0.1125 and 0.2. Choosing a smaller x2 gives the expected result: > (limit (lambda (x) (exp (expt x -2))) .1 1e-12) 26.881171418152036e42 | As I understand the problem, a 'limit that treats the procedure as | a "black box" is unsolvable. Extrapolation is a technique used in differential equation solvers and elsewhere. Functions that are "continuously differentiable" can be approximated by (polynomial) Taylor series. So extrapolating these functions by polynomials will work for small enough x2. | Even if you fix this particular counterexample, the new 'limit will | have other counterexamples. The LIMIT procedure needs no modification to work on your example. But the documentation should express the constraint on x2 being smaller than any "feature size" of the function near x1. Can anyone suggest how to word this? | Something similar to the halting-problem. The fundamental limitations to this technique are reached when the truncation error of the number representation becomes comparable to the calculated differences. But the same is true of `/' and some transcendental functions. | The additional argument k itself shows that the 'limit seems | un-Scheme-ish. Could you tell another Scheme procedrue (either | from R?RS or some other SRFI) that has a similar additional | argument? NUMBER->STRING and STRING->NUMBER in R5RS: -- procedure: number->string z -- procedure: number->string z radix RADIX must be an exact integer, either 2, 8, 10, or 16. If omitted, RADIX defaults to 10. ... -- procedure: string->number string -- procedure: string->number string radix ... RADIX must be an exact integer, either 2, 8, 10, or 16... If RADIX is not supplied, then the default radix is 10. RATIONALIZE in R3RS: - procedure: rationalize x y - procedure: rationalize x ... With two arguments, `rationalize' produces the rational number with smallest denominator differing from X by no more than Y. With one argument, `rationalize' produces the best rational approximation to X, preserving all of the precision in its representation. http://srfi.schemers.org/srfi-27/srfi-27.html (random-source-make-reals s) -> rand (random-source-make-reals s unit) -> rand ... In case unit is absent it defaults to a reasonably small value (related to the width of the mantissa of an efficient number format). | | For Computer Algebra Systems, procedures such as 'limit are only | supposed to "do right" for daily inputs. But Scheme is requested | to be "well-defined" "unambiguous, aesthetically appealing, and | consistent specications". Copying something from CASs into Scheme | is is both overly ambitious and unnecessary. SRFI-70 LIMIT is an original numerical algorithm. Although a CAS was used to derive the extrapolation formulas, LIMIT does not use symbolic algebra.

**References**:**Re: Re: [srfi-70] Limit***From:*Chongkai Zhu

- Prev by Date:
**Revision of SRFI 70 available** - Next by Date:
**Re: string->number** - Previous by thread:
**Re: Re: [srfi-70] Limit** - Next by thread:
**Re: infinities reformulated [was Re: My ideas about infinity in Scheme (revised)]** - Index(es):