Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

Re: newbie: explicit function works, "function object" doesn't

  • To: mathgroup at smc.vnet.net
  • Subject: [mg96240] Re: newbie: explicit function works, "function object" doesn't
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Tue, 10 Feb 2009 05:49:25 -0500 (EST)
  • References: <gmp0st$c30$1@smc.vnet.net>

Hi,

you get nothing because a global symbol named "v0"
has nothing to do with a symbol

Manipulate[__,{v0,-1,1},__]

because Mathematica localize the symbols. You can see this with

Manipulate[{Hold[v0], v0}, {v0, -1, 1}]

it will show you the true name of v0 as FE`v0$$*
And so the simple version
f[t_]:=Sin[w*t]

Manipulate[Plot[f[t], {t, 0, Pi}], {{w, 1}, 0, 10}]

will not work, because the w in the definition of f[]
is total different from the w inside Manipulate[]

But

Manipulate[
  Plot[f[t] /. w -> w1, {t, 0, Pi}],
  {{w1, 1, "\[Omega]"}, 0, 10}]

will work, because the outside "w" is replaced by the
inside-Manipulate "w1"

Regards
   Jens

Tom Roche wrote:
> summary: I've got a function that I can Manipulate, but I can't
> Manipulate the things to which the function is assigned. I'm assuming
> this is due to a syntax error.
> 
> details:
> 
> As advertised by the Subject:, I'm new to Mathematica (specifically M7
> running on a linux cluster) so please excuse any lapses in
> terminology. I'd also appreciate pointers to specific docs rather than
> just an RTFM. Also feel free to refer to my notebook @
> 
> http://www.unc.edu/~tr/classes/GEOL861/hw1Notebook.nb
> 
> I'm trying initially to model a linearized pendulum
> 
> theta''[t] == -omega^2 theta[t]
> 
> (where omega=g/l) with the simple initial conditions
> 
> theta'[0]==v0
> theta[0]==theta0
> 
> Using
> 
> soln = DSolve[{linearPendulum, theta'[0] == v0, theta[0] == theta0},
> theta[t], t]
> 
> I get the solution
> 
> theta[t] -> (omega*theta0*Cos(omega*t) + (v0*Sin(omega*t)))/omega
> 
> However, when I try to Manipulate[Plot[soln...]], I get ... nothing.
> Not an error, and I do get the appropriate UI, but I don't get a plot.
> 
>>From what I've read, it seems Manipulate wants an expression like the
> RHS of 'soln', which I'll refer to here as a "function." (Please
> correct my usage as needed.) I got a "function object" with ReplaceAll
> 
> happysoln[t_] = theta[t] /. soln[[1]]
> 
> similar to a working example I've seen. But
> Manipulate[Plot[happysoln...]] also fails silently, like the previous.
> 
> However, when I manipulate the "function" directly
> 
> Manipulate[Plot[(omega theta0 Cos[omega t] + v0 Sin[omega t])/omega,
> {t, -2 Pi, 2 Pi}], {{omega, 1}, 0, 5}, {{theta0, 1}, 0, 5}, {{v0, 1},
> 0, 5}]
> 
> it works as designed: I get the UI with the plot, which I can twiddle
> with the sliders.
> 
> Why can I Manipulate the function, but not the containers of the
> function (i.e. soln, happysoln)? More importantly, with what syntax
> can I Manipulate those containers?
> 
> TIA, Tom Roche <Tom_Roche at pobox.com>
> 


  • Prev by Date: Re: testing if a point is inside a polygon
  • Next by Date: Re: newbie: explicit function works, "function object"
  • Previous by thread: Re: newbie: explicit function works, "function object" doesn't
  • Next by thread: Re: newbie: explicit function works, "function object" doesn't