Question about function definitions
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg245] Question about function definitions
- From: Scott Herod <sherod at boussinesq.Colorado.EDU>
- Date: Mon, 28 Nov 1994 13:10:01 -0700 (MST)
Here is a question related to the issue of multiple function
definitions. First let me present some code segments with examples of
their execution.
-----------File delsol.m:
delay[num_, T_, z_] := Module[{},
f[s_] := 0.7 + 0.1 s;
witchargs = {};
For[k = 0, k <= num, k++,
sol = NDSolve[{y'[t] + y[t] == f[t] ( 2 - f[t]^z),
y[T*k] == f[T*(k+1)]}, y, {t,T*k,T*(k+1)}];
(* Clear[f]; *)
f[s_] := Evaluate[(y /. Flatten[sol])][s-T];
witchargs = {witchargs, t <= T*(k+1), Evaluate[(y /. Flatten[sol])][t]}
];
g[t_] = Apply[Which, Flatten[witchargs]];
];
---------Example Run
Mathematica 2.2 for Solaris
Copyright 1988-93 Wolfram Research, Inc.
License valid through 28 Nov 1995.
-- Open Look graphics initialized --
In[1]:= <<delsol.m
In[2]:= delay[3,2,3]
In[3]:= ??f
Global`f
f[s_] := 0.7 + 0.1*s
f[s$_] := Evaluate[y /. Flatten[sol]][s$ - 2]
----------Discussion
I am computing solutions to a differential-delay equation discussed by
R.M. May in a 1981 paper. The idea is to iterate on the set of smooth
functions defined on [0,T]. Anyway, this code doesn't work because
the NDSolve routine always sees the first definition of f with the "s"
not the definition with the "s$". Of course a fix is to clear f each
time through the loop, but I would be interested in understanding why
the $ is appended. Especially considering the next example.
------------File vartest.m
tes[num_] := Module[{},
f[t_] := Sin[t];
For[k = 1, k <= num, k++,
y = f';
f[t_] = y[t - 2];
]
]
------------Example run
Mathematica 2.2 for Solaris
Copyright 1988-93 Wolfram Research, Inc.
License valid through 28 Nov 1995.
-- Open Look graphics initialized --
In[1]:= <<vartest.m
In[2]:= tes[3]
In[3]:= ??f
Global`f
f[t_] = -Cos[6 - t]
------------Discussion
What is it about the above routine which is different from the first
so that the "$" is not added to the variable $t$?
Scott A. Herod
Program in Applied Mathematics
University of Colorado, Boulder
(sherod at newton.colorado.edu)