|
|
fzero-Funktion mit Vektoren |
|
Alex-München |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.01.2010, 22:37
Titel: fzero-Funktion mit Vektoren
|
 |
Hallo,
ich versuche mich erfolglos an der fzero Funktion .
Das ist aus der Finanzmathematik. Gesucht ist das sigma für m Transaktionen.
- m gibt die Anzahl an Transaktionen wieder (20)
- debt_differenz(sigma) besteht aus m Werten, die abhängig von sigma sind.
Das sigma ist gefunden, wenn die Differenz 0 wird. Ich habe rausgefunden das dieses Problem mit Hilfe der fzero Funktion gelöst werden kann.
Leider komme ich mit der Anwendung nicht zurecht:cry:
Wer cool, wenn mir jemand helfen könnte, ich bin schon am verzweifeln.
Vielen Dank,
Alex[/code]
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 10:12
Titel:
|
 |
Hallo,
ich steige bei deiner Anwendung auch nicht ganz durch.
Wieviele Ein- und Ausgabeargumente hat debt_differenz? Insbesondere: sollte der Ablauf von i abhängen?
Hat debt_differenz Zufallselemente? Falls nicht, wirst du m Mal dasselbe Ergebnis bekommen.
Bekommst du eine Fehlermeldung oder unerwartete Ergebnisse?
Grüße,
Harald
|
|
|
Alex-München |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 12:11
Titel:
|
 |
|
 |
|
Hey Harald,
also, ich habe insgesamt 20 Transaktionen, von denen ich jeweils die implizite Volatilität (sigma) bestimmen soll.
Ein vorgegebener Datensatz gibt mir die Schulden (debt) und alle anderen Werte die ich zur Berechnung von sigma brauche wieder.
Ich habe nun eine eine Funktion debt_differenz(sigma) geschrieben, die mir für alle 20 Transaktionen, die Differenz aus geg. Schulden (Werte aus Datensatz) und Schulden abh. von sigma (aus einer der Black-Scholes-Formel ähnlichen-Formel) geschrieben.
Gebe ich im command-window z.B. debt_differenz(-0.2) ein, so erhalte ich
Ziel ist es nun für jede Transaktion ein sigma zu finden, so dass jede der 20 Differenzen 0 ergibt.
debt_differenz hat keine Zufallsvariablen und ich habe die for-Schleife deshalb verwendet, weil ich ja die im Endeffekt die Nullstellen von 20 verschiedenen Differenzen berechnen möchte.
Bei meinem Ansatz erhalte ich folgende Fehlermeldungen:
Da mache ich wohl irgendeine Endlosschleife. Ich weiß aber auch nicht, wie ich es besser machen soll?
Hast du ne Idee?
Beste Grüße,
Alex
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 12:36
Titel:
|
 |
Hallo,
fzero ist nur für skalare Funktionen geeignet.
Meine Empfehlung: debt_differenz so umschreiben, dass es als zweites Argument die Transaktion annimmt, also der Form
Dann sollte das gehen:
Grüße,
Harald
|
|
|
Alex-München |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 14:06
Titel:
|
 |
Hallo,
es gibt leider immer noch Probleme.
Ich habe debt_differenz so umgeschrieben:
B_T ist dabei das von dir vorgeschlagene I und spiegelt die Schulden der 20 Transaktionen wieder.
debt(sigma) sind die von mir berechneten Schulden abh. von sigma.
Jetzt wende ich for-Schleife an:
und es erscheint folgende Fehlermeldung:
Viele Grüße,
Alex
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 14:10
Titel:
|
 |
Hallo,
es muss auf jeden Fall
heissen.
Schau mal, ob das alle Probleme löst.
Grüße,
Harald
P.S.: Hast du irgendwo globale Variablen?!
|
|
|
Alex-München |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 14:26
Titel:
|
 |
Hallo,
Ja, ich habe sogar sehr viele globale Variablen.
Ich habe alle Werte aus meinem Datensatz umgewandelt und sowohl in jeder Funktion, als auch im command window als global deklariert.
So schaut bei mir jede Funktion (auch die debt_differenz1) wie folgt aus:
Liegt es an den globalen Variablen?
Viele Grüße,
Alex
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 14:39
Titel:
|
 |
Hallo,
globale Variablen sind kein guter Programmierstil, da sie eben überall verändert werden können und man dadurch schnell die Übersicht verliert.
Wenn du das machst, weil zu viele Variablen übergeben werden müssen, wäre eine Alternative, eine Struktur mit allen relevanten Parametern zu erstellen.
Bei deinem vorherigen Code resultierte die merkwürdige Fehlermeldung aus den globalen Variablen. Hast du es denn mit meinem Korrektur-Vorschlag probiert?
Grüße,
Harald
|
|
|
Alex-München |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 15:14
Titel:
|
 |
Hallo,
den Korrekturvorschlag hab ich ausprobiert. Ich hab mir zwar nicht ganz im Klaren wie die B_T, i bzw. I zu setzen sind. Aber ich hab alle Varianten probiert und es kommt immer der selbe Fehler.
Außerdem hab ich mal probiert die fzero Funktion nur für einen Wert (Transaktion) anzuwenden. Das lieferte zwar ein Ergebnis (was wohl falsch ist) und jede Menge Warnungen:
diese Warnung ca. 100 mal und am Ende:
was definitiv falsch ist. Der Durchschnittswert von sigma ist nämlich 0.35.
Vielleicht ist ja vorher schon der Wurm drin. Ich hab mal alles, was ich bisher gemacht habe zusammengefasst.
Das ganze ist Teil meiner Diplomarbeit in der mich zum ersten Mal mit Matlab beschäftige. Das erklärt auch meine enormen Defizite.
Viele Grüße,
Alex
|
|
|
Alex-München |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 15:33
Titel:
|
 |
Die wichtigste Funktion hab ich in der Auflistung vergessen, nämlich die Schulden, abh. von sigma:
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 20:19
Titel:
|
 |
Hallo,
mein Vorschlag wäre, eine Struktur params mit verschiedenen Feldern zu erstellen, und sie jedes Mal mit zu übergeben. Die Anzahl an globalen Variablen ist hier einfach groß und macht das ganze unübersichtlich.
Variablen, die veränderlich sind und vielleicht noch als Übergabeparameter verwendet werden (in deinem Fall z.B. B_T oder sigma) sollten aber auf keinen Fall global sein.
Wenn das Problem die globalen Variablen sind, wird das Problem so lange weiter bestehen, bis MATLAB neu gestartet oder die Variablen explizit gelöscht wurden mit
Wenn die Ergebnisse falsch sind, ist zu vermuten, dass irgendwo in einer Formel ein Fehler ist. Mein Vorschlag wäre, jede der von dir geschriebenen Funktionen mal mit realistischen Werten zu füttern und zu sehen, ob etwas vernünftiges herauskommt. Dabei kann ich dir leider nicht helfen, da ich deine Anwendung nicht kenne / verstehe (und das ist wohl auch nicht der Sinn der Sache).
Grüße,
Harald
|
|
|
Alex-München |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.01.2010, 20:46
Titel:
|
 |
Hallo Harald,
danke für deine Hilfe.
Die fzero-Funktion läuft endlich.
Nur die Ergebnisse lassen zu wünschen übrig, aber das liegt wohl an den Eingangsdaten aus dem Datensatz.
Viele Grüße,
Alex
|
|
|
|
|
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.
|
|