DMUG-Archiv 2010

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

Re: Sum[x[[i]]+a,{i,1,n}] => Sum[x[[i]],{i,1,n}]+a n

Hallo, liebe Existenzialisten:

Warum gibt MMA eine Warnmeldung aus, wenn man einen Algorithmus definiert, der auf ein nicht existierendes Element zugreifen muss, um den Algorithmus abschließend (als Zahl?) zu evaluieren.

Also ich finde die Warnmeldung ganz praktisch, vielleicht hat man sich ja vertippt und wundert sich, wo die Zahl bleibt, die man als Ergebnis erwartet.

Aber ich schlafe noch mal drüber und vielleicht hilft diese Quelle: http://www.amazon.de/Einführung-Philosophie-Mittelalters-Kurt-Flasch/dp/353404570X

Ein sehr schönes Buch das in all den Fällen weiterhilft, wo wir heute noch scheitern.

Gruß

Peter


Am 02.11.2010 10:16, schrieb Robert Nowak:
Hallo Udo,

also, bei aller Wertschätzung sowie Heidegger hin oder Heidegger her!
Eine tiefere Erklärung warum MMA eine Fehlermeldung bei [[]] (Part[])
auf ein nichtexistierendes Element bringt und nicht einfach wie beim
indizieren mittels  [ ] die Sache unevaluiert belässt ist das alles nicht.

In[4]:= a[[3]]
During evaluation of In[4]:= Part::partd: Part specification a[[3]] is
longer than depth of object.>>
Out[4]= a[[3]]
In[5]:= a[3]
Out[5]= a[3]

Als überwiegend funktionale Programmiersprache sollte in MMA Part[a,3]
sich nicht viel anders als z.B. Sin[3] verhalten, doch selbst wenn ich mit:
ClearAttributes[Part, {NHoldRest, Protected, ReadProtected}]
alle Attribute von Part lösche hat es ein anders Verhalten als z.B. Sin[]

Warum ist das so ?



p.s.

Off[Part::partd]
bewirkt die reine nihilierung Heidegger's


LG Robert





Am 30.10.2010 16:17, schrieb Udo und Susanne Krause:
Hallo Robert,

MMA verlangt bei Evaluation von Part[] bzw. [[]] immer ein integer,
weiters muss das betreffende element bereits exixtieren.
Der tiefere Grund hierführ ??????
Ist diese Frage ernst gemeint? Es steht geschrieben

expr[[i]] or Part[expr, i] gives the i-th part of expr.

das bedeutet,
- dass nichtexistierende Teile eines Ausdrucks nicht abgerufen werden
können (das ist recht praktisch, denn die nichtexistierenden Teile
eines Ausdrucks _sind_ (dieses "sind" bedeutet genuines heideggern)
sehr viel zahlreicher als die existierenden Teile) und
- dass die (existierenden) Teile eines Ausdrucks mit 0 und den
natürlichen Zahlen nummeriert werden.

Letzteres ist nicht zwingend, aber üblich auf Rechnern, z.B. die
Sprache C gibt bei der Allozierung von 2 bytes eine Adresse void *p
zurück, an der sich das erste erhaltene byte befindet. Das andere byte
findet man unter p + 1, in einem Array ist p[0] das erste byte und
p[1] das zweite.

Wenn man nicht genau weiss, welche Teilausdrücke man beziehen will,
gibt es noch metaphysiche Funktionen wie Head[], First[], Rest[],
Last[], Most[], All und None, sie erübrigen die Indizierung.

Nun können Sie wohl sagen

Range[19][[All]],

jedoch nicht

Range[19][[None]],

letzteres könnte im weitesten Sinne als

Welt \ Range[19] (* sprich: "Die Welt mit Ausnahme von Range[19]" *)

angesehen werden - da alle noch am Streiten sind, was "die Welt" ist,
kommt zu Recht eine Fehlermeldung.

Gruss&  Sorry
Udo.




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

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