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

Aufgabe

 

DerMannDerHilfeBraucht:D

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2013, 17:59     Titel: Aufgabe
  Antworten mit Zitat      
Guten Tag kann mir evtl. jemand helfen?

Schreiben Sie ein Programm, welches die Nullstelle der Funktion f(x) = (x + 3)2 − 20 zu
einem beliebigen Startwert xo mit dem Newton-Verfahren berechnet:
xi+1 = xi − f(xi)/ f′(xi), i = 0, 1, 2, ...

Geben Sie die (i+1)-ten Zwischenwerte: xi+1, f(xi+1) und |xi+1−xi| der Newton-Iteration
in einer Zeile aus. Programmieren Sie die Funktion und die Ableitung als Matlab-
Funktionen.
Welche Abbruchkriterien kennen Sie? Welches sollte man implementieren? Wie sollte man
normalerweise den Startwert w¨ahlen? Schreiben Sie die Antworten dazu als Kommentar
in Ihr Programm. Testen Sie ihr Programm an einer weiteren Funktion.
(Hinweis: while-Schleife, function/inline, plot)

Bis jetzt habe ich etwas was aber Fehler aufweist, kann mir da jemand helfen und mich korrigieren ?

Code:
clear all;clc;
f=inline('((x+3).^2-20)','x');
f2=inline('2*(x+3)');
grenze=input('Eingabe der Fehlertoleranz: ');
dx=1.1*grenze;
x=(-10:0.5:10);
y=f(x);
plot(x,y,'m-','LineWidth',2);grid on;
title(['f(x)=',char(f)]);
x=input('Eingabe Startwert: ');
while (dx>grenze);
   xn=x-(f(x)/f2(x));
   yn=f(xn);
   dx=abs(xn-x);
   x=(xn);
end
disp(yn,xn,dx);
g=inline('(x-2).^2+5','x');
g2=inline('2(x-2)');
grenze=('Eingabe der Fehlertoleranz: ');
dx=1.1*grenze;
y=f(x);
plot(x,y,'m-','LineWidth',2);grid on;
title(['g(x)=',char(g)]);
x=input('Eingabe Startwert: ');
while (dx>grenze);
   xg=x-(g(x)/g2(x));
   yg=g(xg);
   dx=abs(xg-x);
   x=xg;
end
disp(xg,yg,dx);
 


Vielen Dank im Vorraus!

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Gesplittet: 23.05.2013, 10:52 Uhr von Jan S
Von Beitrag Nullstellen Mit Newton Verfahren Und Grafische Darstellung aus dem Forum Programmierung


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.05.2013, 11:04     Titel: Re: Aufgabe
  Antworten mit Zitat      
Hallo DerMannDerHilfeBraucht,

1. Bitte verwende die Code-Umgebung für Code, da dies besser lesbar ist.
2. Bitte hänge eine neue Frage nicht an einen bestehendes Thema an. Erstens ist sonst unklar, zu welcher Frage eine Antwort gehört, zweitens ist der "beantwortet"-Status sinnfrei und drittens macht das Auseinandersortieren dem Moderatoren zusätzliche Arbeit.
3. Das direkte Kopieren der Aufgabenstellung hat oft das Problem, dass Hausaufgaben oft in unfreundlichem Befehlston formuliert sind: "Schreiben Sie ein Programm...". In einem Forum hört sich das nicht gut an.
4. Wenn Du schreibst, dass dein Programm Fehler aufweist, ist es sinnvoll und effizient, wenn du diese auch erklärst, z.B. die kompletten Fehlermeldungen postest oder den Unterschied zwischen Erwartungen und Resultaten erklärst. Es ist viel leichter einen Verbesserungsvorschlag zu machen, wenn man nicht zuerst das Problem erraten muss.
5. Wurde dir der brutale "clear all; clc;" Header von irgendjemandem empfohlen? Wenn ja, von wem? Das ist nämlich für ein sinnvolles Programmieren nahezu tödlich, weil "clear all" auch alle Breakpoints löscht, so dass man den Code nicht mehr debuggen kann. "clc" lässt dann auch noch die bisherigen Warn- und Fehlermeldungen verschwinden, was auch keine gute Idee ist. Trotzdem findet man das in so vielen Programmen von Matlab-Anfängern, dass es mich immer wieder gruselt.
Nebenbei löscht "clear all" auch alle geladenen Funktionen aus dem Speicher und das Nachladen von der Platte verbraucht viel und unnötig Zeit.

Gruß, Jan
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.