matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Schulmathe
  Status Primarstufe
  Status Mathe Klassen 5-7
  Status Mathe Klassen 8-10
  Status Oberstufenmathe
    Status Schul-Analysis
    Status Lin. Algebra/Vektor
    Status Stochastik
    Status Abivorbereitung
  Status Mathe-Wettbewerbe
    Status Bundeswettb. Mathe
    Status Deutsche MO
    Status Internationale MO
    Status MO andere Länder
    Status Känguru
  Status Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenUni-NumerikNewton- / Steffensen-Verfahren
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Geschichte • Erdkunde • Sozialwissenschaften • Politik/Wirtschaft
Forum "Uni-Numerik" - Newton- / Steffensen-Verfahren
Newton- / Steffensen-Verfahren < Numerik < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Uni-Numerik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Newton- / Steffensen-Verfahren: Verständnisfrage
Status: (Frage) beantwortet Status 
Datum: 14:33 So 22.03.2015
Autor: Leondema

Aufgabe
Schnittpunktberechnung zweier Funktionen

Hallo,

ich habe 2 Funktionen vorgegeben, deren Schnittpunkt ich mit Hilfe des Newton- und Steffenson-Verfahren berechnen soll.
Die Gerade schneidet die Kurve an drei Stellen.
Durch das Steffens-Verfahren erhalte ich bei Eingabe von entsprechenden Startwerten auch genau diese Schnittpunkte. Wenn ich aber das Newton-Verfahren anwende erhalte ich immer nur einen Schnittpunkt, egal welchen Startwert ich wähle.
Kann mir jemand sagen, wieso das so ist ?

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Liebe Grüße

        
Bezug
Newton- / Steffensen-Verfahren: Antwort
Status: (Antwort) fertig Status 
Datum: 15:17 So 22.03.2015
Autor: DieAcht

Hallo Leondema und [willkommenmr]!


> ich habe 2 Funktionen vorgegeben, deren Schnittpunkt ich
> mit Hilfe des Newton- und Steffenson-Verfahren berechnen
> soll.

Wir können dir mehr helfen, wenn du uns beide Funktionen zeigst.

> Die Gerade schneidet die Kurve an drei Stellen.

Welche Gerade? Kann es sein, dass die eine der zwei Funktionen
eine affine Funktion der Form [mm] $f(x)=a*x+b\$ [/mm] ist?

> Durch das Steffens-Verfahren erhalte ich bei Eingabe von
> entsprechenden Startwerten auch genau diese Schnittpunkte.

Okay, aber du erhälst zunächst nur die [mm] $x\$-Koordinaten [/mm] der Schnitt-
punkte. Wir haben zwei Funktionen [mm] $f\$ [/mm] und [mm] $g\$ [/mm] und wollen die
Schnittpunkte berechnen. Wir suchen demnach alle *möglichen* [mm] $x\$, [/mm]
so dass gilt: [mm] $f(x)=g(x)\$. [/mm] Für die Verfahren betrachten wir dem-
nach die Hilfsfunktion [mm] $h(x):=f(x)-g(x)\$. [/mm] Die Schnittpunkte er-
halten wir erst nach der Berechnung der Nullstellen von [mm] $h\$. [/mm] Ist
dir das klar? Kannst du das sauber modellieren?

> Wenn ich aber das Newton-Verfahren anwende erhalte ich
> immer nur einen Schnittpunkt, egal welchen Startwert ich
> wähle.

Diese Aussage ist falsch. Wähle zum Beispiel als Startwert eine
der anderen Nullstellen. Es kann aber durchaus sein, dass das
Verfahren für alle andere *mögliche* Startwerte nur gegen die
eine Nullstelle konvergiert. Hast du denn schon das Newton-Ver-
fahren auf Konvergenz überprüft?


Gruß
DieAcht

Bezug
                
Bezug
Newton- / Steffensen-Verfahren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 22:15 So 22.03.2015
Autor: Leondema

Hallo DieAcht,

Danke für Deine schnelle Antwort.

