DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Set::setps: b[[1]] in assignment of part is not a symbol.

Hallo,

Mathematica verwendet Part[] in lesenden und schreibenden
Aufrufen anders. Beim lesenden Aufruf ist das Ergebnis von

b[[1]][[1]] und b[[1,1]] 

equivalent, ersteres ist

Part[Part[b,1],1]

letzteres ist

Part[b,1,1]

Part[Part[b,1],1] nimmt zuerst die erste Zeile von b und
erzeugt eine *Kopie* dieser ersten Zeile, aus der dann
der zweite Part[copyOfRow1OfB,1] das erste Element heraus
holt. Deshalb dauert

b = Table[Random[], {100}, {100000}];

Timing[Table[b[[1]][[1]], {1000}]] // First

auch l"anger als

Timing[Table[b[[1, 1]], {1000}]] // First

Bei einer Zuweisung, wie

b[[1]][[1]]=1

wird auch eine Kopie der ersten Zeile von b
erzeugt, der man aber nichts zuweisen kann
weil es eben eine Kopie ist.
Beim Zuweisen *muss* man also die b[[1,1]] Variante
nehmen damit nichts kopiert wird
und Part[] auf den Speicher des Originals
zugreift.

Gruss
  Jens

"Veltman, A.T." wrote:
> 
> Sowwy, immer noch mit Mathematica 3.0,
> hab aber folgendes Problem:
> 
> Folgendes functioniert:
> 
> In[1]:= a = Table[0, {2}]
> Out[1]= {0,0}
> 
> In[2]:= a[[1]] = 1
> Out[2]= 1
> 
> In[3]:= b = Table[0, {2}, {3}]
> Out[3]= {{0, 0, 0}, {0, 0, 0}}
> 
> Aber wenn Ich versuche
> 
> In[4]:= b[[1]][[1]] = 2
> 
> sagt er (mathematica):
> 
> Set::setps: b[[1]] in assignment of part is not a symbol.
> Out[4]= 2
> 
> und er verweigert sich das Element an zu passen:
> 
> In[5]:= b[[1]][[2]]
> Out[5]= 0
> 
> Wie kann Ich doch, ohne viel Mühe, die Werte im Matrix b anpassen?
> 
> danke,
> 
> arie veltman
> 
> ============================================
> *      Ir. A.T. Veltman
> *      Energy research Centre of the Netherlands  ECN
> *      Technological Services & Consultancy
> *      Postbus 1, 1755 ZG  Petten, The Netherlands
> *      Tel (+31) (0)224 564556, Fax (+31) (0)224 568407
> *      veltman@XXXXXXX.nl
> *      www.ecn.nl
> ============================================
> DISCLAIMER:
> 
> The information contained in this communication is confidential and may be
> legally privileged. It is intended solely for the use of the individual or
> entity to whom it is addressed and others authorised to receive it. If you
> are not the intended recipient you are hereby notified that any disclosure,
> copying, distribution or taking any action in reliance of the contents of
> this information is strictly prohibited and may be unlawful. ECN is neither
> liable for the proper nor complete transmission of the information contained
> in this communication nor for any delay in its receipt.


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html