|
|
Dynamische Programmierung verschachtelter Maximumfunktion |
|
Isimath |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2021, 12:37
Titel: Dynamische Programmierung verschachtelter Maximumfunktion
|
|
Hallo,
ich bin leider ein totaler Neuling was Programmieren angeht.
Ich möchte gern bis zu einem Horizont T>n rekursiv
F(n,x)=max{x/n,(F(n+1,x+1)+F(n+1,x-1))/2)}
berechnen, wobei n>=0 und x eine ganze Zahl bezeichnet und F gegben ist durch
F(T,x)=x/T falls x >= a*T^(1/2)
F(T,x)=f(T,x) falls x< a*T^(1/2)
wobei a eine Konstante und f eine stetige Funktion beschreibt.
Leider gelingt mir die Implemntierung nicht.
Kann mir jemand helfen wie ich diese Rekursion implementiere?
Vielen Dank
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.04.2021, 14:00
Titel:
|
|
Hallo,
Zitat: |
Leider gelingt mir die Implemntierung nicht. |
Poste bitte das, was du versucht hast, und beschreibe genau die konkreten Probleme, auf die du gestoßen bist.
Wenn du nicht weißt, wie du anfangen sollst, empfehle ich das MATLAB Onramp.
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 ;)
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2021, 14:48
Titel:
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.04.2021, 15:02
Titel:
|
|
Hallo,
und was ist funktion? Zudem:
Zitat: |
beschreibe genau die konkreten Probleme, auf die du gestoßen bist. |
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 ;)
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2021, 15:14
Titel:
|
|
Das Problem ist, dass ich hier den Wert (0,0) nicht berechnen kann.
ist eine Methode, in der ich eine stetige Funktion f(n,x) auswerte. Die genaue Definition dieser Funktion würde den Umfang dieser Frage sprengen und hat auch für die Rekursion (hoffentlich) keine Bedeutung
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2021, 15:17
Titel:
|
|
genauer gesagt, ist
die entsprechende Funktion F(T-1,x) oben aus der Fragestellung
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2021, 15:22
Titel:
|
|
Außerdem ist mein Problem, dass diese Rekursion nur für kleine Horizonte t funktioniert.
Gibt es einen Weg dies zu optimieren?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.04.2021, 15:32
Titel:
|
|
|
|
|
Hallo,
wenn ich z.B. funktion(n-1, x) durch (n-1)*x ersetze, scheint alles zu klappen, z.B. rekursion(5,5).
Zitat: |
Das Problem ist, dass ich hier den Wert (0,0) nicht berechnen kann.
funktion(n-1,x) |
Wie rufst du rekursion auf und was ist die Fehlermeldung? Für mich liegt nahe, dass das Problem in funktion liegt.
Zitat: |
die entsprechende Funktion F(T-1,x) oben aus der Fragestellung |
das verschiebt die Frage dann auf f
Zitat: |
Die genaue Definition dieser Funktion würde den Umfang dieser Frage sprengen und hat auch für die Rekursion (hoffentlich) keine Bedeutung |
Ich fürchte schon, dass es eine Bedeutung hat. Wenn es keine oder nur eine eingeschränkte Bedeutung hat, kannst du gerne eine mehr oder weniger stark vereinfachte Funktion angeben. Sie nicht zur Verfügung zu stellen erschwert es aber sehr, dir zu helfen.
Zitat: |
Außerdem ist mein Problem, dass diese Rekursion nur für kleine Horizonte t funktioniert. |
Was heißt "klein", und wie äußert sich das Nicht-Funktionieren?
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 ;)
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2021, 15:50
Titel:
|
|
Das Problem bzgl. der (0,0) ist, dass hier durch 0 geteilt wird bei
Das Problem für große t tritt bereits bei einem Horizont von t=1000 auf. Matlab rechnet bspw. für t=1000 bzgl. dem Punkt (220,12) ewig lange.
Die ''funktion'' habe ich wie folgt implementiert
wobei
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.04.2021, 19:34
Titel:
|
|
Hallo,
Zitat: |
Das Problem bzgl. der (0,0) ist, dass hier durch 0 geteilt wird |
Und was soll in dem Fall das Ergebnis sein? Wie wäre eine zusätzliche Fallunterscheidung?
Zitat: |
Matlab rechnet bspw. für t=1000 bzgl. dem Punkt (220,12) ewig lange. |
Wenn ich das richtig sehe, wären das 2^780 oder ungefähr 6e234 Funktionsaufrufe. Das schafft kein Rechner der Welt in keiner Programmiersprache der Welt.
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 ;)
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.04.2021, 20:11
Titel:
|
|
Leider weiß ich nicht wie eine derartige Fallunterscheidung aussehen soll.
Gibt es eine Möglichkeit die rekursion besser zu machen, sodass man die Methode für größere t berechnen kann?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.04.2021, 20:40
Titel:
|
|
Hallo,
Zitat: |
Leider weiß ich nicht wie eine derartige Fallunterscheidung aussehen soll. |
Du hast doch schon if-Anweisungen in deinem Code?
Zitat: |
Gibt es eine Möglichkeit die rekursion besser zu machen, sodass man die Methode für größere t berechnen kann? |
Ideal wäre natürlich, wenn du ohne eine Rekursion auskommen kannst. Ich wüsste aber nicht wie.
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 ;)
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.04.2021, 12:17
Titel:
|
|
Wie könnte ich denn die Rekursion, iterativ mit einer for-schleife ausdrücken?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.04.2021, 12:36
Titel:
|
|
Hallo,
ich zumindest wüsste (wie gesagt) nicht wie.
Dass sich noch jemand anders in die Unterhaltung einklinkt, ist eher unwahrscheinlich.
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 ;)
|
|
|
|
|
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 - 2024
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.
|
|