Re: Dynamically changing 2 interdependent variables.
- To: mathgroup at smc.vnet.net
- Subject: [mg81477] Re: Dynamically changing 2 interdependent variables.
- From: dh <dh at metrohm.ch>
- Date: Wed, 26 Sep 2007 06:25:19 -0400 (EDT)
- References: <fd57vj$25b$1@smc.vnet.net>
Hi Michael,
assume you change k. The statement: k=2Pi/lam will reset k at once.
Therefore no wonder that k does not work. You need a way to distinguish
which variable has changed. Here is an attempt:
oldlam=2Pi; oldk=1;
Manipulate[Dynamic[Print[{lam,k,oldlam,oldk}];If[oldlam!=lam,oldk=k=2Pi/lam;oldlam=lam];If[oldk!=k,oldlam=lam=2Pi/k;oldk=k];Row[{TraditionalForm[(2
Pi)/lam]," = ",TraditionalForm[2 Pi]/TraditionalForm[(2
Pi)/k]}]],{{k,1},.1,1},{{lam,2 Pi},2 Pi,2 Pi 10}]
Note also, that the ranges of k and lam should be compatible.
hope this helps, Daniel
Michael Knap wrote:
> Ok, I have looked over the Documentation, but I still haven't quite
> figured out how to do exactly what I want to do.
>
> I am working on a Physics app dealing with waves, so I want to be able
> to input a wave number either expressly, as k, or in terms of lambda.
>
> This is the relationship: k = (2 Pi) / lambda .
>
> I want to be able to change either variable in a Manipulate[] function,
> and have the other update appropriately.
>
> This is what I have started with:
>
> Manipulate[
> Dynamic[
> Row[{
> TraditionalForm[k = (2 Pi)/lam],
> " = ",
> TraditionalForm[2 Pi]/TraditionalForm[lam = (2 Pi)/k]
> }]
> ],
> {{k, 1}, .00001, 1},
> {{lam, 2 Pi}, 2 Pi, 100}
> ]
>
> Notice how changing the lam slider works as expected. Changing the k
> slider does not.
>
> Any help is appreciated.
>