|
|
Newton-Verfahren: Ableitung von f bilden |
|
Kings_of_Leon |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 28.11.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.11.2015, 16:27
Titel: Newton-Verfahren: Ableitung von f bilden
|
 |
Hallo Ich möchte zunächst das Newtonverfahren programmieren. Es hängt noch an der Ableitung, durch die man ja teilen muss. Ich wollte mir zunächst nen Vektor mit Nullen vordefinieren, der dann beschrieben werden soll mit den jeweiligen x(i)'s, die ich dann in eine Datei schreiben möchte. Wer kann mir weiterhelfen? der Befehl t=diff(y,x) scheint nicht zu klappen. An was liegt das? Kann es sein, dass ich die x(i)'s erst befüllen muss? Wäre lieb, wenn ihr euch melden könntet.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.11.2015, 18:20
Titel:
|
 |
Hallo,
das Problem dürfte die Vermischung von symbolisch und numerisch sein: du definierst x zunächst symbolisch, dann aber als Double - dann ergibt diff aber keinen Sinn mehr.
Bitte auch immer die erhaltene Fehlermeldung angeben.
Grüße,
Harald
|
|
|
Kings_of_Leon |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 28.11.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.11.2015, 21:28
Titel:
|
 |
Vielen Dank Harald,
habe das syms am Anfang jetzt weggelassen. Trotzdem stimmt was mit der Ableitung noch nicht....ich erhalte immer "Error using diff
Difference order N must be a positive integer scalar.
Error in Aufgabe12 (line 14)
t=diff(f,x);"
Was ist da jetzt falsch? Bin noch kompletter Anfänger was Matlab betrifft und komme gerade an der Aufgabe nicht weiter...
der code ist:
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.11.2015, 23:17
Titel:
|
 |
Hallo,
die Frage sollte sich an sich klären, wenn du die Dokumentation von diff liest. Egal ob Anfänger oder nicht, das Lesen der Doku ist absolut empfehlenswert, wenn man Probleme mit einer Funktion hat.
Was soll denn t nun sein? Es reicht ja nicht, an einer Stelle das syms wegzulassen und an anderen Stellen dann unverändert weiterzuarbeiten, z.B.
f(x(i))
und
t(x)
.
Grüße,
Harald
|
|
|
Kings_of_Leon |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 28.11.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2015, 20:53
Titel:
|
 |
Ok, also ich hab das syms jetzt doch wieder eingeführt und zwar nicht nur für die variable x, sondern auch für die variablen t und f. Aber kannst du mir genau sagen, was das syms macht? Das sieht die Variable ja irgendwie als symbolisch an. Ist da der Vorteil das man somit den Wert an einer Funktion ausrechnen kann?
Wenn ja, könnte man das ohne den Befehl syms nicht?
Nun habe ich aber folgendes Problem:
Ich erhalte für die Zeile
while abs(x(i)-x(i-1)) >= eps || f(x(i))>= eps && i<N
folgende Fehlermeldung
Error in Aufgabe12 (line 19)
while abs(x(i)-x(i-1)) >= eps || f(x(i))>= eps && i<N
Warum? Was ist falsch an der Aussage?
Liebe Grüße und Vielen Dank
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.11.2015, 22:29
Titel:
|
 |
Hallo,
Zitat: |
Aber kannst du mir genau sagen, was das syms macht? |
Es definiert eine Variable als symbolisch. Alle Berechnungen, an denen diese Variable beteiligt ist, werden auch symbolisch ausgeführt.
Zitat: |
Ist da der Vorteil das man somit den Wert an einer Funktion ausrechnen kann? |
An sich eben nicht. Man möchte nicht Werte, sondern Formeln als Ergebnis haben.
Zitat: |
folgende Fehlermeldung
Error in Aufgabe12 (line 19)
while abs(x(i)-x(i-1)) >= eps || f(x(i))>= eps && i<N |
Die Fehlermeldung ist insofern unvollständig, als dass die eigentliche Fehlermeldung fehlt.
Zudem weiß ich nicht, welchen Code du aktuell verwendest.
Grüße,
Harald
|
|
|
Kings_of_Leon |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 28.11.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2015, 22:37
Titel:
|
 |
Ok und wie lautet der Befehl zum Schluss, wenn ich dann doch den Funktionswert an einer bestimmten Stelle haben möchte?
Mein COde lautet:
und die vollständige Fehlermeldung ist:
Index exceeds matrix dimensions.
Error in sym/subsref (line 776)
R_tilde = builtin('subsref',L_tilde,Idx);
Error in Aufgabe12 (line 19)
while abs(x(i)-x(i-1)) >= eps || f(x(i))>= eps && i<N
wobei es line 776 bei mir gar nicht gibt...aber ich glaube das wesentliche ist hier auch eher das "index exceeds matrix dimensions"....also irgendwas mit der dimension von x(i) scheint nicht zu stimmen?!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.12.2015, 19:12
Titel:
|
 |
Hallo,
du vermischt weiterhin syms mit numerisch.
Du definierst x(1), verwendest aber in der ersten Iteration der for-Schleife x(2).
Wenn du symbolische Variablen verwendest, kannst du mit subs Werte einsetzen.
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|