At 09:32 29.04.05 +0200, you wrote:
Hallo!
(#[[2]] - #[[1]]) &[(Plus @@ Interval[{3, 6}, {7, 26}, {29, 30}])]
Was macht das Teil?
@@ ersetzt den Kopf "Interval" durch "Plus" (Addition). (In der englischen
Hilfe "Head".) (Rechnung selbst ist Assoziativgesetz und Kommutativgesetz
der Addition). Dann kriegen wir, da Plus auf Listen anwendbar ist, raus
In[1] := Plus @@ Interval[{3, 6}, {7, 26}, {29, 30}])
Out[1] = {39,62}
Jetzt müssen wir nur noch 39 von 62 abziehen. Man greift auf Listenelemente
mit [[Nummer]] zu, also {39,62}[[1]] ergibt 39. Jetzt kann man eine "Pure
Function" anwenden, um nicht eine Zwischenfunktion definieren zu müssen.
Das geht mit (#[[2]]-#[[1]])&. Das ist gleich einer Definition wie etwa
f[x_List] := x[[2]]-x[[1]]. (Das ":=" bedeutet, daß Mma das nicht sofort
auswertet.) Wenn ich jetzt f nicht definieren will, so mache ich daraus
eine Pure-Function. # = Slot = Argument (siehe Hilfe), mit & wendet man die
Funktion an. Also ist äquivalent f[{39,62}] zu (#[[2]]-#[[1]])&[{39,62}].
Es gibt ja ziemlich gute Bücher zu Mathematica, vielleicht als nette
Einstiegsempfehlung: Die neuen Guidebooks von Michael Trott, fand ich z.B.
sehr schön für eine sanfte Einführung (hier "The Mathematica GuideBook for
Programming", siehe http://www.mathematicaguidebooks.org).
Viele Gruesse, Harald
Liebe Kollegen,
ich habe folgendes Problem in Mathematica: ich würde gerne die Länge
einer IntervalUnion berechnen lassen. Als Ergebnis einer IntervalUnion
bekommt man bekanntlich ein Resultat wie etwa: Interval[{3, 6}, {7, 26},
{29, 30}]. Ich würde nun gerne die Differenzen der Einzelintervalle
berechnen und am besten gleich noch summieren lassen; also:
(6-3)+(26-7)+(30-29). Ich habe keine Ahnung, wie das machbar ist. Ich
habe auch in den Referenzen nichts gefunden. Meine Mathematica-Erfahrung
ist auch noch sehr rudimentär. Für Hilfe wäre ich sehr dankbar.
Herzlichen Gruß,
Dominik Hezel
_________________
Dr. Dominik Hezel
Institut für Geologie und Mineralogie
der Universität zu Köln
Zülpicherstr. 49b
50674 Köln
Tel.: +49 (0221) 470-3197
e-mail: d.hezel@XXXXXXX.de
http://www.cosmochemistry.org