C Programmierung Übung Hilfe?

... komplette Frage anzeigen

1 Antwort

Für den Algorithmus musst du zunächst t Schätzen, also die Wurzel abschätzen, das kannst du auf Unterschiedliche weisen machen.

Du kannst zB mal Versuchen ein Intervall zu finden in dem die Wurzel liegt, also einfach eine Zahl y beginnend bei 1 Schrittweise zu erhöhen, bis y² > x ist.

Als Schätzwert nimmst du jetzt t = y.

Das ist aber nur eine Möglichkeit einen Beginnende Schätzung zu liefern, du kannst auch einfach x als ersten Schätzwert angeben, du musst eben nur bedenken, dass der Schätzwert möglichst nahe am eigentlich Ergebnis liegen sollte, denn das Newton Verfahren hat nur lokale Konvergenz.

Btw sollte y² = x sein so ist die Aufgabe bereits gelöst.

Wenn du deinen Schätzwert bestimmt hast machst du folgendes:

(t+x/t)/2 = (t²+x)/2

  1. du berechnest t = (t²+x)/2. Gehe zu Schritt 2
  2. du prüftst ob t = x/t, wenn ja dann hast du die Wurzel gefunden, wenn nein dann Wiederholst du Schritt 1 wieder.

Btw du solltest Sinnvollerweise eine Toleranz angeben wie genau du die Zahl haben möchtest.

Du kannst die Abbruchbedingung zB auch so Formulieren:

if(e <= abs((t²-x)/t))

e definierst du als positive kleine Zahl, dein Ergebnis wird also jetzt so genau dass der Fehler kleiner als e ist.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PeterKremsner
18.11.2016, 02:42

Kleiner Fehler es muss e >= abs((t²-x)/t) bedeuten.

0
Kommentar von PeterKremsner
18.11.2016, 03:04

Nur zur Info ich habs mal Implementiert weil mir die Iterationsvorschrift komisch vor kam, also mit dem Mittelwert konvergiert das ganze nicht.

Das Newtonverfahren für die Wurzel wäre nach der Vorschrift:

t_n1 = t_n/2*(3-t_n²)/x

0

Was möchtest Du wissen?