Stuttgart, den 3. Mai 2005
Sehr geehrter Herr von Aschen,
vielen Dank, dass Sie einmal die Konstruktion einer solchen
Funktion schrittweise und recht verstaendlich erklaert haben !
Es waere erfreulich, wenn man das oefter so machen wuerde, denn
sehr oft sind die Anfragen ja Fragen von Anfaengern, die
Erklaerungen mehr als noetig brauchen koennen - vor allem, wenn
sie selbst darauf hinweisen !
Mit freundlichen Gruessen,
Gunter Woysch
------
> Date: Sun, 01 May 2005 21:41:57 +0200
> To: "Dominik Hezel" <d.hezel@XXXXXXX.de>,
<demug@XXXXXXX.ch>
> From: Harald von Aschen <harald.von.aschen@XXXXXXX.de>
> Subject: Re: Länge einer IntervalUnion (eines Intervals)
>
> 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
>