DMUG-Archiv 2004

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

[Fwd: Re: Antwort: Re: Antwort: Re: symbolic computation]

Sorry, eine Drehung wird durch doubleOne und doubleTwo natürlich im Allgemeinen _nicht_ auf z ausgeführt.


-------- Original Message --------
Subject:        Re: Antwort: Re: Antwort: Re: symbolic computation
Date:   Mon, 02 Feb 2004 22:35:25 +0100
From:   Udo und Susanne Krause <su.krause@XXXXXXX.ch>
To:     RGollreiter@XXXXXXX.de
CC:     demug@XXXXXXX.ch
References:     <OF9D1A394F.61E7E3C7-ONC1256E2E.003C4A64@XXXXXXX.de>



Guten Abend Richard,

Ihrer erneut mit nahezu identischen Worten gestellten Frage

"Wie kann ich jetzt genau die gleiche Aufgabe mit symbolischen Variablen formulieren, also b[i] statt b[[i]] ?"

glaubt man entnehmen zu dürfen, dass Sie Funktionsausdrücke an FixedPoint[] übergeben wollen. Unter Beachtung der für FixedPoint[] notwendigen Strukturgleicheit kann das anhand des Log-Beispiels folgendermassen geschehen:

In[113]:=
Remove[doubleOne, doubleTwo];
doubleOne[x_, y_] := Cos[x] + Sin[y]
doubleTwo[x_, y_] := -Sin[x] + Cos[y]

Diese beiden Funktionen doubleOne und doubleTwo kann man bei autLog abliefern, das neben den numerischen Argumenten z noch funktionale Argumente aut bekommt:

In[120]:=
Remove[autLog];
autLog[{(aut_List)?VectorQ, (z_List)?VectorQ}] :=
{aut, {Re[Log[First[aut][Sequence @@ z] + I*Last[aut][Sequence @@ z]]],
   Im[Log[First[aut][Sequence @@ z] + I*Last[aut][Sequence @@ z]]]}} /;
 Length[aut] == 2 && Length[z] == 2

Probieren wir das aus mit den in der Session bekannten Funktionen und zwei Argumenten:

In[122]:=
autLog[{{doubleOne, doubleTwo}, {paul, klee}}]

Out[122]=
{{doubleOne, doubleTwo}, {Re[Log[Cos[paul] + Sin[klee] + I*(Cos[klee] - Sin[paul])]],
 Im[Log[Cos[paul] + Sin[klee] + I*(Cos[klee] - Sin[paul])]]}}

Bingo. Eentsprechend FixedPoint[autLog, {{doubleOne, doubleTwo}, {1., 1.}}], wobei sich daraus kein Fixpunkt ergeben sollte, weil doubleOne und doubleTwo auf z eine Drehung von z ergeben, aber funktional ist es korrekt.

Beachten Sie, was bei einer falschen funktionalen Formulierung geschieht:

In[126]:=
Remove[autFalseFunctionalLog];
autFalseFunctionalLog[{(aut_List)?VectorQ, (z_List)?VectorQ}] :=
{aut, {Re[Log[Through[(First[aut] + I*Last[aut])[Sequence @@ z]]]],
   Im[Log[Through[(First[aut] + I*Last[aut])[Sequence @@ z]]]]}} /;
 Length[aut] == 2 && Length[z] == 2

In[128]:=
autFalseFunctionalLog[{{doubleOne, doubleTwo}, {paul, klee}}]

Out[128]=
{{doubleOne, doubleTwo}, {Re[Log[Cos[paul] + (I*doubleTwo)[paul, klee] + Sin[klee]]],
 Im[Log[Cos[paul] + (I*doubleTwo)[paul, klee] + Sin[klee]]]}}

doubleTwo wird nicht erkannt sondern als neuer Funktionhead (I*doubleTwo) gesehen, die Definition für doubleTwo kommt nicht zur Anwendung. Sie würden in dem Fall wegen der stehenbleibenden Argumente kein brauchbares Resultat erzielen und FixedPoint[] würde die Arbeit verweigern müssen. Das ist der Punkt. Bei Ihren Versuchen mit rationalen Funktionen f1, f2 muss es eine Stelle geben, an der die Anwendung der Funktionen auf die Argumente nicht gelingt.

Mit den besten Grüssen
Udo.

RGollreiter@XXXXXXX.de wrote:

Hallo Demug,

lassen sie mich das Beispiel von Udo Krause aufgreifen und weiterführen.

Ich schreibe jetzt die Funktion unCoolLog[ ] etwas um und löse
erfolgreich die Fixpunktgleichung:

In[1]:=
Remove[unCoolLog];
unCoolLog[b_]:={Re[Log[b[[1]]+I*b[[2]]]],Im[Log[b[[1]]+I*b[[2]]]]};
FixedPoint[unCoolLog,{1.,1.}]

Out[1]=
{0.318132,1.33724}

Wie kann ich jetzt genau die gleiche Aufgabe mit symbolischen Variablen
formulieren, also b[i] statt b[[i]] ?

Mit freundlichen Gruessen
Richard Gollreiter




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

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