> -----Original Message-----
> From: owner-demug@XXXXXXX.ch [mailto:owner-demug@XXXXXXX.ch] On
> Behalf Of Peter Klamser
> Sent: Thursday, October 30, 2003 11:56 PM
> To: Hermann Klocker; demug@XXXXXXX.ch
> Subject: AW: FindRoot 5.0 Problem
>
> Sehr geehrter Herr Klocker,
>
> Sie haben offenbar aus dem Hilfetext von MMA 5.0 die Befehle rauskopiert
> und wollen nun für eine spline einen x Wert für ein vorgegebnes y finden.
>
Stimmt, ich hab das getan, weil das eine Spline-Funktion ist, die jeder
Mmma-Anwender zur Verfügung hat - ich selbst verwende Anwendungsdaten.
> ListPlot[pts // Sort, PlotJoined -> True]
> ParametricPlot[spline[i], {i, 0, Length[pts] - 1}]
> Show[%, %%]
>
> Man sieht im Hilfstext, dass spline nicht eine Funktion von x sondern eine
> Funktion von i ist, wenn gilt
[...]
>
> Aber die entscheidende Frage ist doch: Welchen Wert soll eigentlich
> FindRoot zurückgeben, wenn y=0 ist? 0 oder 3?
>
> Es handelt sich eben um eine Relation und nicht um eine Funktion.
>
Das stimmt schon - FindRoot sollte ganz einfach über den Startwert die
mögliche Lösung selektieren (dass so was furchtbar schief gehen kann ist mir
auch klar) - in diesem Beispiel gibt es für mein Problem die Lösungen {0,
1.50811, 3} für die Parameterwerte, bei denen x=0 wird.
Das Problem war, dass FindRoot unabhängig von den vorgegebenen Startwerten
den Wert 0 zurückgegeben hat (in meinem Anwendungsfall sogar immer die
gesuchte Abszisse), ohne dass ich das zuerst bemerkt hätte (keine
Fehlermeldung). Ob das was mit SplineFit zu tun hatte, war mir zu diesem
Zeitpunkt nicht klar - deshalb konstruierte ich das Beispiel.
Mit der von Jens Peer Kuska angegebenen Lösung
foo[u_?NumericQ] := First[spline[u]];
FindRoot[foo[u] == 0, {u, 1.5, 1.6}]
FindRoot[foo[u] == 0, {u, 0, 0.1}]
FindRoot[foo[u] == 0, {u, 2.9, 3.1}]
läuft's jetzt auch wunderbar. Allerdings musste ich noch eine Stelle in
meiner Anwendung suchen (und so wie oben "erweitern"), damit alles lief.
Danke für die hilfreichen Hinweise.
Hermann