"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
|