Ich habe eine Funktion als parameterabhängiges Integral gegeben:
F(x) = integral_0^1(log(x-y),y) auf dem Intervall [1.5, 2].
Um das Integral zu approximieren, wird die summierte Trapezregel mit einer festen Schrittweite 1/n verwendet. (das wäre dann die Funktion F_n(x). )
Nun soll in Abhängigkeit von n die optimale Schrittweite h zur numerischen Differentiation der Funktion F mittels symmetrischer Differenz [d.h. F'(x) = ((F_n(x+h) - F_n(x-h))/(2h)) ] bestimmt werden.
Meine Frage: Wie kann ich diese finden? Durch Probieren oder geht das auch "systematischer"?
Der Code hat aber zudem noch ein paar Fehler mit quad und der Funktion (d.h. mit dem 'y') selber, die ich bisher noch nicht lösen konnte.
Was muss ich wie ändern?
Generell würde ich erstmal rumprobieren und [edit: mir] merken, in welchem Bereich sinnvolle Ergebnisse kommen. Den Bereich mit ner for-schleife abbilden, Differenzen in einen Vektor und fertig.
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
SNCFf ist unten definiert..in den letzten 4 Zeilen.
Nun habe ich zwar weniger Fehlermeldungen, aber immernoch ein paar Zeilen:
Zitat:
Undefined function 'isfinite' for input arguments of type 'sym'.
Error in quad (line 79)
if ~isfinite(y(1))
Error in sumTrap (line 12)
I=quad(y,a,b);
Also es besteht wahrscheinlich vor allem noch ein Problem mit dem 'y' in der Funktionsdefinition (SNCFf).Oder ist das ok gelöst, wenn ich einfach 'sym y' mache?
Dann besteht nach wie vor ein Problem mit quad..obwohl ich noch nicht genau sehe, was dort falsch sein sollte...
was mich hier ein wenig wundert, ist, dass zwar die Trapezregel angewandt werden soll, aber die Ableitung auftaucht. Warum das? Warum wird überdies von einer optimalen Schrittweite gesprochen, ohne eine Fehlerschranke, welche unterschritten werden soll, anzugeben?!
Das zeigt sofort, dass der Definitionsbereich von F(x) keinen Sinn macht, wenn das Integral nicht auf der komplexen Ebene betrachtet werden soll.
Edit: Entweder ist F(x) = integral_0^1(log(x+y),y) (beachte das "+"!!!) oder es geht hier um komplexe Differenzierbarkeit, was ich allerdings nicht glaube.
So, mein Einwand war unberechtigt. Der Integrand ist tatsächlich nach den ganzen Voraussetzungen immer reell, daher existiert das Riemann-Integral wie gewohnt (im Reellen).
Ich würde damit starten, F_n(x) aufzustellen. Wie sieht dies aus?
Edit: Ich gehe dann mit dir systematisch durch die Aufgabe...
F_n ist ITS im Code, das heisst:
F_n = sum(h/2*(f(x_(i-1) + f(x_i)), i, 0, n)
Nun soll ja eben ein "optimales" h = 1/n gefunden werden, sodass der Unterschied des angegebenen F'(x) und des "genauen" F'(x) minimal wird. Wie gesagt: Ich probierte, das alles in Matlab zu implementieren (siehe letzter Code) und dann zu testen, für welches h dies der Fall ist. Da der Code aber irgendwo noch einen Fehler hat, stecke ich im Moment hier fest...
OK, sei also und es sei .
Nun würde ich gerne zunächst klären, bevor du per Programm verifizieren willst, welche Optimierungsaufgabe tatsächlich dahinter steckt.
Du schreibst: "Nun soll ja eben ein "optimales" h = 1/n gefunden werden, sodass der Unterschied des angegebenen F'(x) und des "genauen" F'(x) minimal wird."
Kannst du das bitte einmal als formale Aussage formulieren?! Dass das korrekt aufgestellt wird, ist wesentlich für diese Aufgabe. Programmieren kommt zum Schluss. Das ist aber keine große Sache, wenn das math. Fundament steht...
...und durch Ableiten von E(h) erhält man dann eben die optimale Schrittweite h_opt = C_f * delta^(1/3). [der Faktor spiele nicht so eine grosse Rolle. In der Vorlesung haben wir die Version hier unten gemacht, im Skript steht jene der zweiten Zeile).
Ja...also haben wir im Grunde die optimale Schrittweite. Nur habe ich noch keine Idee gehabt, wie ich meine Implementation abändern soll.
bevor ich mich weiter damit beschäftige, ist das Thema für dich erledigt?
Grüße, MaFam
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
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.