DMUG-Archiv 2009

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

Re: Rekursive Definition

Hallo Andreas,

Ich habe mich offenbar missverständlich ausgedrückt. Ich versuche es nochmals mit einer ausführlicheren Darstellung meines Problems (siehe Beilage).

Okay, let's do it again:

26\[CircleTimes]{1, 2} sollte {1, 21} resultieren. {\[Infinity], \[Infinity]} sollte es erst geben, wennFirst[{1, 2}] == First[(n - 1)\[CircleTimes]{x, y} gilt.

Da stand im vorherigen Notebook etwas anderes, nämlich
First[n\[CircleTimes]{1,2}] == First[(n - 1)\[CircleTimes]{x, y}], daher meine erste Antwort zu diesem Thema.

Nun soll also bei First[{1, 2}] == First[(n - 1)\[CircleTimes]{x, y}] das neutrale Element ausgegeben werden. Darin steckt übrigens eine Ungenauigkeit, denn 2\[CircleTimes]{1,2} ist dann bereits {\[Infinity], \[Infinity]}, da 2 - 1 = n - 1 = 1 und 1\[CircleTimes]{1, 2} = {1, 2} gemäss Anfangsbedingung. Man braucht noch n > 2 in der Aussage.

Dann machen wir doch das:

In[4]:= 1\[CircleTimes]{x_,y_}:={x,y}
In[5]:= n_\[CircleTimes]{x_,y_}:=
  If[p = (n - 1)\[CircleTimes]{x, y};
    p[[1]] == x && n > 2,\[GothicCapitalO], Mod[p\[CirclePlus]{x,y},m]
  ]

In[8]:= 26\[CircleTimes]{1, 2}
Out[8]= {1, 21}

In[6]:= 27\[CircleTimes]{1, 2}
Out[6]= {\[Infinity], \[Infinity]}

In[7]:= Table[k\[CircleTimes]{1, 2}, {k, 1, 27}]
Out[7]= {{1, 2}, {2, 19}, {10, 6}, {21, 7}, {14, 12}, {9, 6}, {19,
  12}, {7, 10}, {4, 17}, {20, 18}, {18, 20}, {13, 11}, {11, 2}, {11,
  21}, {13, 12}, {18, 3}, {20, 5}, {4, 6}, {7, 13}, {19, 11}, {9,
  17}, {14, 11}, {21, 16}, {10, 17}, {2, 4}, {1,
  21}, {\[Infinity], \[Infinity]}}

Ihre eigene Implementation

n_\[CircleTimes]{x_, y_} := Module[{start = {x, y}, u, v},
  {u, v} =  Mod[((n - 1)\[CircleTimes]{x, y})\[CirclePlus]{x, y}, m];
          If[u == First[start], \[GothicCapitalO], {u, v}]]

ist verkehrt, weil {u, v} das mögliche Ergebnis des n-ten Vervielfachungsschrittes darstellt (und nicht des (n - 1)-ten, auf den Bezug genommen werden soll).

Zum Schluss bleibt die Frage, warum nicht einfach

 1\[CircleTimes]{x_, y_} := {x, y}
n_\[CircleTimes]{x_, y_} := ((n - 1)\[CircleTimes]{x, y})\[CirclePlus]{x, y};

die Vervielfachung ebensogut darstellt?

Gruss
Udo.


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

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