Extracting the domain of a function, dynamic programming
- To: mathgroup at smc.vnet.net
- Subject: [mg8225] Extracting the domain of a function, dynamic programming
- From: John JOWETT <John.Jowett at cern.ch>
- Date: Tue, 19 Aug 1997 21:12:05 -0400
- Organization: CERN
- Sender: owner-wri-mathgroup at wolfram.com
--------------DA785FE9E40FF72720FAFD8D
Hello, I would like to extract the set of values on which a function is
defined. Consider the following toy example (to illustrate a
situation I have while using dynamic programming):
In[182]:=
Clear[f]
In[185]:=
f[1]:=f1;
f[2]:=f2;
To find out about f, I can always do
In[186]:=
?f
Global`f
f[1] := f1
f[2] := f2
However in my application, the values f1 and f2 are enormous expressions
that I have to avoid appearing in my notebook (even if I allow them to
print, it is quite hard to sift through the output cells looking for
what I want). In any case I would like to get hold of this domain
list and do other things with it.
I would like something
that returns just the list {1,2}, ie, the domain or set of values for
which the function has been explicitly defined.
I have tried
In[188]:=
DownValues[f]
Out[188]=
{HoldPattern[f[1]]\[RuleDelayed]f1,HoldPattern[f[2]]\[RuleDelayed]f2}
and then
In[189]:=
First /@ DownValues[f]
Out[189]=
{HoldPattern[f[1]],HoldPattern[f[2]]}
Then I can use Length[] to find out at least for how many cases f
is defined but I have trouble extracting my domain (basically because
attempts to dig deeper into the DownValues list always evaluate f[1]
and f[2] at some point.
I am sure that someone who really understands held expressions
can help me .....
(I realise that I could simply accumulate an auxiliary list at
each point where a new value is defined for f but that's not really
satisfactory.)
Thanks for any efforts,
John Jowett
--
-------------------------------------------------------------------------
** Electronic mail: <John.Jowett at cern.ch>
World Wide Web: http://wwwslap.cern.ch/~jowett/
Telephone: +41 (0)22 76 76643 (direct line and voice mail)
Postal address: SL Division, CERN, CH-1211 Geneva 23,
Switzerland
Fax: +41 (0)22 76 78480
Location: Room 1-D18,Building 865, CERN Prevessin Site, France
Secretaries: +41 (0)22 76 75272 or 75875 or 74571
-------------------------------------------------------------------------
--------------DA785FE9E40FF72720FAFD8D
Content-Description: Card for John Jowett
begin: vcard
fn: John Jowett
n: Jowett;John
org: CERN
adr: SL DIvision;;CERN;1211 Geneva 23 ;;;Switzerland
email;internet: John.Jowett at cern.ch
title: Dr
tel;work: +41 22 767 6643
note: WWW: http://wwwslap.cern.ch/~jowett/
=0A=
Telephone: +41 (0)22 76 76643 (direct line and voice mail)
=0A=
Postal address: SL Division, CERN, CH-1211 Geneva 23,
=0A=
Switzerland
x-mozilla-cpt: ;0
x-mozilla-html: TRUE
end: vcard
--------------DA785FE9E40FF72720FAFD8D--