WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Sekantenverfahren mit falschen Rückgabewerten

 

MNKC
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 21.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2018, 19:23     Titel: Sekantenverfahren mit falschen Rückgabewerten
  Antworten mit Zitat      
Hallo zusammen,
meine Aufgabe ist es das Sekantenverfahren zum finden von Nullstellen zu realisieren.
- Als Abbruchkriterium soll ein Schwellwert festgelegt (10^-10) werden
- Die Anzahl der Iterationsschritte soll auf 100 begrenzt werden um eine Endlosschleife zu vermeiden

Code:

% function [px0] = auswertung_newton(x,b,x0)
% berechnet anhand der gegebenen Koeffizienten das Newton Polynom das als
% Funktion f(x) steht.

function [xn,n] = sekantenverfahren(b, x, x0, x1)
fneu = auswertung_newton(x,b,x1);
falt = auswertung_newton(x,b,x0);
xn(1)=x0;
xn(2)=x1;
e=1e-10;                            %Schwelle für Abbruchkriterium
n=2;
nmax=100;

while (abs(xn(n)-xn(n-1)) > e) && n<=nmax
        xn(n+1)= xn(n) - ((xn(n)-xn(n-1)) / (fneu-falt))* fneu;
        falt = fneu;
        fneu = auswertung_newton(x,b,xn(n+1));
        n=n+1;
end
xn=xn(n);
 


Laut Aufgabestellung sollte folgendes Ergebnis kommen:
>> b = [2 1 -0.25 0.25 -0.0881]';
>> x = [1 3 5 6 8];
>> x0 = 0;
>> x1 = 1;
>> [xn,n] = sekantenverfahren(b,x,x0,x1)
--> xn=0.7596..., n=7

In meiner Implementation komme ich zu folgendem Ergebnis:
>> b = [2 1 -0.25 0.25 -0.0881]';
>> x = [1 3 5 6 8];
>> x0 = 0;
>> x1 = 1;
>> [xn,n] = sekantenverfahren(b,x,x0,x1)
--> xn=0.7596..., n=9

Ich verstehe nicht wieso mein Skript erst nach 9 durchläufen zum Ergebnis kommt???

sekantenverfahren.m
 Beschreibung:

Download
 Dateiname:  sekantenverfahren.m
 Dateigröße:  440 Bytes
 Heruntergeladen:  240 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.12.2018, 20:12     Titel:
  Antworten mit Zitat      
Hallo,

warum initialisierst du n = 2?
n = 0 wäre für mich naheliegender, denn am Anfang wurde ja noch nichts gemacht.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
MNKC
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 21.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2018, 20:19     Titel:
  Antworten mit Zitat      
mit n=0 frage ich bei der while schleife einen nicht existierenden wert ab,
insgesamt starte ich ja mit der Berechnung von x(3) das x2 und x1 ja als Startwerte vorgegeben sind.

oder meinst du, dass ich alles umschreiben soll um mit n=0 zu starten?

Viele Grüße
Mladen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.12.2018, 12:42     Titel:
  Antworten mit Zitat      
Hallo,

entweder das, oder am Ende 2 von n abziehen.
Die ersten beiden Werte sind ja noch keine Iterationen.

Alternativ eine separate Zählvariable für die Iterationen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
MNKC
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 21.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.12.2018, 13:54     Titel:
  Antworten mit Zitat      
Werde ich gleich mal ausprobieren und gebe dann eine Rückmeldung ob es geklappt hat!
Vielen Dank für den Vorschlag.


Viele Grüße
Mladen
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.