From: Vaughan Pratt <pratt@cs.stanford.edu>
To: categories@mta.ca
Subject: Re: functions not polynomials
Date: Mon, 26 Mar 2007 12:26:07 -0700 [thread overview]
Message-ID: <E1HWA7D-0000Fm-SZ@mailserv.mta.ca> (raw)
A couple of days ago, in response to a post to this list by Paul Taylor,
I showed that W: (NxN --> R) --> (N --> R), defined as W(f)(x) = f(x,x),
is bijective on the subset U of NxN --> R consisting of those f: NxN -->
R for which f(-,d) and f(d,-) are polynomials of degree d for each d in
N. As an afterthought I raised the question, for which g: N --> R can
W^{-1}(g): NxN --> R be extended to RxR --> R?
To get some idea of what could happen I wrote the following program
wttmo.c (W To The Minus One).
=====wttmo.c=====
> #include <stdlib.h>
>
> int main(int argc, char *argv[])
> {
> int i, j, m, n;
> double a[100], f[100][100];
> n = argc - 1;
> for (i = 0; i < n; i++) /* Input */
> f[i][i] = atof(argv[i+1]);
> for (m = 0; m < n-1; m++) { /* Process */
> for (i = 0; i <= m; i++)
> a[i] = f[m][i];
> for (i = 0; i < m; i++)
> for (j = 0; j < m-i; j++)
> a[j] = a[j+1] - a[j];
> for (i = m+1; i < n; i++) {
> for (j = 0; j < m; j++)
> a[j+1] += a[j];
> f[i][m] = f[m][i] = a[m];
> }
> }
> for (i = 0; i < n; i++) { /* Output */
> for (j = 0; j < n; j++)
> printf("%-7.3f ", f[i][j]);
> printf("\n");
> }
> }
=================
(Note that this program gives a well-defined result not just for the
reals but for any group, even a nonabelian one, since the only
operations performed are addition and subtraction. This generality can
be reconciled with the original problem, and with my proof of
bijectivity of W on U, by saying that a sequence s obeys a polynomial
law of degree (at most) d just when the d-th finite difference D^d(s) is
a constant sequence, where the finite difference operator D(s) replaces
each s_i by s_{i+1}-s_i in s.)
This program is run from the command line with n real parameters
constituting the first n elements g(0), g(1), ..., g(n-1) of a sequence
g. The output is W^{-1}(g), laid out as an nxn matrix with the entry at
row i and column j (numbering from 0) giving W^{-1}(g)(i,j) for i and j
from 0 to n-1.
Applying it to the polynomial 2 + 3x^2 gives the following result,
$ wttmo 2 5 14 29 50 77 110 149 194
2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000
2.000 5.000 8.000 11.000 14.000 17.000 20.000 23.000 26.000
2.000 8.000 14.000 20.000 26.000 32.000 38.000 44.000 50.000
2.000 11.000 20.000 29.000 38.000 47.000 56.000 65.000 74.000
2.000 14.000 26.000 38.000 50.000 62.000 74.000 86.000 98.000
2.000 17.000 32.000 47.000 62.000 77.000 92.000 107.000 122.000
2.000 20.000 38.000 56.000 74.000 92.000 110.000 128.000 146.000
2.000 23.000 44.000 65.000 86.000 107.000 128.000 149.000 170.000
2.000 26.000 50.000 74.000 98.000 122.000 146.000 170.000 194.000
consistent with producing f(x,y) = 2 + 3xy. This of course extends in
the usual way to RxR --> R.
Nudging the first two elements very slightly
$ wttmo 2.001 5.001 14 29 50 77 110 149 194
2.001 2.001 2.001 2.001 2.001 2.001 2.001 2.001 2.001
2.001 5.001 8.001 11.001 14.001 17.001 20.001 23.001 26.001
2.001 8.001 14.000 19.998 25.995 31.991 37.986 43.980 49.973
2.001 11.001 19.998 29.000 38.015 47.051 56.116 65.218 74.365
2.001 14.001 25.995 38.015 50.000 61.796 73.156 83.740 93.115
2.001 17.001 31.991 47.051 61.796 77.000 96.220 127.420 184.595
2.001 20.001 37.986 56.116 73.156 96.220 110.000 5.480 -531.865
2.001 23.001 43.980 65.218 83.740 127.420 5.480 149.000 4915.055
2.001 26.001 49.973 74.365 93.115 184.595 -531.865 4915.055 194.000
really shakes things up (look at f(i+1)(i), especially the region
38.015,61.796,96.220,5.480,4915.055 which used to be 38,62,92,128,170).
The prospects for extending this evidently chaotic function NxN --> R
to RxR --> R "nicely" look pretty bad -- at the very least it would seem
to require a very liberal notion of "nice".
In my previous post I claimed that W^{-1} maps polynomials to
polynomials, but realized later that the only polynomials for which this
was the case were those of the form g(x) = a + bx^2 for arbitrary
constants a and b, for which W^{-1}(g) is f(x,y) = a + bxy. The
simplest polynomial not mapped to a polynomial is the identity function,
g(x) = x:
$ wttmo 0 1 2 3 4 5 6 7
0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 1.000 2.000 3.000 4.000 5.000 6.000 7.000
0.000 2.000 2.000 0.000 -4.000 -10.000 -18.000 -28.000
0.000 3.000 0.000 3.000 24.000 75.000 168.000 315.000
0.000 4.000 -4.000 24.000 4.000 -280.000 -1176.000 -3164.000
0.000 5.000 -10.000 75.000 -280.000 5.000 5910.000 28595.000
0.000 6.000 -18.000 168.000 -1176.000 5910.000 6.000 -171528.000
0.000 7.000 -28.000 315.000 -3164.000 28595.000 -171528.000 7.000
Very unfunctorial of wttmo. :)
In GF(2) (suitably modifying the program, including writing # for 1 and
space for 0 in the output for better contrast), wttmo maps the identity
polynomial x = 0,1,0,1,0,1,... to xy, which is as one would expect given
that x = x^2 in GF(2).
More interestingly it maps the sequence 1,0,0,0,0,... to the Sierpinski
gasket, shown here for the top left 32x32 elements of f.
################################
# # # # # # # # # # # # # # # #
## ## ## ## ## ## ## ##
# # # # # # # #
#### #### #### ####
# # # # # # # #
## ## ## ##
# # # #
######## ########
# # # # # # # #
## ## ## ##
# # # #
#### ####
# # # #
## ##
# #
################
# # # # # # # #
## ## ## ##
# # # #
#### ####
# # # #
## ##
# #
########
# # # #
## ##
# #
####
# #
##
#
It is tempting to infer the fractal nature of wttmo from this. However
the Sierpinski gasket also arises as Pascal's triangle mod 2, so perhaps
one shouldn't read too much into this.
Vaughan Pratt
next reply other threads:[~2007-03-26 19:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-26 19:26 Vaughan Pratt [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-03-29 3:47 Vaughan Pratt
2007-03-22 5:56 Vaughan Pratt
2007-03-21 16:39 Paul Taylor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1HWA7D-0000Fm-SZ@mailserv.mta.ca \
--to=pratt@cs.stanford.edu \
--cc=categories@mta.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).