MathGroup Archive 2010

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

Search the Archive

Re: How to Enable Automatic Recalculation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg109867] Re: How to Enable Automatic Recalculation
  • From: Bill Rowe <readnews at sbcglobal.net>
  • Date: Thu, 20 May 2010 06:39:24 -0400 (EDT)

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.



  • Prev by Date: Re: Overloading StringJoin
  • Next by Date: Re: How to Enable Automatic Recalculation
  • Previous by thread: Re: How to Enable Automatic Recalculation
  • Next by thread: Re: How to Enable Automatic Recalculation