Kvôli tomu, že sme výpočet obmedzili na ohraničený interval, musíme k rovnici dodať okrajové podmienky v krajných bodoch. Krajné body zodpovedajú cenám akcie, ktoré sú veľmi malé, blízke nule (x=-L) a cenám, ktoré sú veľmi veľké a približujú sa k nekonečnu (x=L). Pre takéto limitné hodnoty použijeme aproximácie:
Prvý prístup (explicitná schéma) vyzerá byť jednoduchší. Máme začiatočnú podmienku. Z nej vypočítame hodnoty v nasledujúcej časovej vrstve. Tieto použijeme na výpočet riešenia v ďalšej časovej vrstve, atď. Na konvergenciu metódy je však potrebné splnenie podmienky na vzťah časového a priestorového kroku. Táto podmienka môže prakticky viesť k nevyhnutnosti zvoliť veľmi malý časový krok - kvôli konvergencii metódy, nie kvôli tomu, že by sme riešenie potrebovali v mnohých tak blízkych časových okamihoch.
V druhom prístupe (implicitná schéma) riešime na každej časovej vrstve sústavu lineárnych rovníc.
E = 50; r = 0.04; D = 0.12; sigma = 0.4;
L = 2;a parametre delenia:
% priestorova premenna n = 20; h = L/n; % casova premenna T = 1; m = 12; k = T/m;
alfa = (r-D)/(sigma^2) - 0.5; beta = (r+D)/2 + (sigma^2)/8 + ((r-D)^2)/(2*sigma^2);
% x = -L, t.j. cena blizka nule phi = inline('0', 'tau'); % x = L, t.j. cena blizka nekonecnu psi = inline('E*exp(alfa*L + beta*tau).*(exp(L - D*tau) - exp(-r*tau))',... 'E','alfa','beta','L','r','D','tau');a začiatočnú podmienku:
u0 = inline('E*exp(alfa*x).*max(0, exp(x)-1)', 'E','alfa','x');Použitie:
ries = zeros(m+1, 2*n + 1);a body delenia v čase a v priestore:
x = -L:h:L; tau = 0:k:T;Úloha pre vás: Vložte do matice okrajové podmienky a začiatocnú podmienku.
a = -0.5*(sigma^2)*k/(h^2); % pozdlz diagonaly b = 1 - 2*a; % na diagonalePri výpočte prvej časovej vrstvy (teda hodnoty v čase k) máme nasledovnú pravú stranu:
ps = ries(1, 2:2*n)'; ps(1) = ps(1) - a*phi(k); ps(2*n-1) = ps(2*n-1) - a*psi(E, alfa, beta, L, r, D, k);Na riešenie systému rovníc použijeme Gauss-Seidelovu metódu:
Môžete použiť funkciu gs.m: