Nullstellen finden(Newton?)

Neue Frage »

Pfirsich Auf diesen Beitrag antworten »
Nullstellen finden(Newton?)
Hallo,

ich soll von einer gleichung nullstellen finden und dabei das newton verfahren anwenden, bzw laut google ist es wohl eine abgewandelte form:

Xn= Xn-1 - f(Xn-1)/f ' (Xn-1)

Leider habe ich keine ahnung wie man diese Formel anwenden kann. Also klar, ableitung kann ich und ich denke für jedes x der funktion/ableitung Setzte ich dann Xn-1 ein, aber wie komme ich auf n-1 (für x kann ich ja alles einsetzten, aber ich weiß nicht was n bedeutet)

Ich hoffe mir kann jemand helfen,

lieben Gruß, Pfirsich
klarsoweit Auf diesen Beitrag antworten »
RE: Nullstellen finden(Newton?)
n steht für die Anzahl der Iterationsschritte. Du mußt für die Iteration einen Startwert x_0 vorgeben, der schon einigermaßen in der Nähe der vermuteten Nullstelle liegt.
Pfirsich Auf diesen Beitrag antworten »

Ja, da bin ich mir auch nicht sicher. hatte jetzt zb für x=1 den Wert -6 raus und für x=2 den Wert 0,58. Da zwischen 0,58 und - 6 null liegt müsste für einen x wert zwischen 1 und 2 null rauskommen oder?

Also hab ich versuchgt näher dranzukommen: x=1.8 ergibt -0.32 und x=1.9 ergibt 0,17.

Kann ich jetzt 1,8 oder 1,9 als startwert nehmen?....Aber die Anzahl der iterationsschritte kann ich ja nicht vorher oder?
tigerbine Auf diesen Beitrag antworten »

Wie lautet denn die Funktion?
Pfirsich Auf diesen Beitrag antworten »

f(x)= 2+ (x-3)^3 * Wurzel(x)

Augenzwinkern
tigerbine Auf diesen Beitrag antworten »



Klarsoweit sagte schon, dass man "in der Nähe" der Nullstelle starten sollte. Den Wert -6 verstehe ich nun nicht so ganz, aber du siehst schon mal das es (mind) 2 Nullstellen gibt.
 
 
Pfirsich Auf diesen Beitrag antworten »

Wenn man in die gleichung 1 einsetzt kommt doch -6 raus?

Dein Graph bestätig meine annahme zu der einen nullstelle, die andere liegt wie es auch zu meiner wertetabelle passt zwischen null und eins.

Ich hab aber immer noch nicht verstanden wie ich die genaue nullstelle ausrechne.kann ich schreiben:

Xn= Xn-1 - f(Xn-1)/f ' (Xn-1)

1,9 = 1,9-1 - f(1,9-1) / f ' (1,9 - 1)

oder entspricht 1,9 nicht Xn sondern nur x??
tigerbine Auf diesen Beitrag antworten »

Du kannst die Nullstelle nicht ausrechnen, sondern nur approximieren. Du legst im Startwert eine Tangente an die Funktion und bestimmst deren Nullstelle. Das ist deine nächste Näherung.

http://de.wikipedia.org/wiki/Newton-Verf...tion_am_Graphen

Wo ist denn deine Funktion definiert? Kann man also die erste Nullstelle mit dem Verfahren berechnen?

