Funktion mit zwei Variablen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 10:58 Di 19.08.2008 | Autor: | ctevez |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo,
ich bin gerade am MATLABen und bin auf ein Porblem gestoßen bei dem ich nicht weiter komme..
Ich poste mal den Quellcode
function [] = BlackScholesAm(OptionType, SO, K, r, div, T, sig, tau)
%parameter
OptionType =1;%Call = 1, Put =0
SO = 50; %initial asset price
K = 50;%Strike
r = 0.1;%risk free rate of interest
div = 0;%divident yield of underlying
T = 5/12; %= %time of maturity
sig = 0.4; %= 0.2;%votality of underlying
%transformation
x=log(SO/K);
[mm] taumax=0.5*sig^2*T;
[/mm]
[mm] q=(2*r)/sig^2;
[/mm]
[mm] qdiv=2*(r-div)/sig^2;
[/mm]
%gitterfeinheit
h = 0.0159;
nu = 0.5;
dtau = [mm] nu*h^2;
[/mm]
M=ceil(taumax/dtau);
%maximum minimum
Nplus = (M+1)*h;
Nminus = -(M+1)*h;
N = round((Nplus-Nminus)/h);
%create vector of x and tau to identify meshpoints
xvalue = x +[Nplus:-h:Nminus];
tauvalue = [0:dtau:taumax+dtau];
%hochzahlen
vmax=16; %verändern
v=[0:1:vmax];
%matrixwerte
teta=0.5; %in [0,1] 0.5 crank nicholsen
omega=1.15; %in [1,2)
%PSOR-Feinheit
eps=10^(-6);
%w0=zeros(N,1);
%A=zeros(N-1,N-1);
%B=zeros(N-1,N-1);
%c=zeros(N-1,1);
%obstacle function
if OptionType ==1
g(xvalue(i),tauvalue(j))=exp((0.25*(qdiv - [mm] 1)^2 [/mm] + q)*tauvalue(j))*max(exp(0.5*(qdiv +1)*xvalue(i)) - exp(0.5*(qdiv -1)*xvalue(i)), 0);
else
g(xvalue,tauvalue)=exp((0.25*(qdiv - [mm] 1)^2 [/mm] + q)*tauvalue)*max(exp(0.5*(qdiv -1)*xvalue) - exp(0.5*(qdiv +1)*xvalue), 0);
end
g(xvalue,tauvalue)
bis hierhin bin ich, das Problem entsteht in der fkt g.
wenn ich nun ausführe, um mir g anzeigen zu lassen sagt MATLAB:
??? Subscript indices must either be real positive integers or logicals.
Error in ==> BlackScholesAm at 57
g(xvalue(i),tauvalue(j))=exp((0.25*(qdiv - [mm] 1)^2 [/mm] + q)*tauvalue(j))*max(exp(0.5*(qdiv +1)*xvalue(i)) - exp(0.5*(qdiv -1)*xvalue(i)), 0);
liegt das vielleicht am Exponenten oder am falschen Array?
wenn ich die fkt g nur als g(xvalue,tauvalue) schreibe, sagt MATLAB:
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Wenn mir jemand helfen könnte dieses Problem zu lösen, wäre ich sehr dankbar!
Mit freundlichen Grüßen
Jonas
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:57 So 24.08.2008 | Autor: | Hing |
ich denke, dir antwortet keiner, weil keiner 2 seiten listing korrigieren möchte. vielleicht kannst du deine frage ein wenig knapper formulieren?
|
|
|
|
|
Hi,
i und j müssen ganze Zahlen > 0 sein, weil Du die als Index verwendest.
Für xvalue(i) und tauvalue(j) gilt das gleiche.
Ansonsten siehe den Hinweis von hing.
Am Besten Du kürzt das soweit wie möglich, aber so, dass man das ausführen kann und der Fehler noch auftritt.
mfg nschlange
|
|
|
|