DMUG-Archiv 2007

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

Re: Funktion von 5 Argumenten

Hallo zusammen,

Man speichert Argumente und Werte in einer Tabelle

In[1]:= Remove[wtab];
wtab =
{(*  1 *) {{5, 1, 2, 3, 5}, 10},
 (*  2 *) {{6, 4, 2, 3, 4},  2},
 (*  3 *) {{3, 4, 5, 1, 6},  6},
 (*  4 *) {{4, 5, 5, 6, 4},  8},
 (*  5 *) {{5, 3, 4, 3, 5}, 12},
 (*  6 *) {{4, 1, 6, 3, 6},  2},
 (*  7 *) {{2, 6, 6, 2, 1},  0},
 (*  8 *) {{3, 5, 5, 5, 6}, 14},
 (*  9 *) {{6, 3, 5, 3, 3}, 10},
 (* 10 *) {{5, 5, 3, 3, 5}, 16},
 (* 11 *) {{4, 4, 5, 3, 2},  6},
 (* 12 *) {{3, 1, 6, 1, 4},  2}
};

Um eine Funktion zu finden, kann man den Ansatz machen, dass die Argumente linear an der Herstellung des Wertes beteiligt sind. Daraufhin sollte man eine 12 x 12 reguläre Matrix konstruieren, deren erste 5 Spalten die geg. Argumente darstellen. Weitere 7 Spalten sind zu füllen.

Dazu helfen folgende Beobachtungen:
 (1) die Argumente liegen in [1, 6]
(2) die Reihenfolge der Argumente spielt keine Rolle, da in der Wertetabelle keine Beispiele sind, bei denen sich die Argumente nur bzgl. der Reihenfolge unterscheiden.

Um die Unabhängigkeit von der Reihenfolge zu implementieren, fügt man die Anzahl eines Arguments auf seiner Position hinzu und hat 5 + 6 = 11 Spalten. Die letzte Spalte enthält 12 Parameter, um eine reguläre Matrix zu erhalten: eine mögliche Eingabe ist die Anzahl verschiedener Zahlenwerte in den Argumenten, mit anderen Worten

In[4]:= LinearSolve[Flatten /@ ({Identity[#], Table[Count[#, j], {j, 1, 6}], Length[Union[#]]}& /@ First[#]), Last[#]]&[Transpose[wtab]]

Out[4]= {0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0}

Somit besteht die gesuchte Funktion darin, die Anzahl der Dreien unter den Argumenten mit 2 und die Anzahl der Fünfen mit 4 zu multiplizieren:

In[5]:= Clear[f];
f[x__Integer /; Length[{x}] == 5] := 2 (Count[#, 3] + 2 Count[#, 5])&[{x}]

In[16]:= Equal /@ MapAt[f[Sequence @@ #]&, wtab, Table[{o, 1}, {o, Length[wtab]}]] Out[16]= {True, True, True, True, True, True, True, True, True, True, True, True}

Gruss
Udo.

konstruieren Sie eine ganzzahlige Funktion von 5 ganzzahligen positiven Argumenten, die folgende Werte annimmt:

f[5, 1, 2, 3, 5] = 10
f[6, 4, 2, 3, 4] =  2
f[3, 4, 5, 1, 6] =  6
f[4, 5, 5, 6, 4] =  8
f[5, 3, 4, 3, 5] = 12
f[4, 1, 6, 3, 6] =  2
f[2, 6, 6, 2, 1] =  0
f[3, 5, 5, 5, 6] = 14
f[6, 3, 5, 3, 3] = 10
f[5, 5, 3, 3, 5] = 16
f[4, 4, 5, 3, 2] =  6
f[3, 1, 6, 1, 4] =  2


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

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