Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Can model parameters be global?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg79918] Re: Can model parameters be global?
  • From: ben <benjamin.friedrich at gmail.com>
  • Date: Thu, 9 Aug 2007 05:09:03 -0400 (EDT)
  • References: <f9c1av$6it$1@smc.vnet.net>

Dear Neil

a convenient work-around is the use of Replace, ReplaceAll;
a typical piece of  my code looks like this:

(* a1 does rarely change in the notebook *)
a1=0;

(* a2 can take different values in different scenarios, can be used as
fit parameter, etc. *)
case1:={a2->0}
case2:={a2->1}

(* a3 is varied continously, eg. in plots *)
f[a3_]:=a1+a2+a3;

f[1]
f[1]/.case1

Bye
Ben



On 8 Aug., 11:10, Neil Stewart <neil.stew... at warwick.ac.uk> wrote:
> When implementing a mathematical model in physics or psychology, for
> example, how do other people deal with model parameters in Mathematica?
> Would you represent the speed of light as a global variable or a local
> variable. For example, would you use
>
> Energy[m_]:=m*c^2  (* c is a global variable *)
>
> or
>
> Energy[m_,c_]:=m*c^2 (* c is a local variable *)
>
> ?
>
> The first seems neater. But problems arise in psychology, my domain, where
> the values of model parameters are unknown and are left as free parameters,
> adjusted to best-fit the data.
>
> Both local and global methods work well with optimisation. For example,
>
> NMinimize[Energy[1],{c}]
> {0., {c -> 0.}}
>
> and
>
> NMinimize[Energy[1,c],{c}]
> {0., {c -> 0.}}
>
> But the global variable solution does not work well with Manipulate.
> For example,
>
> Manipulate[Dynamic[Energy[1]], {c, 0, 1}, LocalizeVariables -> False]
>
> works, but looks a right mess and also results in c taking a value that
> needs a Clear[c] before using other functions like NMinimize. On the other
> hand the local variable version
>
> Manipulate[Energy[1, c], {c, 0, 1}]
>
> is nice and simple. But the local variable solution results in having to
> pass all of the model parameters to the function. This is fine in this
> trivial example, but becomes unwieldy when there are ten model parameters
> and the model is defined using a set of functions. (A c-like struct could
> help, but there does not seem to be a neat way to do this in Mathematica.)
>
> So what do other people do? I'd be really interested to hear.




  • Prev by Date: framed plots with two y axes scales
  • Next by Date: Re: Progess bar in Mathematica
  • Previous by thread: Can model parameters be global?
  • Next by thread: Re: Can model parameters be global?