Genau eine der beiden Funktionen ist die Gerade und die andere eine Kurve.

( [mm] y(x)=x/pi^2; [/mm]  f(x) =(sin(3.*x)./(x+1)).*exp((cos(x)).^2)   )

Ja das mit der Hilfsfunktion ist mir klar und ich habe bereits mithilfe dieser den einen Schnittpunkt bestimmen können. Da ich das ganze mit Matlab modelliert habe, kann ich durch den Aufruf des Plots auch sehen, dass es noch zwei weitere Schnittpunkte gibt. Außerdem gelingt es mir durch das Steffensenverfahren alle dieser Punkte zu bestimmen.

Ich habe gelesen, dass es möglich ist dass das Newtonverfahren möglicherweise divergiert oder immer nur zu einer Nullstelle konvergiert. Aber was genau meinst Du mit auf Konvergenz überprüft? Dass die Toleranz eingehalten wird ??

Vielleicht liegt genau in dieser Überprüfung der Schlüssel zum Erfolg :-)

Danke



Bezug
                        
Bezug
Newton- / Steffensen-Verfahren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 22:17 So 22.03.2015
Autor: Leondema

y(x) = x/ 2*pi heißt die Funktion sorry..

Bezug
                                
Bezug
Newton- / Steffensen-Verfahren: Antwort
Status: (Antwort) fertig Status 
Datum: 01:15 Mo 23.03.2015
Autor: rmix22

Also mit
     [mm] $y(x)=\br{x}{2*\pi}$ [/mm]
und
     [mm] $f(x)=\br{sin(3*x)}{x+1}*e^{cos^2(x)}$ [/mm]

hat $y(x) - f(x)$, wie dieAcht schon geschrieben, sieben Nullstellen. Eine davon ist trivialerweise x=0, drei sind negativ und drei sind positiv. Hast du bei deiner Aussage, es gäbe nur drei Lösungen, vielleicht nur die positiven gesehen/gemeint.
Ich hab mir jedenfalls schnell den Newton Vierzeiler geschrieben und erhalte für geeignete Startwerte alle sieben Lösungen:

[mm] $\vektor{-4 \\ -3\\-2\\0\\1\\2\\3}$\to\vektor{-3.805\\-3.299\\-2.004\\0\\0.972\\2.381\\2.883}$ [/mm]

An der Konvergenz liegts hier also nicht.
Wie hast du denn das Newton-Verfahren implementiert? In Matlab? Dann poste doch einfach den Code.
Hast du Matlab das Differenzieren überlassen oder hast du es selbst erledigt? Vielleicht ist dabei ein Fehler passiert.

Gruß RMix



Bezug
                                        
Bezug
Newton- / Steffensen-Verfahren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 22:23 Mo 23.03.2015
Autor: Leondema

Hallo rmix22

Du hast vollkommen Recht.. ich habe die Grenzen nicht erwähnt. Es geht mir nur um die positiven Schnittpunkte.
Genau diese drei Punkte habe ich auch bestimmen können. Leider aber nur mit dem Steffensenverfahren. Für das Newtonverfahren komme ich nur auf die erste.

Gerne poste ich den Code, vielleicht kannst du meinen Fehler entdecken

function [x0, y, n_it] = Newtonschnittp(f, df, x0, tol, nmax)
%***********************************************************************
% Nullstellensuche mittels Newton-Verfahren
%***********************************************************************
%
% Input:
% f   - Funktion
% df  - Ableitung von f
% x0  - Startwert
% tol -  gewünschte Toleranz der x-Werte
% nmax - Maximale Zahl der Iterationen
%
% Output:
% x0 - Nullstelle
% y  - Funktionswert bei x0
% n_it - Zahl der benötigten Iterationen

%*******************************

for n_it = 1: nmax
    
   x1 = x0 -  (f(x0)-(x0/(2*pi)))/((df(x0)-(1/(2*pi))));
  
   y = f(x0);    % neuer Funktionswert
  
   if(abs(y)<= tol || abs(x1-x0) < tol)
  
       % Rechnung innerhalb x- oder y-Toleranz beendet
    
      break % -> Abbruch der Schleife, wenn Genauigkeit erreicht
   else
      x0 = x1;
      if (n_it == nmax)
         y = f(x0);

