[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | Mathematics at DEC |
|
Moderator: | RUSURE::EDP |
|
Created: | Mon Feb 03 1986 |
Last Modified: | Fri Jun 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 2083 |
Total number of notes: | 14613 |
1570.0. "Repeated composition." by CADSYS::COOPER (Topher Cooper) Fri Feb 21 1992 14:26
From: [email protected] (David Wilson x5694 4-1600)
Newsgroups: sci.math
Subject: f o f = exp
Message-ID: <[email protected]>
Date: 19 Feb 92 19:37:10 GMT
Organization: Computervision, A Prime Computer Company, Bedford, MA, USA
Lines: 226
If you are interested in iterated functions from an experimental
standpoint, here is a quick primer. I do not keep junk around to
repost, so save it while its hot.
---------------------------------------------------------
Let f be a function from R to R. Let [f^n] denote f composed on
itself n times. For n in Z+, [f^n] can be recursively defined as
follows:
[f^1] = f
f o [f^a] = [f^(a+1)]
From P1 and P2, we can conclude the following for n in Z+:
[f^a] o [f^b] = [f^(a+b)]
[[f^a]^b] = [f^(ab)]
The natural extension of [f^n] to n in Z is:
[f^0] = I (I = identity function)
[f^(-n)] = [f^n]^-1 (f^-1 = inverse of f)
Extending to n in Q:
[[f^(a/b)]^b] = [f^a]
The natural extension to n in R would be:
[f^n](x) = lim [f^m](x)
m->n
All this, of course, is a gross oversimplification that ignores
extremely messy existence, uniqueness, and domain issues.
---------------------------------------------------------
For some functions [f^n] for n in R seems to have a "natural"
definition. This definition can be had by finding, by inspection,
a formula for [f^n] with n in Z+ and extending the formula
"naturally" to n in R. For instance:
f(x) [f^n](x)
x + a x + na
ax + b (a != 1) (a^n)x + ((a^n-1)/(a-1))b
bx^a (a != 1) b^((a^n-1)/(a-1))x^(a^n)
We will call such a formula the "natural formula" for [f^n].
---------------------------------------------------------
Suppose now, that we have an f for which we cannot find a natural
formula for [f^n]. Nevertheless, suppose we can find g such that
lim [g^-k][f^k]
k->inf
exists (on some subdomain of R). It then turns out that
[f^n] = lim [f^-k][g^n][f^k].
k->inf
modulo domain difficulties.
---------------------------------------------------------
For example, suppose we wish to find [f^n], where f(x) = x^2+1.
Iterating f does not seem to yield a natural formula:
[f^1](x) = x^2 + 1
[f^2](x) = x^4 + 2x^2 + 2
[f^3](x) = x^8 + 4x^6 + 8x^4 + 8x^2 + 5
...
However, g(x) = x^2 has the natural formula [g^n](x) = x^(2^n).
Also,
lim [g^-k][f^k]
k->inf
exists on the domain R (exercise for the reader). We therefore
have
[f^n] = lim [f^-k][g^n][f^k]
k->inf
Still letting f(x) = x^2+1, we wish to find [f^1/2](0) to about
20 digits ([f^1/2] composed on itself yields f):
1. Choose integer k large enough that (f o [f^k])(0) =
(g o [g^k])(0) to within relative accuracy 10e-20.
In this case, k = 8.
2. Compute [f^k](0), i.e., iterate f 8 times on 0, giving
about 4.4127887745906175987e22.
3. Perform [g^1/2] on the result. The natural definition
of [g^1/2](x) is x^sqrt(2). This gives about
1.0579385394282632787e32.
4. Perform [f^-k] on the result, i.e., perform [f^-1] k
times on the result, where [f^-1](x) = sqrt(x-1). This
gives 6.4209450439082838148e-1.
Hence, [f^1/2](0) = 6.4209450439082838148e-1 to about 20 digits.
It turns out that [f^n](x), where f(x) = x^2+1, is very fast to
compute for reasonable n and x. The following is a K&R C routine
to do the job. (It will, however, give sqrt domain errors when
[f^n](x) does not exist.)
---------------------------------------------------------
#include <math.h>
/* g(x) = x^2 */
double g(x) double x; { return x*x; }
/* g(x) = x^2 iterated n times by the natural formula [g^n] = x^(2^n) */
double g_iterated(n, x) double n, x;
{ return exp(log(x)*exp(log(2.0)*n)); }
/* f(x) = x^2+1 */
double f(x) double x; { return x*x+1; }
/* Inverse of f(x) = x^2+1 */
double f_inverse(x) double x; { return sqrt(x-1); }
/* f(x) = x^2+1 iterated n times by limit formula, to machine accuracy */
double f_iterated(n, x) double n, x;
{
int k;
/* Iterate f on x, counting k iterations, */
/* until result is so large that f(x) and g(x) are equal */
/* to within machine accuracy */
for (k = 0; f(x) > g(x); k++)
x = f(x);
/* Apply [g^n] to result */
x = g_iterated(n, x);
/* Iterate inverse of f k times on f */
for (; k > 0; k--)
x = f_inverse(x);
/* And we are done */
return x;
}
---------------------------------------------------------
Finally, to attack the iteration problem for exp, the exponential
function. There seems to be no g with a natural formula for [g^n]
such that
lim [g^-k][exp^k]
k->inf
is defined for any subdomain of R. We are therefore forced to use
another approach to compute [exp^n] (in particular, h = [exp^1/2],
which satisfies h o h = exp).
The key is the Taylor series for exp
inf
exp(x) = sum x^i/i!
i = O
The partial sums of this series,
p
e_p(x) = sum x^i/i!
i = O
form a sequence of polynomials which approximate exp as closely
as desired on any desired range. To compute [exp^n](x), for
0 <= n <= 1, do the following,
1. Choose p so that f = e_p approximates exp to within the
desired accuracy near x.
2. Let g(x) = x^p/p!, the term of highest exponent of e_p(x).
It turns out that
1. lim [g^-k][f^k],
k->inf
exists on an infinite subdomain of R. (This is true whenever
g(x), the term of highest exponent of polynomial f(x), has a
positive coefficient. Exercise 2)
2. [g^n] has a natural formula.
3. It therefore follows that we can compute [f^n](x) as we did
for f(x) = x^2+1, and for 0 <= n <= 1, we can reasonably
expect that [f^n] will approximate [exp^n] as closely as f
approximates exp on the same range (my unproved assertion).
The problem with this computation is that, for tiny
accuracies, k in
[f^n] = lim [f^-k][g^n][f^k]
k->inf
may have to be chosen very large in order to get [g^k](x)
to dominate [f^k](x) to within accuracy. Also, [f^-1] will
have to be accomplished by an approximation method, such as
Newton's method.
4. It turns out, that for any real n >= 0, [exp^n] can be
extended to domain R. I leave out the details as I am
unaware of them.
---------------------------------------------------------
Have a nice day.
--
David W. Wilson ([email protected])
J.H.Whitney (was Prime Computer (was Computervision Corp.)), Bedford, MA
Disclaimer: "Truth is just truth...You can't have opinions about truth."
- Peter Schikele, introduction to P.D.Q. Bach's oratorio "The Seasonings."
T.R | Title | User | Personal Name | Date | Lines
|
---|