DMUG-Archiv 2015

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

Re: [Dmug] Qualitätsmanagement: theoretische Ergebnisse mit simulierten vergleichen

Hallo Jeany,

Aber schon beim zweiten habe ich so meine Schwierigkeiten.
2) los=If[#<p,0,1]&/@RandomReal[{0,1},LosG]
Was genau bedeutet das Zeichen #? In der Hilfe steht das erste Argument? Ist mit dem ersten Argument der hintere Teil "&/@..." gemeint? Ist das so eine übliche Schreibform?

Ja, das ist eine übliche Schreibform für 3 Dinge:
(1) eine Argumentstelle: #
(2) die Definition einer reinen Funktion: & (das unbenannte ("reine") Argument ist im Fall #)
(3) das Map[] Kommando: /@


Eine gute Idee, um zu schauen, was passiert, ist der Input mit Symbolen, die nicht evaluieren:

In[1]:= f[a,  #, c]& /@ {b1, b2, b3, b4}
Out[1]= {f[a, b1, c], f[a, b2, c], f[a, b3, c], f[a, b4, c]}

In[2]:= Map[f[a,  #, c]&, {b1, b2, b3, b4}]
Out[2]= {f[a, b1, c], f[a, b2, c], f[a, b3, c], f[a, b4, c]}

In[3]:= f[a,  #, c] & /@ {{b11, b12}, {b21, b22}, {b31, b32}}
Out[3]= {f[a, {b11, b12}, c], f[a, {b21, b22}, c], f[a, {b31, b32}, c]}

In[5]:= f[a,  #, c] & /@ Table[{}, {5}]
Out[5]= {f[a, {}, c], f[a, {}, c], f[a, {}, c], f[a, {}, c], f[a, {}, c]}

f[a,#,c]& wird über die Liste gezogen, auf die Liste abgebildet oder auf jedes einzelne Element der Liste angewendet. Das kann freier gehandhabt werden:

In[6]:= f[a, #, # + #/2] & /@ Range[7]
Out[6]= {f[a, 1, 3/2], f[a, 2, 3], f[a, 3, 9/2], f[a, 4, 6], f[a, 5, 15/2], f[a, 6, 9], f[a, 7, 21/2]}

Was passiert, wenn es falsch geschrieben wird?

In[7]:= f[a,  #, c] /@ {b1, b2, b3, b4}
Out[7]= {f[a, #1, c][b1], f[a, #1, c][b2], f[a, #1, c][b3], f[a, #1, c][b4]}

Klar, die b's sind nicht als Argumente in die "Funktion" f hineingekommen, die bzgl. ihrem unbenannten Argument nicht als Funktion definiert war.

Wenn man es mit mehreren Argumenten zu tun hat:

In[11]:= f[a, #2, #1] & @@@ {{b11, b12}, {b21, b22}, {b31, b32}}
Out[11]= {f[a, b12, b11], f[a, b22, b21], f[a, b32, b31]}

Dabei wurde kein Map, sondern das Apply verwendet, die b's sind vertauscht.

Hier sind noch mehr Beispiele
http://reference.wolfram.com/language/ref/Slot.html
http://reference.wolfram.com/language/ref/Function.html

Habe ich nämlich vorher noch nie gesehen.

Dann schau' in das virtuelle Buch
http://reference.wolfram.com/language/tutorial/VirtualBookOverview.html


Die nächste Frage, die sich mir stellt ist, ob die unter 1) erzeugten 80 Zz mit dem Befehl 2) unten übereinstimmen sollen?

Antwort nein. Befehl 1) und 2) erzeugen die Zufallszahlen, die sie verwenden, jeweils von Neuem.

Sprich wenn oben z.B eine 0,002 herausgekommen ist, dann soll unter 2) eine 0 geliefert werden? Ich habe beide Ergebnisse Outputs ( 1) und 2)) verglichen und eben nicht die erwarteten Ergebnisse unter 2)erhalten? Somit meine Frage, werden unter 2) neue ZV erzeugt?

Genau so ist es.

Dann ist es klar, dass die Ergebnisse nicht mit 1) übereinstimmen können.

Korrekt.

Hätte jetzt aber gedacht dass das Zeichen # sich auf den letzten Output bezieht?

Nein, auf den letzten Output bezieht sich das % Zeichen:

In[13]:= Sqrt[3 3 3 3 3 3 3 3]
Out[13]= 81

In[14]:= %^2
Out[14]= 6561

In[15]:= 3^8
Out[15]= 6561


http://reference.wolfram.com/language/ref/Out.html


Gruss
Udo.
_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html

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

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