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[,
_List,
_List,
], wobei die Funktion
an Stelle
der Multiplikation und
an Stelle der Addition ausgeführt wird.
Eine äquivalente Formulierung ist @@ Thread [
[
,
]], deren
Ausführungsgeschwindigkeit jedoch ca. 10% langsamer ist.
und
können Tensoren beliebiger Stufe sein, wobei Inner den letzten
Index des ersten Tensors mit dem ersten des zweiten Tensors überschiebt.
Outer[f, ,
,...]
berechnet das verallgemeinerte äußere Produkt mehrerer Tensoren
unter Verwendung der Funktion
.
,,alle möglichen Kombinationen von Elemeten der Listen``
In[3]:= Outer[f,{a, b, c}]
Out[3]= {f[a], f[b], f[c]}
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]}}
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]}}}