Re: Ploting a changing constant

• To: mathgroup at smc.vnet.net
• Subject: [mg64779] Re: [mg64740] Ploting a changing constant
• From: "David Park" <djmp at earthlink.net>
• Date: Thu, 2 Mar 2006 19:27:52 -0500 (EST)
• Sender: owner-wri-mathgroup at wolfram.com

```Mary Beth,

y[a_,x_] will work for your purposes. But if you think of the function
really being a function of x and a is a parameter, then y[a_][x_] (not
y[x_][a_]) separates the parameter from the variable. And, as I said in the
posting, you can then simply write the derivative as f[a]'[x]. But it is
just a matter of convenience and whether you want to differentiate between
'parameters' and 'variables'.

Such definitions, by the way, are stored in SubValues of f.

David Park

From: Mary Beth Mulcahy [mailto:Mary.Mulcahy at colorado.edu]
To: mathgroup at smc.vnet.net

Thanks for your response.  I was curious if you wouldn't mind saying exactly
how y[x_, a_] is different from y[x_][a_] (note placement of brackets).  How
does Mathematica interpret them differently?  I somehow picked up the habit of
always defining my functions as the first example and haven't had any trouble.
In a similar example someone else sent me I tried both y[x_, a_] and y[x_]
[a_].  They gave the same result, so maybe there isn't a difference?
Thanks.

Mary Beth

Quoting David Park <djmp at earthlink.net>:

> Mary Beth,
>
> Plot allows a list of functions to plot. This can be generated by Table
but
> you must Evaluate the Table statement.
>
> y[x_, a_] := a x
>
> Plot[Table[y[x, a], {a, 10, 50, 10}] // Evaluate, {x, 0, 33}];
>
> I would like to call 'a' a parameter and I would tend to define such a
> (different) function in the following manner.
>
> Clear[y]
> y[a_][x_] := x^a
>
> Then you can easily write the derivative of the function as...
>
> y[2]'[x]
> 2 x
>
> If you wanted to plot a series of curves with different values of a, but
not
> necessarily evenly spaced, then you could use MapThread. Here is an
example.
>
> Plot[MapThread[y[#][x] &, {{0, 0.2, 0.5, 1, 2, 5}}] // Evaluate, {x, 0,
1},
>     Frame -> True];
>
> If you wanted to plot the derivatives then you could use...
>
> Plot[MapThread[y[#]'[x] &, {{0, 0.2, 0.5, 1, 2, 5}}] // Evaluate, {x, 0,
1},
>     PlotRange -> {0, 4},
>     Frame -> True];
>
--
Department of Chemistry and Biochemistry