Newtonverfahren < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 13:46 Mi 22.06.2011 | Autor: | Nagelfar |
Aufgabe | Erweitern Sie Ihre Funktion newton.m (Newtonverfahren mit Eingabeparametern f, x0 (Startwert), maxiter (maximale Iterationsanzahl), tol) zu newton2.m derart, dass der Benutzer anstatt des Startwerts x0 die Grenzen a, b (reell) eines Intervalls [a; b] vorgibt; die restlichen Argumente bleiben unverändert.
Ihre Funktion soll möglichst viele Nullstellen von f innerhalb des Intervalls [a; b] finden und
in Form eines Vektors z zusammen mit dem Vektor fz der entsprechenden Funktionswerte
zurückgegeben werden. |
Hallo,
also die Funktion newton.m mit dem Newtonverfahren und Starwert x0 funktioniert einwandfrei.
Nur bekomme ich das mit den Grenzen irgendwie nicht hin.
Hab gedacht ich lege die linke Intervallgrenze a als mein "x0" fest und gehe dann in äquidistanten Schritten zu b (würde da eine for-schleife mit k=a:(b-a)/100:b funktionieren?). Aber irgendwie klappt das nicht so. Wenn die Funktion bsp. nahe an eine Extremstelle kommt, klappt nichts mehr..
Irgendwie komm' ich keinen Schritt vorwärts.
Danke für jedwede Tipps
Gruß
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:59 Mi 22.06.2011 | Autor: | wieschoo |
> Erweitern Sie Ihre Funktion newton.m (Newtonverfahren mit
> Eingabeparametern f, x0 (Startwert), maxiter (maximale
> Iterationsanzahl), tol) zu newton2.m derart, dass der
> Benutzer anstatt des Startwerts x0 die Grenzen a, b (reell)
> eines Intervalls [a; b] vorgibt; die restlichen Argumente
> bleiben unverändert.
> Ihre Funktion soll möglichst viele Nullstellen von f
> innerhalb des Intervalls [a; b] finden und
> in Form eines Vektors z zusammen mit dem Vektor fz der
> entsprechenden Funktionswerte
> zurückgegeben werden.
> Hallo,
> also die Funktion newton.m mit dem Newtonverfahren und
> Starwert x0 funktioniert einwandfrei.
> Nur bekomme ich das mit den Grenzen irgendwie nicht hin.
> Hab gedacht ich lege die linke Intervallgrenze a als mein
> "x0" fest und gehe dann in äquidistanten Schritten zu b
> (würde da eine for-schleife mit k=a:(b-a)/100:b
Das funktioniert.
> funktionieren?). Aber irgendwie klappt das nicht so. Wenn
> die Funktion bsp. nahe an eine Extremstelle kommt, klappt
> nichts mehr..
Verräts du noch, was das genau heißt. Du hast doch "maxiter", der in solchen Fällen eingreift.
> Irgendwie komm' ich keinen Schritt vorwärts.
> Danke für jedwede Tipps
> Gruß
>
Vielleicht postest du auch noch deinen Quelltext "newton.m". Bis jetzt kann man nur im Dunkeln tappen und tippen, dass deine Schleife endlos irgendwo wird, sofern ich "klappt nicht" richtig verstanden habe.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:20 Mi 22.06.2011 | Autor: | leduart |
Hallo
mit äquidistanten Schritten würdest du a) mögliche Nst. überspringen oder eben dein problem mit den max haben. stell dir was wie die funktion sin(1/x) vor, a=0.001, b=1
oder [mm]f(x)=\produkt_{i=1}^{n} (x-e/n) \textrm{ n=10 und ausmultipliziert! }[/mm] a=0, b=3
Ich denke du musst einen vorspann haben, der Intervalle mit möglichen Nst ermittelt und dann dein altes erfahren verwenden.
gruss leduart
|
|
|
|