Re: How to Enable Automatic Recalculation
- To: mathgroup at smc.vnet.net
- Subject: [mg109876] Re: How to Enable Automatic Recalculation
- From: Victor Roberts <xxx at lighting-research.com>
- Date: Thu, 20 May 2010 07:29:30 -0400 (EDT)
- References: <ht33if$hfb$1@smc.vnet.net>
On Thu, 20 May 2010 10:40:15 +0000 (UTC), Bill Rowe <readnews at sbcglobal.net> wrote: >On 5/19/10 at 7:01 AM, xxx at lighting-research.com (Victor Roberts) >wrote: > >>I'm new to Mathematica, so perhaps there is a simple answer to this >>question. > >>How to I set Mathematica so that when I change the value assigned to >>a variable it will automatically change all later calculations that >>use that variable. > >>For example, if I set > >>a = 5 > >>and > >>b = 3 + a > >>I would like the value of b updated each time I change the value of >>a. > >>Right how, I need to recalculate each and every expression that uses >>the variable a if I change its value. There must be a better way. > >It is a little unclear as to exactly what you want when you say >you want "the value of to be updated each time I change the >value of a". One way to interpret this would be that you want >computations made before a was changed to update when a is >changed. If so, you will need to have a, b and the other >expressions that depend on a in a dynamic module. > >Another way to interpret what you want is as saying you want >computations made after a is changed to reflect the new value. >This is much simpler to implement. All you need do is define >those operations using SetDelayed rather than Set. For example: > >In[1]:= a = 5; >b := a + 3 >{a, b} > >Out[3]= {5,8} > >In[4]:= {a = 4, b} > >Out[4]= {4,7} > >SetDelayed causes the evaluation of b to be delayed until it is >used. So, any use of b when defined with set delayed will >reflect the value of a at the time b is used. Contrast that with >c defined below with Set > >In[5]:= c = a + 5; >{a, c} > >Out[6]= {4,9} > >In[7]:= {a = 5, c} > >Out[7]= {5,9} > >Here, c is unchanged even though a is changed. > I want to thank everyone for their help. I just "discovered" that the Evaluation tab has a number of options, including Evaluate Notebook, which does exactly what I was asking about, although by the wrong name for Mathematica. However, I am also learning that I probably do not want to reevaluate the whole notebook very often, which is why there does not seem to be any way to have automatic reevaluation of the whole notebook each time I change something. I've also learned that differences between the user interface of Mathematica and the user interface of the math program I had been using for years mean that I do not need an "automatic recalculation" or, more properly in Mathematica, an "automatic reevaluation" option as often. The other program used the values of variables based on their position on the worksheet. To change the value of a variable used in some function, I needed to go back and edit the value where it appeared on the worksheet before the function was called. Mathematica, on the other hand, uses the value of a variable that was entered last. So, I can just move ahead with a new value for some variable, and then reevaluate the function that uses that variable, and that leaves me with both the old and new answers in the notebook, which is great. Thanks again. -- Vic Roberts Replace xxx with vdr in e-mail address.