next up previous contents
Nächste Seite: 5 1-d Forest Fire Aufwärts: 4 Funktionale Methoden Vorherige Seite: 4.3 Pure Functions   Inhalt

Unterabschnitte

4.4 Advanced Operators: Inner, Outer

Inner

In[1]:= Inner[f, {a1, b1,..., n1 }, {a2, b2,..., n2},g]
Out[1]= g[ f[a1, a2], f[b1, b2],..., f[n1, n2]]

Euklidsches Skalarprodukt: In[2]:= Inner[Times, {a1,a2,a3}, {b1,b2,b3}, Plus]

Out[2]= a1 b1 + a2 b2 + a3 b3
kürzer: Dot[{a1,a2,a3}, {b1,b2,b3}] oder {a1,a2,a3}.{b1,b2,b3}

Die allgemeine Schreibweise lautet Inner[$f$, $k$_List, $l$_List, $g$], wobei die Funktion $f$ an Stelle der Multiplikation und $g$ an Stelle der Addition ausgeführt wird.

Eine äquivalente Formulierung ist $g$ @@ Thread [$f$ [$k$, $l$]], deren Ausführungsgeschwindigkeit jedoch ca. 10% langsamer ist. $k$ und $l$ können Tensoren beliebiger Stufe sein, wobei Inner den letzten Index des ersten Tensors mit dem ersten des zweiten Tensors überschiebt.

Outer

Outer[f, $List_1$, $List_2$,...]
berechnet das verallgemeinerte äußere Produkt mehrerer Tensoren $List_i$ unter Verwendung der Funktion $f$.
,,alle möglichen Kombinationen von Elemeten der Listen``
In[3]:= Outer[f,{a, b, c}]
Out[3]= {f[a], f[b], f[c]}
$\equiv$ f /@ {a, b, c}

In[4]:= Outer[f, {a,b}, {1, 2, 3}]
Out[4]= {{f[a,1], f[a,2], f[a,3]}, {f[b,1], f[b,2], f[b,3]}}
$\equiv$ Thread[ f[#, {1, 2, 3}] ] & /@ {a,b}

In[5]:= Outer[f,{A,B},{1,2,3},{a,b}]
Out[5]= {{{f[A, 1, a], f[A, 1, b]},
{f[A, 2, a], f[A, 2, b]},
{f[A, 3, a], f[A, 3, b]}},
{{f[B, 1, a], f[B, 1, b]},
{f[B, 2, a], f[B, 2, b]},
{f[B, 3, a], f[B, 3, b]}}}


next up previous contents
Nächste Seite: 5 1-d Forest Fire Aufwärts: 4 Funktionale Methoden Vorherige Seite: 4.3 Pure Functions   Inhalt
Werner Scholz 2000-06-21