% Rechnung nach Erreichen von nmax unvollständig abgebrochen, da zu wenige Iterationen
   string2 = [mm] sprintf('\nDie [/mm] Zahl von %3.i Iterationen', nmax);
   disp(string2);
   string2 = sprintf('ergab die Näherung x0= %2.8e', x0);
   disp(string2);
   string2 = sprintf('fun(x0) = %2.8e nicht innerhalb der Toleranz [mm] %1.6e\n', [/mm] y, tol);
disp(string2);
   end
end
end





Vielen Dank und liebe Grüße
    

Bezug
                                                
Bezug
Newton- / Steffensen-Verfahren: Antwort
Status: (Antwort) fertig Status 
Datum: 00:34 Di 24.03.2015
Autor: rmix22


> Hallo rmix22
>  
> Du hast vollkommen Recht.. ich habe die Grenzen nicht
> erwähnt. Es geht mir nur um die positiven Schnittpunkte.

Ja, derartige Informationen können enorm hilfreich sein. Ebenso wie die Verwendung des korrekten Formelsatzes. Ich entnehme deinem fehlenden Protest, dass die Funktionsgleichungen tatsächlich so sind, wie von mir angegeben.

> Gerne poste ich den Code, vielleicht kannst du meinen
> Fehler entdecken

> for n_it = 1: nmax
>      
> x1 = x0 -  (f(x0)-(x0/(2*pi)))/((df(x0)-(1/(2*pi))));

Mir ist nicht klar, was du da mit dem pi aufführst.
Sollte es nicht einfach
     x1 = x0 -  f(x0)/df(x0);
lauten?

>    
> y = f(x0);    % neuer Funktionswert

Dann sollte das wohl eher
     y = f(x1);
sein.


> if(abs(y)<= tol || abs(x1-x0) < tol)

Dieses Abbruchkriterium ist ein durchaus übliches. Es kann allerdings sinnvoll sein, für y und x unterschiedliche Toleranzen zu verwenden.
Manchmal ist es zweckmäßiger, auf relative Präzision abzuzielen und nicht auf absloute. Man berechnet also etwa den Absolutbetrag des geschätzten relativen Fehlers [mm] $\left|{\br{x_1-x_0}{x_1}}\right|$ [/mm] und prüft, ob er kleiner als ein vorgegebener epsilon-Wert ist.
Ein weiteres, gelegentlich eingesetztes Abbruchkriterium ist, wenn die Norm von y(x1) nicht mehr kleiner als die Hälfte der Norm von y(x0) ist, dieses dann UND-verknüpft mit der Forderung, dass die Norm von x1-x0 kleiner als ein Toleranzwert ist.

> if (n_it == nmax)
>      y = f(x0);

Kannst du dir schenken, da y weiter oben schon den Wert f(x1) erhalten haben sollte.




Gruß RMix



Bezug
                                                        
Bezug
Newton- / Steffensen-Verfahren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 10:51 Mi 25.03.2015
Autor: Leondema

Hallo,

ich habe nun deine Änderungen in den Code aufgenommen.

Die Funktionseingabe soll allerdings den Toleranzwert enthalten und hat kein vorgegebenes epsilon, sodass diese Variante nicht möglich ist.. oder habe ich etwas falsch verstanden?

Letztendlich erhalte trotz der Anpassungen nach wie vor nur den einen Wert von 0.9724...



Bezug
                                                                
Bezug
Newton- / Steffensen-Verfahren: Antwort
Status: (Antwort) fertig Status 
Datum: 17:55 Mi 25.03.2015
Autor: rmix22


