DMUG-Archiv 2004

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

Re: Antwort: Re: symbolic computation

Guten Morgen Richard,

das Problem liegt nicht bei FixedPoint[], sondern in einer vorgängigen Konfusion. So, wie Ihr Beispiel daherkommt, ist immer b1 === b2 (da beide in g[B_] gleich F[a1, a2] gesetzt werden). FixedPoint[] erwartet, dass Urbild und Bild (Argumente und Werte) dieselbe Struktur haben. Welche Struktur das ist, ist FixedPoint[] schnuppe.

Also zum Beispiel ist lt. Manual:
In[7]:= FixedPoint[Log, 1. + I]

Out[7]= 0.3181315052047643 + 1.3372357014306893*I

Das lässt sich als Listeninput einfach nachbilden:
In[12]:= Remove[unCoolLog];
unCoolLog[{b1_Real, b2_Real}] := {Re[Log[b1 + I*b2]], Im[Log[b1 + I*b2]]}

In[14]:= FixedPoint[unCoolLog, {1., 1.}]

Out[14]= {0.3181315052047643, 1.3372357014306893}

Natürlich funktioniert weder FixedPoint[Log, {1., 1.}] noch FixedPoint[unCoolLog, 1. + I]. FixedPoint[Log, 1 + I] does not return too because it nests unevaluated and SameQ does correctly not find Log[Log[1 + I]] being the same as Log[1 + I], for example.

Wenn B immer sicher eine zweielementige Liste ist, dann ist Ihre Funktion g nichts weiter als:
g[B_] := {F[f1 @@ B, f2 @@ B], F[f1 @@ B, f2 @@ B]} /; Length[B] == 2

das Referenzproblem (B[i] oder B[[i]]) besteht also nicht wirklich für g, denn
In[17]:= laber @@ {x, y, y}

Out[17]= laber[x, y, y]

wobei f1, f2 und F in der Session bekannt sein müssen, sonst geht es auch wieder nicht. Über das F müsste nachgedacht werden und welcherart f1 und f2 zusammengebaut werden, dort sollte ein Struktur- oder einfacher gesagt, ein Verschachtelungsproblem vorliegen.

Mit den besten Grüssen
Udo.

RGollreiter@XXXXXXX.de wrote:

Hallo Demug,

lassen Sie mich bitte meine Frage am konkreten
Problem darstellen. Hierzu abstrahiere ich meine
Aufgabenstellung, um die Form deutlich zu machen.

Ich möchte eine Fixpunkt-Gleichung g:R^2 -> R^2
lösen. Ich formuliere sie in MMA so

In[1]:=
g[B_]:=Module[{b1,b2},

 a1=f1[B[[1]],B[[2]]];
 a2=f2[B[[1]],B[[2]]];

 b1=F[a1,a2];
 b2=F[a1,a2];

 Return[{b1,b2}];
];

Zur Funktion F:R^2->R existiert keine geschlossene
Lösung, diese wird ebenfalls in MMA numerisch
ermittelt.

Die Funktionen f1, f2 :R^2->R möchte ich dynamisch,
also erst zur Laufzeit berechnen. Es sind rationale
Funktionen in den Variablen B[[1]] und B[[2]].

Zur Lösung der Fixpunktgleichung verwende ich die MMA
Funktion FixedPoint[] mit geeigneten Anfangsbedingungen
B0.

In[2]:=
B0 ={0,0};
FixedPoint[g, B0]


Nun zum aktuellen Diskussionsstand. Ersetze ich B[[i]]
durch B[i] in der MMA-Definition von g so verweigert
die Funktion FixedPoint ihre Arbeit.

Wie sollte ich das richtig definieren?

Gruss
Richard Gollreiter





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

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