|
"Martin Hammer" <HAMMER@XXXXXXX.de> wrote: > Libe Mathematica-Freunde, > > ein sicher triviales Problem: > > In[5]:= > A={{1,2},{3,4}} > Out[5]= > {{1,2},{3,4}} > In[6]:= > A[[i,j]]/.i->1/.j->2 > Part::"pspec": > "Part specification i is neither an integer nor a list of > integers." > Part::"pspec": > "Part specification j is neither an integer nor a list of > integers." > Out[6]= > 2 > > Woher kommt diese Fehlermeldung? Sie stoert zwar in diesem Beispiel nicht, wenn > ich aber ueber Funktionen von Matrixelementen summieren will versucht Mma 3.0 > stets, statt des Elementes die ganze Matrix in die Funktion einzusetzen. > > Gruss Martin Mathematica evaluiert, salopp gesagt, von innen nach aussen. Die Einzelheiten sind im Kapitel A.4 des Mathematica Buches deutlich erklaert. Schaut man sich z.B. A[[i,j]]/.i->1/.j->2 in der FullForm an In[6]:= FullForm[HoldForm[ A[[i,j]]/.i->1/.j->2 ]] Out[6]//FullForm= > HoldForm[ReplaceAll[ReplaceAll[Part[A, i, j], Rule[i, 1]], Rule[j, 2]]] dann wird klar, dass erst Part[A,i,j] (d.h. A[[i,j]]) evaluiert wird, was zur ersten Fehlermeldung fuehrt: In[11]:= A[[i,j]] Part::pspec: Part specification i is neither an integer nor a list of integers. Out[11]= {{1, 2}, {3, 4}}[[i,j]] Analog dann die zweite Fehlermeldung. MfG, Rolf Rolf Mertig Mertig Research & Consulting Mathematica training and programming Development and distribution of FeynCalc Amsterdam, The Netherlands http://www.mertig.com |