RE: possible bug in Mathematica?
- To: mathgroup at smc.vnet.net
- Subject: [mg25980] RE: [mg25967] possible bug in Mathematica?
- From: "David Park" <djmp at earthlink.net>
- Date: Wed, 15 Nov 2000 02:09:35 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Peter, The Mathematica documentation is a bit misleading under Part. You have to put both indices within one set of brackets so that you have one part and not a part of a part. matrix = Table[0, {2}, {3}] {{0, 0, 0}, {0, 0, 0}} matrix[[1,1]] = 11; matrix[[1,2]] = 12; matrix {{11, 12, 0}, {0, 0, 0}} You could use this method to set a number of elements in one row at once. The parentheses around the Set statement are necessary. MapThread[(matrix[[2,#1]] = #2) & , {{1, 2, 3}, {5, 6, 7}}]; matrix {{11, 12, 0}, {5, 6, 7}} David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ > -----Original Message----- > From: Peter Joseph [mailto:joseph at oasis.rad.upenn.edu] To: mathgroup at smc.vnet.net > > I am running Mathematica version 4.0 under Windows 98 2nd edition. > > I only recently discovered your newsgroup on technical questions about > Mathematica. I am not sure if you consider the following problem to be a > question or a bug report. I have already submitted this to Wolfram as a > bug report. > > > (* The problem is how to redefine or recalculate the elments of a list > with more than one dimension, such as a matrix > First, demonstrate that there is no such problem with a simple list *) > > In[8]:= vector = Table[0, {2}] > Out[8]= {0, 0} > > (* next redefine the values in the vector *) > > In[9]:=vector[[1]] = 1 > Out[9]=1 > > In[10]:=vector[[2]] = 2 > Out[10]=2 > > In[11]:=vector > Out[11]={1, 2} > > (* That was successful, now try exactly the same technique with a matrix > *) > > In[12]:=matrix = Table[0, {2}, {3}] > Out[12]={{0, 0, 0}, {0, 0, 0}} > > In[13]:=matrix[[1]][[1]] = 11 > Set::"setps": "\!\(matrix \[LeftDoubleBracket] 1 \[RightDoubleBracket]\) > in \ > assignment of part is not a symbol." > Out[13]=11 > > In[14]:=matrix > Out[14]={{0, 0, 0}, {0, 0, 0}} > > (* evidently, Mathematica interprets the meaning of vector[[1]] very > differently than matrix[[1]][[1]] > It considers the vector elements to be variables that can be redefined, > while it considers the matrix elements constants that are > protected. I tried using Unprotect in various forms, but that did not > work. > > So the question is, how does one do computations on lists which are nested > more than one level deep?? *) > > Peter M. Joseph, Ph.D. > Professor of Radiologic Physics in Radiology > Hospital of the University of Pennsylvania > Philadelphia, PA, 19104-4283 > Telephone 215-662-6679 > email joseph at rad.upenn.edu >