Re: Sign Declaration
- To: mathgroup at smc.vnet.net
- Subject: [mg80074] Re: Sign Declaration
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 12 Aug 2007 07:10:16 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <f9jjfn$2d5$1@smc.vnet.net>
Mr Ajit Sen wrote:
> Given the list A= {a,b,c,d,e,f,g,h}, I'd like to
> tell
> Mathematica (5.2) that a,b,...,e are +ve, and f,g,h are -ve.
>
> I'm using the following
>
> Table[Sign[A[[i]]]^=1,{i,5}];
>
> Table[Sign[A[[i]]]^=-1,{i,6,8}];
>
>
> My queries are :
>
> 1. Is it possible to combine the above into 1
> Table[]?
<snip>
Yes. For instance,
Table[Sign[A[[i]]] ^= If[i > 5, -1, 1], {i, 8}];
Table[Sign[A[[i]]] ^= -1 + 2*Boole[i < 6], {i, 8}];
Table[Sign[A[[i]]] ^= 1 - 2*UnitStep[i - 6], {i, 8}];
will all yield the desired results.
Here is some tests:
In[1]:= Clear /@ A;
A = {a, b, c, d, e, f, g, h};
Table[Sign[A[[i]]] ^= 1, {i, 5}];
Table[Sign[A[[i]]] ^= -1, {i, 6, 8}];
UpValues /@ A
Out[5]= {{HoldPattern[Sign[a]] :> 1}, {HoldPattern[Sign[b]] :>
1}, {HoldPattern[Sign[c]] :> 1}, {HoldPattern[Sign[d]] :>
1}, {HoldPattern[Sign[e]] :>
1}, {HoldPattern[Sign[f]] :> -1}, {HoldPattern[
Sign[g]] :> -1}, {HoldPattern[Sign[h]] :> -1}}
In[6]:= Clear /@ A;
A = {a, b, c, d, e, f, g, h};
Table[Sign[A[[i]]] ^= If[i > 5, -1, 1], {i, 8}];
UpValues /@ A
Out[9]= {{HoldPattern[Sign[a]] :> 1}, {HoldPattern[Sign[b]] :>
1}, {HoldPattern[Sign[c]] :> 1}, {HoldPattern[Sign[d]] :>
1}, {HoldPattern[Sign[e]] :>
1}, {HoldPattern[Sign[f]] :> -1}, {HoldPattern[
Sign[g]] :> -1}, {HoldPattern[Sign[h]] :> -1}}
In[10]:= Clear /@ A;
A = {a, b, c, d, e, f, g, h};
Table[Sign[A[[i]]] ^= -1 + 2*Boole[i < 6], {i, 8}];
UpValues /@ A
Out[13]= {{HoldPattern[Sign[a]] :> 1}, {HoldPattern[Sign[b]] :>
1}, {HoldPattern[Sign[c]] :> 1}, {HoldPattern[Sign[d]] :>
1}, {HoldPattern[Sign[e]] :>
1}, {HoldPattern[Sign[f]] :> -1}, {HoldPattern[
Sign[g]] :> -1}, {HoldPattern[Sign[h]] :> -1}}
In[14]:= Clear /@ A;
A = {a, b, c, d, e, f, g, h};
Table[Sign[A[[i]]] ^= 1 - 2*UnitStep[i - 6], {i, 8}];
UpValues /@ A
Out[17]= {{HoldPattern[Sign[a]] :> 1}, {HoldPattern[Sign[b]] :>
1}, {HoldPattern[Sign[c]] :> 1}, {HoldPattern[Sign[d]] :>
1}, {HoldPattern[Sign[e]] :>
1}, {HoldPattern[Sign[f]] :> -1}, {HoldPattern[
Sign[g]] :> -1}, {HoldPattern[Sign[h]] :> -1}}
--
Jean-Marc