Re: Set::setps problems

• To: mathgroup at smc.vnet.net
• Subject: [mg90270] Re: Set::setps problems
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Fri, 4 Jul 2008 03:56:39 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <g4i94f\$3d2\$1@smc.vnet.net>

```ï¿½ wrote:

> I found troubles with such a loop:
>
> T = Table[{s, 0}, {s, -Pi, Pi, step}];
>
> For[i = 1, i <= Length[UU], i += 1,
>   UU[[i]][[2]] += 5];
>
> (it's just the example of some general idea of changing values of
> table's elements inside a loop)
>
> And Mathematica returned:
>
> Set::setps: UU[[i]] in the part assignment is not a symbol. >>
> Set::setps: UU[[i]] in the part assignment is not a symbol. >>
> Set::setps: UU[[i]] in the part assignment is not a symbol. >>
> General::stop: Further output of Set::setps will be suppressed during \
> this calculation. >>

You cannot use the shortcut += in this case because Mathematica
mismatches the value of the symbol for the symbol itself when expanding
the LHS (say, UU[[1,2]] == 5, so UU[[1,2]] += 5 is rewritten as 5 = 5 +
5 rather than the intended UU[[1,2]] = 5 + 5). So just write the
expanded version UU[[i, 2]] = UU[[i, 2]] + 5.

In[1]:= With[{step = .5}, UU = Table[{s, 0}, {s, -Pi, Pi, step}]]

For[i = 1, i <= Length[UU], i++, UU[[i, 2]] = UU[[i, 2]] + 5]

UU

Out[1]= {{-3.14159, 0}, {-2.64159, 0}, {-2.14159, 0}, {-1.64159,
0}, {-1.14159, 0}, {-0.641593, 0}, {-0.141593, 0}, {0.358407,
0}, {0.858407, 0}, {1.35841, 0}, {1.85841, 0}, {2.35841,
0}, {2.85841, 0}}

Out[3]= {{-3.14159, 5}, {-2.64159, 5}, {-2.14159, 5}, {-1.64159,
5}, {-1.14159, 5}, {-0.641593, 5}, {-0.141593, 5}, {0.358407,
5}, {0.858407, 5}, {1.35841, 5}, {1.85841, 5}, {2.35841,
5}, {2.85841, 5}}

Note that a *much* more efficient way of doing the above is to
manipulate a list as a whole:

In[4]:= UU[[All, 2]] = UU[[All, 2]] + 5
UU

Out[4]= {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}

Out[5]= {{-3.14159, 10}, {-2.64159, 10}, {-2.14159, 10}, {-1.64159,
10}, {-1.14159, 10}, {-0.641593, 10}, {-0.141593, 10}, {0.358407,
10}, {0.858407, 10}, {1.35841, 10}, {1.85841, 10}, {2.35841,
10}, {2.85841, 10}}

You should spend some time familiarizing yourself with "List
Manipulation" and "Functional Programming", as starters, to get an
overall idea on how to program efficiently with Mathematica.

guide/ListManipulation

guide/FunctionalProgramming

Regards,
-- Jean-Marc

```

• Prev by Date: Re: Anomaly? or at least a surprise.
• Next by Date: Re: Set::setps problems
• Previous by thread: Re: Set::setps problems
• Next by thread: Re: Set::setps problems