> Hallo,
>  
> ich habe nun deine Änderungen in den Code aufgenommen.
>  
> Die Funktionseingabe soll allerdings den Toleranzwert
> enthalten und hat kein vorgegebenes epsilon, sodass diese
> Variante nicht möglich ist.. oder habe ich etwas falsch
> verstanden?
>  
> Letztendlich erhalte trotz der Anpassungen nach wie vor nur
> den einen Wert von 0.9724...
>

Kaum zu glauben , aber so nicht zu überprüfen.

Poste nochmals die Funktion und vor allem die Ableitung, die du verwendest (diesmal bitte eindeutig lesbar) und auch dein Matlab Skript in der aktuellen Fassung.
Ich gehe davon aus, dass du in etwa die Startwerte verwendest, die ich auch angegeben hatte.
Kann es sein, dass vl durch einen Schreibfehler dein Skript nicht das übergebene Argument x0 als Startwert verwendet sondern eine feste globale Variable?

Gruß RMix


Bezug
                        
Bezug
Newton- / Steffensen-Verfahren: Antwort
Status: (Antwort) fertig Status 
Datum: 00:15 Mo 23.03.2015
Autor: DieAcht


> Hallo DieAcht,
>  
> Danke für Deine schnelle Antwort.
>  
> Genau eine der beiden Funktionen ist die Gerade und die
> andere eine Kurve.
>  
> ( [mm]y(x)=x/pi^2;[/mm]  f(x) =(sin(3.*x)./(x+1)).*exp((cos(x)).^2)  
>  )

*Ich* lese letzteres als

      [mm] f(x)=\frac{\sin(3x)}{x+1}*\exp(cos^2(x)). [/mm]

Ist [mm] y(x)=\frac{x}{2\pi}, [/mm] so hat die Gleichung [mm] $f(x)=y(x)\$ [/mm] sieben Lösungen.

Ist [mm] y(x)=\frac{x}{2}*\pi, [/mm] so hat die Gleichung [mm] $f(x)=y(x)\$ [/mm] vier Lösungen.

(Beide Aussagen folgen aus einem Plot durch WolframAlpha.)

Demnach stimmt irgendetwas oben nicht, denn du sprichst von drei
Schnittpunkten.

(Mit der Maus sind übrigens die Formeln anklickbar, so dass du
das auch ziemlich schnell richtig aufschreiben kannst.)

> Ja das mit der Hilfsfunktion ist mir klar und ich habe
> bereits mithilfe dieser den einen Schnittpunkt bestimmen
> können. Da ich das ganze mit Matlab modelliert habe, kann
> ich durch den Aufruf des Plots auch sehen, dass es noch
> zwei weitere Schnittpunkte gibt.

Du kannst auch gerne deine Matlab-Datei hier hochladen. Es kann
natürlich sein, dass irgendwo ein kleiner Fehler ist.

> Außerdem gelingt es mir
> durch das Steffensenverfahren alle dieser Punkte zu
> bestimmen.

Okay, dann geht es nur noch um das Newton-Verfahren.

> Ich habe gelesen, dass es möglich ist dass das
> Newtonverfahren möglicherweise divergiert oder immer nur
> zu einer Nullstelle konvergiert. Aber was genau meinst Du
> mit auf Konvergenz überprüft? Dass die Toleranz
> eingehalten wird ??

Es gibt verschiedene Arten Konvergenz des Newton-Verfahrens zu
zeigen. Wenn es zum Beispiel in einem Intervall [mm] $I=(a,b)\$ [/mm] genau
eine Nullstelle gibt und [mm] $h'>0\$ [/mm] bzw. [mm] $h''<0\$ [/mm] auf [mm] $I\$ [/mm] gilt, sowie
der Startwert [mm] $x_0\in [/mm] I$ links von der Nullstelle liegt, so kon-
vergiert das Verfahren gegen die Nullstelle. (In diesem Fall
sogar streng monoton wachsend.) Es gibt aber verschiedene Mö-
glichkeiten die Konvergenz zu zeigen und es gibt auch viele
Bücher dazu... Genauer kann man dir nur mit mehr und genauerem
Input helfen.


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Uni-Numerik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.schulmatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]