DMUG-Archiv 2004

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

Re: symbolic computation

Technisch besteht ein himmelweiter Unterschied
zwischen einer Funktion die eine *Kopie* eines
Listen-Elements zur"uckliefert und dem Listen-Element
selbst. Anders als in C/C++ ist a[[i]] in Mathematica
kein direkter Zugriff auf den Speicher, den man
mit a[i] in C/C++ h"atte.

Die Schreibweise "a[[1]]" sein ein "Element" einer Liste
suggeriert aber, das es sich um das Original handelt.
Ausserdem ist es an dieser Stelle *wichtig* zu wissen,
dass es sich um einen Funktionsaufruf handelt denn nur den
kann man mit Hold[] unterbinden. 

Es ist also nicht einfach eine technische Unterscheidung
sonder eine inhaltliche.

Die synonyme Verwendung von 

"im Klartext: Liste, Tabelle, Arrray, Feld, Vektor, etc. ja ja die
babylonische sprachverwirrung)"

ist alles andere als "Klartext" da eine Liste eine eindimensionale
Folge von Elementen ist und eine Tabelle "ublicherweise eine
zweidimensionale Anordung von Elementen meint.
Ein Array bezeichnet allgemein  eine mehr dimensionale Anordung
ohne konkrete Dimensionsangaben und dann wird es wirklich schlimm,
denn ein Feld bezeichnet meist eine Abbildung des R^n in den R^n,
und ein Vektor ist ein Element eine *Vektorraumes* und hat absolut
nichts mit Feldern, Listen oder Tabellen zu tun.

Es mag sein, das eine schlampige Sprechweise das hin und wieder
durcheinander bringt. Allerdings ist es beim formulieren einer
Frage nicht besonders clever, auch noch schampig zu formulieren,
da dadurch die Wahrscheinlichkeit steigt, das man nicht verstanden
wird und somit die Wahrscheinlichkeit sinkt, das man eine Antwort
erh"alt. 

Gruss
  Jens

Nowak Robert wrote:
> 
> Hallo Jens,
> 
> um ein wengig spitzfindisch zu sein :
> 
> > Ausserdem ist a[[1]] oder was auch immer kein *Element* einer Tabelle, sondern ein Funktionsaufruf an die Funktion 
> > Part[].
> > lst = Table[i, {i, 4}];
> 
> lst ist doch zweifelsohne eine Matematica List (im Klartext: Liste, Tabelle, Arrray, Feld, Vektor, etc. ja ja die 
> babylonische sprachverwirrung)
> und sowohl Part[lst, i] als auch lst[[i]] liefern sehr wohl ein Element dieser lst benannten Matematica List; 
> technisch mag das durch einen Funktionsaufruf wie fast alles in Matematica erfolgen.
> 
> grüsse robert
> 
> -----Original Message-----
> From: Jens-Peer Kuska [mailto:kuska@XXXXXXX.de]
> Sent: Thursday, January 29, 2004 5:43 PM
> To: RGollreiter@XXXXXXX.de
> Cc: Deutsche Mathematica News Group
> Subject: Re: symbolic computation
> 
> Hallo,
> 
> nein das ist auch v"ollig unn"otig denn man kann ja
> a[1]+a[2] schreiben.  Will man dann Elemente eines
> einer Liste tatsachlich verwenden sollte
> 
> lst = Table[i, {i, 4}];
> 
> a[1]+a[2] /.  a[i_] :> lst[[i]]
> 
> wohl helfen.
> 
> Ausserdem ist a[[1]] oder was auch immer kein *Element* einer Tabelle, sondern ein Funktionsaufruf an die Funktion 
> Part[].
> 
> Damit eine Funktion nicht ausgewertet wird muss man Hold[] verwenden und
> 
> expr=Hold[a[[1]]] + Hold[a[[2]]]
> 
> arbeitet auch ohne Fehler.
> Mit
> 
> Block[{a={x^2,z}},
>   ReleaseHold[expr]
>  ]
> 
> kann man dann die Elemente einsetzen.
> 
> Gruss
>   Jens
> 
> RGollreiter@XXXXXXX.de wrote:
> >
> > Hallo Demug,
> >
> > gibt es eine Möglichkeit mit Elementen einer Tabelle als symbolische
> > Variablen zu arbeiten, ohne folgende Fehlermeldung zu erhalten:
> >
> > In[1]:= a[[1]]+a[[2]]
> >
> >      Part::partd: Part specification a[[1]] is longer than depth of object.
> >      Part::partd: Part specification a[[2]] is longer than depth of
> > object.
> >
> > Out[2]= a[[1]]+a[[2]]
> >
> > Mit freundlichen Gruessen
> >
> > Richard Gollreiter


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

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