|
|
Rekursion einer speziellen Funktion in Matlab |
|
Roberzen |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 04.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.06.2009, 17:20
Titel: Rekursion einer speziellen Funktion in Matlab
|
 |
|
 |
|
Hallo liebes goMatlab Forum,
ich bin ein Neuling in Matlab und muss im Rahmen meiner Diplomarbeit einiges damit programmieren. Seit einer Weile hänge ich an einem spezifischen Problem und möchte um eure Hilfe bitten:
Ich möchte eine Rekursion für eine spezielle Funktion programmieren, scheitere jedoch bei der korrekten Umsetzung.
Die Funktion soll mir die Gewichtung für verschiedene Wertpapiere in einem Portfolio ermitteln. Vereinfacht ausgedrückt soll die Gewichtung alpha folgendermaßen ermittelt werden:
n = 1
alpha1 = 1
n = 2
alpha2 = -( alpha1 * Call1) / Call2
n = 3
alpha3 = -( alpha2 * Call2 + alpha1 * Call1) / Call3
n = 4
alpha4 = -( alpha3 * Call3 + alpha2 * Call2 + alpha1 * Call1) / Call4
usw. wobei Call eine andere Funktion darstellt, deren Wert ich aktuell auch korrekt abrufen kann.
Meine Funktion sieht aktuell ungefährt so aus:
function alp = alpha(n)
if n == 0
alp = 0
elseif n == 1
alp = 1
else
alp = (alpha(n-1)*Call(n-1)) / Call(n)
end
function value = Call(variables) etc.
Mein Problem besteht nun darin, dass so nur das erste Glied dieser Kette korrekt ermittelt wird, die dannachfolgenden jedoch keine Berücksichtigung finden.. Ich könnte nun mit einer Änderung von z.B.
else
alp = ((alpha(n-1)*Call(n-1)+alpha(n-2)*Call(n-2)) / Call(n)
Zwar das zweite Glied erfassen, das Problem bleibt jedoch bestehen.
Kann mir jemand weiterhelfen? Ist die Problemstellung ausreichend ausgeführt? Ich gebe gerne mehr Informationen, wenn mir dann jemand weiterhelfen kann =)
Vielen Dank für eure Bemühungen!!
|
|
|
|
|
Bijick |

Ehrenmitglied
|
 |
Beiträge: 914
|
 |
|
 |
Anmeldedatum: 18.06.07
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: R2006b, R2008b
|
 |
|
|
 |
|
Verfasst am: 04.06.2009, 19:24
Titel:
|
 |
Hallo Roberzen,
das Problem liegt darin, dass durch die Rekursion die vorher berechneten Werte nur lokal in der Funktion existierten (jeder in seinem Aufruf), aber nicht zurückgegeben werden. Mein Vorschlag ist ziemlich zusammengestoppelt und nicht schön, ich selbst hätte vermutlich eine for-Schleife genommen. Vielleicht fühlt sich jemand zum Schönmachen berufen.
Hier mein Vorschlag:
Der Aufruf erfolgt mit
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
|
|
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.
|
|