Wie sieht es mit der zweiten aus?
`
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Es wird eine Nullstelle mittels Newton approximiert
Funktion in bisektionf.m anlegen
Ableitung in newtondf.m anlegen
 
Intervall [a,b] eingeben:
a= 1
b= 2
 
Gewünschte Genauigkeit: eps= 10^(-8)
 
Hat die Funktion auf [a_0,b_0] mehrere Nullstellen? (0-ja, 1-nein) 1
Startwert eingeben: x0= 2
 

  x_n+1            x_n           Delta
============================================
  1.849377        2.000000       0.150623 
  1.864173        1.849377       0.014796 
  1.864318        1.864173       0.000146 
  1.864318        1.864318       0.000000 
  1.864318        1.864318       0.000000 
 
 
Genauigkeit erreicht
Pfirsich Auf diesen Beitrag antworten »

achso danke, das war mir auch noch nicht klar.

Ich denke die funktion hat einen definitionsbereich von 0 bis plus unendlich für alle reellen zahlen. aber ich hab keine was das damit zu tun hat ob ich die nullstellen mit diesem verfahren berechnen kann...

Als startwert würde ich wie gesagt 1,9 nehmen. Da muss ich dann eine Tangente anlegen?? Benutze ich dann garnicht die unten genannte gleichung?

Und ehrlich gesagt verstehe ich das was bei dir unter code steht nicht, zb was unter punkt 2 und 3 steht verwirrt

Edit: Achso und ich muss das newton verfahren nehmen sonst würde das nicht in der aufgabe stehen, falls das gerade nicht deutlich rüber kam

Was bei wikipedia steht ist irgendwie eine andere formel, da wird mit xn+1 und nicht mit xn-1 gerechnet...ist wohl irgendwie umgestellt
Felix Auf diesen Beitrag antworten »

Zitat:
Original von Pfirsich
Wenn man in die gleichung 1 einsetzt kommt doch -6 raus?

Dein Graph bestätig meine annahme zu der einen nullstelle, die andere liegt wie es auch zu meiner wertetabelle passt zwischen null und eins.

Ich hab aber immer noch nicht verstanden wie ich die genaue nullstelle ausrechne.kann ich schreiben:

Xn= Xn-1 - f(Xn-1)/f ' (Xn-1)

1,9 = 1,9-1 - f(1,9-1) / f ' (1,9 - 1)

oder entspricht 1,9 nicht Xn sondern nur x??



Was du hier gemacht hast, ist sicher falsch denn soweit ich weiß, ist es nicht
sondern .

Sei := 1,9. Dann ergibt sich : .

Das berechnest du und du hast einen Wert für x1. Dann berechnest du x2 nach dem selben Verfahren und so weiter, je nachdem welche Genaugikeit gewünscht ist.

@ Edit:

Statt kann man natürlich auch schreiben.
tigerbine Auf diesen Beitrag antworten »

2:, 3: sind nur Infos für den Benutzer. Das Programm muss doch die Funktion und Ableitung erstmal kennen. wichtig ist nur die Tabelle für dich.

Beim Newton Verfahren liegt der Haken im Kleingedruckten. Es konvergiert nur in einer Umgebung der Nullstelle. Die Umgebung für deine zweite ist recht groß, die für die erste eher klein. Wir müssen schon einmal so nah dran sein, dass die Tangente eine pos. Nullstelle hat, denn neg Werte können wir nicht mehr in die Iteration einsetzen und das Verfahren bricht ab.
Pfirsich Auf diesen Beitrag antworten »

@ Felix
Danke, ich meinte die Formel auch so wie du es aufgeschrieben hast, aber ich hab das programm dafür nicht mehr.

Rechnet man denn tatsächlich mal n+1 bzw n-1 oder ist das nur eine formale sache? In deinem Beispiel konnte ich das jedenfalls nicht erkennen.

Welche zahlen nehme ich denn zu berechnung von x2? ich muss sicher irgendwas an der 1,9 ändern?


@tigerbine: achso, wusste nicht dass es sich um ein programm handelt. Die tabelle verstehe ich aber ehrlich gesagt auch nicht. Also zb wie man von x_n+1 auf x_n kommt
tigerbine Auf diesen Beitrag antworten »

Nein, die Tabelle tabelliert die Werte für die Rekursionformel:



Deswegen muss man ja auch einen Startwert eingeben. In der letzten Spalte steht die Differenz von
Pfirsich Auf diesen Beitrag antworten »

Hm ok versteh ich nicht Augenzwinkern Wofür braucht man denn den delta wert? Der komtm doch in der formel nicht vor!
tigerbine Auf diesen Beitrag antworten »

Wann willst du denn aufhören zu iterieren? Augenzwinkern
Pfirsich Auf diesen Beitrag antworten »

hm das ist nicht vorgegeben aber ich denk mal ich brauch den taschenrechner und der kann maximal 10 stellen anzeigen

achso, das war jetzt drauf bezogen Hammer
ja klar bei null...aber die letzten reihen sind identisch...?
Felix Auf diesen Beitrag antworten »

Zitat:
Original von Pfirsich
@ Felix
Danke, ich meinte die Formel auch so wie du es aufgeschrieben hast, aber ich hab das programm dafür nicht mehr.

Rechnet man denn tatsächlich mal n+1 bzw n-1 oder ist das nur eine formale sache? In deinem Beispiel konnte ich das jedenfalls nicht erkennen.

Welche zahlen nehme ich denn zu berechnung von x2? ich muss sicher irgendwas an der 1,9 ändern?



Naja Wenn du für 1,9 einsetzt und das ausrechnest dann bekommst du einen Wert für , den du dann einsetzt und ausrechnest um zu bekommen es geht so weiter und die Werte die du bekommst, werden immer näher an der Nullstelle liegen(vorrausgesetzt, dein Startwert ist nah genug gewählt)

lg
Pfirsich Auf diesen Beitrag antworten »

@Felix: Dankeschön, jetzt weiß ich zumindest was ich machen muss (was ja das wichtigste ist). Die Formel selber mit x und n usw versteh ich noch nicht, aber ich hab die hoffnung noch nicht aufgegeben.
tigerbine Auf diesen Beitrag antworten »

Das liegt nur daan, dass nicht mehr Stellen ausgegeben werden. Intern stimmt die Genauigkeit erst im letzten Schritt. Augenzwinkern
tigerbine Auf diesen Beitrag antworten »

Die erste Nullstelle:



code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
Es wird eine Nullstelle mittels Newton approximiert
Funktion in bisektionf.m anlegen
Ableitung in newtondf.m anlegen
 
Intervall [a,b] eingeben:
a= 0
b= 0.01
 
Gewünschte Genauigkeit: eps= 10^(-8)
 
Hat die Funktion auf [a_0,b_0] mehrere Nullstellen? (0-ja, 1-nein) 1
Startwert eingeben: x0= 0.001
 
  x_n+1            x_n           Delta
============================================
  0.003695        0.001000       0.002695 
  0.005356        0.003695       0.001661 
  0.005547        0.005356       0.000190 
  0.005548        0.005547       0.000002 
  0.005548        0.005548       0.000000 
 
Genauigkeit erreicht
Pfirsich Auf diesen Beitrag antworten »

Ob ihrs glaubt oder nicht ich sitze immer noch an dieser aufgabe

ich habe jetzt mit folgendem gerechnet:

x_0=1,889

x_1= 1,889 - ( f(1,889) / f' (1,889)) = 1,863897996

x_2= X_1 - ( f(x_1) / f'(x_1)) = 1,86431804

An diesem punkt ist mir dann aufgefallen, dass das ergebnis von der rechnung ziemlich lange bräuchte um null zu werden bzw, dass es überhaupt nicht das ziel ist, dass null rauskommt.

Jetzt ist die Frage: Was ist das ziel?
Muss ich das ergebnis jeder rechnung in die funktion einsetzten um zu sehen wie nah es an der 0 istverwirrt da wäre ausprobieren statt lange zu rechnen doch fast schneller)
oder kann man das direkt mit in die formel einbinden?

Lieben Gruß, Pfirsich

Edit: Hammer Das ist doch das, was du tigerbine eben erklärt hast oder? Ich muss einfach x_2 - x_1 rechnen und hab dann das raus, was bei dir delta heißt (in meinem fall 4,20044 * 10 ^(-4)


Edit2: Meint ihr das reicht? Für x_3 hab ich nämlich den gleichen wert wie für x_2 raus. Mein Taschenrechner hat nunmal nicht mehr stellen, aber ein wert von ~ 0,0004 als nullstelle ist nicht sehr genau unglücklich
tigerbine Auf diesen Beitrag antworten »

1. Das delta sagt, wie weit x_n+1 und x_n auseinanderliegen.

2. Die Iterationsfolge hat ja zum Ziel x_n+1=x_n

3. Das wird in den meisten Fällen nicht 100% übereinstimmen, also muss man entscheiden, wie genau man es gerne hätte. Wenn deine TR genauigkeit erreicht ist, ist eben Schluss. Da wir x berechnen.

4. Je nachdem wie Steil die Funktion in der Nullstelle ist, kann es natürlich sein, dass wir im zugehörten Funktionswertefall viel weiter von der gewünschten "Null" weg sind. Damit müssen wir leben.
mYthos Auf diesen Beitrag antworten »

Zitat:
Original von Pfirsich
...
Für x_3 hab ich nämlich den gleichen wert wie für x_2 raus. Mein Taschenrechner hat nunmal nicht mehr stellen, aber ein wert von ~ 0,0004 als nullstelle ist nicht sehr genau unglücklich


Zumindest 8 Stellen hat der TR, die Nullen vor der eigentlichen Ziffernfolge zählen nicht.
0,0004 stimmt auf keinen Fall, du hättest 0,0055 erreichen müssen.

Vom Startwert 0,00000001 (0 geht nicht, weil sonst in den Nenner 0 kommt) ausgehend, ist nach 6 Iterationsschritten ein Wert erreicht, der sich nicht mehr ändert. Du wirst wohl noch wo einen Fehler drin haben.

[attach]9329[/attach]

mY+
tigerbine Auf diesen Beitrag antworten »

Gruß an den anderen Schlaflosen. Wink

Ich glaube der Threadsteller meint den Funktionswert y und nicht den x-Wert der Nullstelle. Was spukt Excel denn da aus (wenn wir uns ein paar mehr stellen anschauen)
Pfirsich Auf diesen Beitrag antworten »

Zitat:
Original von mYthos
Zitat:
Original von Pfirsich
...
Für x_3 hab ich nämlich den gleichen wert wie für x_2 raus. Mein Taschenrechner hat nunmal nicht mehr stellen, aber ein wert von ~ 0,0004 als nullstelle ist nicht sehr genau unglücklich


Zumindest 8 Stellen hat der TR, die Nullen vor der eigentlichen Ziffernfolge zählen nicht.
0,0004 stimmt auf keinen Fall, du hättest 0,0055 erreichen müssen.

Vom Startwert 0,00000001 (0 geht nicht, weil sonst in den Nenner 0 kommt) ausgehend, ist nach 6 Iterationsschritten ein Wert erreicht, der sich nicht mehr ändert. Du wirst wohl noch wo einen Fehler drin haben.

[attach]9329[/attach]

mY+


Ja, meiner hat 10 Stellen und zeigt damit 4,20044*10^(-4), aber das Problem der zuwenigen stellen liegt ja nicht hier sondern in der vorherigen rechnung, da ich für X_1und X_2 keine genaueren als 10 stellige werte bekomme
Der Wert 4,20044*10^(-4) ist ja die Differenz von x_2 und X_1 und sollte im besten Fall null sein.

Wie schreibt man das dann? Ich muss später nämlich mit nullstellen, also dem x wert weiterrechnen. Sage ich dann x1=X_2? Also, dass ich eine nullstelle bei einem x wert von in meinem fall 1,864318104 hab?

Edit: Den wert für X_6=5.548247322*10^-3 hab ich auch, aber das ist die erste nullstelle, oben hab ich die ganze zeit die zweite berechnet Augenzwinkern
tigerbine Auf diesen Beitrag antworten »

Du sagt, dass die nullstelle ungefähr diesem Wert entspricht. Gekennzeichnet durch
Pfirsich Auf diesen Beitrag antworten »

Danke smile
mYthos Auf diesen Beitrag antworten »

Es stimmt, dass die Differenz zweier nahezu gleicher Werte immer ungenauer wird, je mehr sich die beiden angleichen, das ist eine Eigenheit aller arithmetischen Rechenprogramme, die intern meistens mit einer festen Stellenanzahl rechnen. Aber diese Differenz dient ja nur zum Ausllösen der Abbruchbedingung und mit dieser wird ja nicht weitergerechnet. Da dies ein absoluter Fehler ist, kann man das umgehen, indem man auch den relativen Fehler berechnet, welcher ebenfalls gegen Null gehen soll. Im Excel-Sheet ist auch eine Spalte f(x)/f '(x) zu sehen, die die Konvergenz anzeigt. Auch dieser Wert soll immer kleiner werden.

Dein x muss also ungeachtet der von dir berechneten Differenzen auf jeden Fall zumindest den Wert 0,00554825 annehmen.

Für die zweite Nullstelle gelten die gerade besprochenen Verhältnisse analog!

In Excel ziehe ich die Formelzeile so lange herunter, bis bei x_(n+1) zwei gleiche Zahlenwerte (innerhalb der geforderten Dezimalstellenzahl) erscheinen, das war's.

@bine

Excel kann in diesem Blatt maximal 17 Dezimalstellen anzeigen (wenn man höher formatiert, kommen ab der 18. Stelle lauter Nullen),

x = 0,00554825066804319000

ergibt sich bereits nach der 8. Iteration. Man sieht, dass die Konvergenz recht gut ist.

[attach]9335[/attach]

mY+
tigerbine Auf diesen Beitrag antworten »

Hallo mYthos,

ja die Konvergenz ist hier gut. Die Ausdrucksweise des Threadstellers ist eben etwas verwirrend, da nicht so ganz klar wurde, worauf er sich nun bezog.

Wink
Pfirsich Auf diesen Beitrag antworten »

Zitat:
Original von Felix

Statt kann man natürlich auch schreiben.


Dazu hab ich nochmal ne Frage. Und zwar war die uns vorgegebene Forml die erstere, also x_n= x_n-1 usw

aber wie ich es bisher aufgeschrieben hab, bzw wie es bei euch in den Tabellen stand war doch die 2. formel oder?

Wie würde das mit der ersten gehen? Der startwert war ja immer X_0, also n=0. Wäre damit x_n-1 nicht x_-1??

also:

X_n= X_n-1 - ....
x_0 = 1,9
1,9 = X_n-1 - (f (x_n - 1)) ... aber wie kommt man hier auf x_n-1??? man rechnet ja nicht einfach 1,9 -1, da man in der folgenden, umgestellten rechnung auch nicht einach 1,9 + 1 rechnet sondern damit ja nur der nächste schritt gemeint, ist aber ich kann ja schlecht einen schritt zurück gehen


x_n+1 = X_n...
x_0=1,9
x_1= 1,9 - (f(1,9)/ f ' (1,9)



Edit: Danke, das mit Excel werde ich mir merken. Im moment sollte ich es zwar nicht benutzen, da wir das in der Klausur auch nicht können, aber in zukunft werden wir das sicher auch nutzen.
tigerbine Auf diesen Beitrag antworten »

Das ist nun doch völlig egal. Bei uns heißt der Startwert eben x0, bei dir dann x_-1

Oder ihr nehmt n als natrürliche Zahl an, die ja mit der Eins beginnen, und kommt somit auf x0. Vom Ergebnis macht das keinen Unterschied.
Pfirsich Auf diesen Beitrag antworten »

Nein, egal ist das nicht. Es wäre einfach falsch. Ich darf nämlich nicht die eine formel hinschreiben und dabei die andere verwenden.

Mein problem ist einfach, dass ich nicht weiß, wie dann die Tabelle aussieht, bei euch steht doch links in der spalte immr n und darunter dann 0,1,2 usw, wie würde das bei mir dann aussehen und vor allem wir rechnet man das dann?

du meintest ja gerade schon, anstatt x_0= 1,9 müsste der Startwert bei mir mit X_-1=1,9 bezeichnet werden. Oder meinst du x_n-1? WEil x_-1 als solches kommt ja in der formel nicht vor verwirrt
tigerbine Auf diesen Beitrag antworten »

Zitat:
Original von Pfirsich
Nein, egal ist das nicht. Es wäre einfach falsch. Ich darf nämlich nicht die eine formel hinschreiben und dabei die andere verwenden.


Du musst es wissen. Ich bleibe bei meiner Aussage. unglücklich

Es ist entscheidend wie man von einem Wert zum anderen kommt, und nicht wie ich den Index nenne. Ferner habe ich gefragt, was du für n nehmen darfst. Ist es zuviel verlangt, konkrete Fragen zu beantworten?
Pfirsich Auf diesen Beitrag antworten »

Entschuldige, für mich hörte sich die frage nach n wie eine aussage an.
Ich hoffe, ich habe deine fragerichtig verstanden: Auf n komme ich in dem ich gucke welche zahl möglichst nahe an null liegt. Das mache ich durch ausprobieren, in dem ich zuerest eine wertetabelel von 1bis ca 5 anlege und dann weiter ausprobiere. Laut unserer lehrerin solllen wir folgendes machen, was ich aber nicht verstehe:
"Der startpunkt soll (x_0, f(X_0)) sein, welcher vorzugsweise nah an eienr nullstelle liegt. Mit der iterationsmethode rechnet man x_1 aus, indem man die nullstelle der tangente im startpunkt nimmt."

Ich denke mal damit ist aber einfach nur die formel gemeint
tigerbine Auf diesen Beitrag antworten »

Nein, ich meinte aus welcher MENGE n stammen darf. SOLL n eine NATÜRLICHE ZAHL sein, so ist n=1 der kleinste Wert, so kommst du auf x0 als Startwert.

Wir haben die nat. Erweitert um 0 genommen, kommen somit auch mit unserer Formel dazu den Startwert x0 zu nennen.

Das einzige was sich ändert ist die Bezeichnung in der n-spalte. Wir schreiben 0,1,2, du eben 1,2,3. die WERTE sind GLEICH.
Pfirsich Auf diesen Beitrag antworten »

Achso sorry, das mit den natürlichen zahlen hab ich noch nie verstanden. Wären also kommazahlen bzw brüche keine natürlichen zahlen, richtig?

Aber ich denke für n soll das schon so sein, wie du sagst.

Mein problem hab ich übrigens gefunden, ich gehöre nämlich leider zu den leuten denen -1 + 1 rechnen schwer fällt. So ergeben die formeln natürlich sinn. Ich dachte nur bis gerade noch, ich müsste n weiter in minus rutschen lassen, also n spalte: -1, -2,...und naja ist ja auch egal, hat ja eh keinen sinn ergeben.

Dankeschön nochmal für deine mühe smile : und entschuldigung für meine dummen blockaden Hammer
tigerbine Auf diesen Beitrag antworten »

Schönen Sonntag. Wink
Airblader Auf diesen Beitrag antworten »

Zitat:
Original von Pfirsich
Achso sorry, das mit den natürlichen zahlen hab ich noch nie verstanden. Wären also kommazahlen bzw brüche keine natürlichen zahlen, richtig?


Achtung, es kann sehr wohl so sein, denn



air
tigerbine Auf diesen Beitrag antworten »

Big Laugh Obwohl das links schon ein Bruch ist, nur eben nicht vollständig gekürzt. Also kommt die Linke Seite (Darstellung) nicht in den nat. Zahlen vor.
Airblader Auf diesen Beitrag antworten »

Das wäre aber schon eine sehr tiefgehende Ansicht. In aller Regel würde man



durchaus als 'richtige Aussage' durchgehen lassen. Augenzwinkern

Wobei mMn doch beide das völlig gleiche Objekt beschreiben; nicht unterscheidbar sind ... also kann man überhaupt 'richtigerweise' so penibel sein?

air
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »