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


-- 
Dipl. Ing. (FH) Robert Nowak
IMS Nanofabrication AG
Phone: +43/12144894/32
Fax: +43/12144894/99

begin:vcard
fn:Robert Nowak
n:Nowak;Robert
org:IMS Nanofabrication AG;PGC
adr:;;Schreygasse 3;Wien;Wien;1020;Austria
email;internet:robert.nowak@XXXXXXX.at
title:Dipl. Ing. (FH)
tel;work:+43/12144894/32
tel;fax:+43/12144894/99
url:www.ims.co.at
version:2.1
end:vcard

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

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