Research Article

Nonuniform Finite Difference Scheme for the Three-Dimensional Time-Fractional Black–Scholes Equation

Listing 1

MATLAB code for cash-or-nothing.
1 c l e a r ; c l c ;
2 L=200; x v o l=0. 3 ; y v o l=0. 3 ; z v o l=0. 3 ; r=0. 0 3 ; rho xy=0. 5 ; rho yz=0. 5 ;
3 rho zx=0. 5 ;K1=100;K2=100;K3=100;T=0.1 ; dt=0.1 /80;Nt=c e i l (T/dt ) ;
4 h=1;m1=5;m2=5;m3=4; xr=K1+0. 5 h : h :K1+0. 5 h+m1;
5 xr=[ xr (1:end -1) xr(end): 2 h : xr(end)+2hm2 ] ;
6 xr=[ xr (1:end -1) xr(end): 4 h : xr(end)+4hm3 ] ;
7 m4=f l o o r ( (L- xr(end)) /8) ;
8 xr=[ xr (1:end -1) xr(end): 8 h : xr(end)+8hm4 ] ;
9 i f xr(end)<L
10 xr(end)=(xr ( end -1 )+L) / 2 ; xr ( end+1)=L;
11 end
12 x=[ f l i p l r (L- xr ) xr ] ; y=x ; z=x ;
13 Nx=length ( x ) ;Ny=length ( y ) ;Nz=length ( z ) ; hx=d i f f ( x ) ; hy=d i f f ( y ) ;
14 hz=d i f f ( z ) ;
15 U=z e r o s (Nx,Ny,Nz ,Nt+1) ;U( x>=K1, y>=K2, z>=K3, 1 ) =100;V=U;
16 alp=0. 5 ; s=1. 0 /( dtˆ alp gamma(2 - alp ) ) ;
17 ax=z e r o s (1 ,Nx-2 ) ; dx=ax ; cx=ax ;
18 f o r i =2:Nx-1
19 ax ( i -1 )=r x ( i ) hx( i ) /(hx( i -1 ) (hx ( i -1 )+hx ( i ) ) ) . . .
20 - ( x v o l x ( i ) ) ˆ2/(hx ( i -1 ) ( hx( i -1 )+hx ( i ) ) ) ;
21 dx ( i -1 )=s+( x v o l x ( i ) ) ˆ2/(hx( i -1 ) hx ( i ) ) . . .
22 - r x ( i ) ( hx( i ) -hx( i -1 ) ) /(hx ( i -1 ) hx( i ) )+r / 3 ;
23 cx ( i -1 )=- r x ( i ) hx ( i -1 ) /(hx ( i ) (hx ( i -1 )+hx( i ) ) ) . . .
24 - ( x v o l x ( i ) ) ˆ2/(hx ( i ) (hx ( i -1 )+hx ( i ) ) ) ;
25 end
26 dx ( 1 )=dx ( 1 )++2ax ( 1 ) ; cx ( 1 )=cx ( 1 ) - ax ( 1 ) ;
27 ax (Nx-2 )=ax (Nx-2 ) - cx (Nx-2 ) ; dx (Nx-2 )=dx(Nx-2 )++2cx (Nx-2 ) ;
28 bx=ax ; by=ax ; bz=ax ;
29 f o r n=1:Nt
30 F=z e r o s (Nx-2 ,Ny-2 ,Nz -2 ) ;
31 i f n>1
32 f o r j =1:n -1
33 F=F+((n - j+1) ˆ(1 - alp ) - (n - j ) ˆ(1 - alp ) ) (U( 2 :Nx-1 , 2 :Ny-1 , 2 :Nz -1 , j+1) . . .
34 -U( 2 :Nx-1 , 2 :Ny-1 , 2 :Nz -1 , j ) ) ;
35 end
36 end
37 V( : , : , : , n)=U( : , : , : , n) ;
38 f o r j =2:Ny-1
39 f o r k=2:Nz -1
40 f o r i =2:Nx-1
41 bx ( i -1 )=s V( i , j , k , n) - s F( i -1 , j -1 , k -1 ) . . .
42 +( rho xy x v o l y v o l x ( i ) y ( j ) (V( i +1, j +1,k , n)+V( i -1 , j -1 , k , n) . . .
43 -V( i -1 , j+1,k , n) -V( i +1, j -1 , k , n) ) / ( ( hx ( i ) hy( j ) )+(hx ( i -1 ) hy ( j ) ) . . .
44 +(hx( i ) hy( j -1 ) )+(hx ( i -1 ) hy( j -1 ) ) ) . . .
45 +rho yz y v o l z v o l y ( j ) z ( k ) (V( i , j+1,k+1,n)+V( i , j -1 , k -1 , n) . . .
46 -V( i , j -1 , k+1,n) -V( i , j +1,k -1 , n) ) / ( ( hy ( j ) hz ( k ) )+(hy ( j -1 ) hz ( k ) ) . . .
47 +(hy( j ) hz ( k -1 ) )+(hy ( j -1 ) hz ( k -1 ) ) ) . . .
48 +rho zx x v o l z v o l x ( i ) z ( k ) (V( i +1, j , k+1,n)+V( i -1 , j , k -1 , n) . . .
49 -V( i -1 , j , k+1,n) -V( i +1, j , k -1 , n) ) / ( ( hx ( i ) hz ( k ) )+(hx ( i -1 ) hz ( k ) ) . . .
50 +(hx( i ) hz ( k -1 ) )+(hx ( i -1 ) hz ( k -1 ) ) ) ) ;
51 end
52 U( 2 :Nx-1 , j , k , n+1)=thomas3 ( ax , dx , cx , bx ) ;
53 end
54 end
55 U( 1 , 2 :Ny-1 , 2 :Nz -1 , n+1)=2U( 2 , 2 :Ny-1 , 2 :Nz -1 , n+1) . . .
56 -U( 3 , 2 :Ny-1 , 2 :Nz -1 , n+1) ;
57 U( : , 1 , 2 :Nz -1 , n+1)=2U( : , 2 , 2 :Nz -1 , n+1) -U( : , 3 , 2 :Nz -1 , n+1) ;
58 U( : , : , 1 , n+1)=2U( : , : , 2 , n+1) -U( : , : , 3 , n+1) ;
59 U(Nx , 2 :Ny-1 , 2 :Nz -1 , n+1)=2U(Nx-1 , 2 :Ny-1 , 2 :Nz -1 , n+1) . . .
60 -U(Nx-2 , 2 :Ny-1 , 2 :Nz -1 , n+1) ;
61 U( : ,Ny , 2 :Nz -1 , n+1)=2U( : ,Ny-1 , 2 :Nz -1 , n+1) -U( : ,Ny-2 , 2 :Nz -1 , n+1) ;
62 U( : , : ,Nz , n+1)=2U( : , : ,Nz -1 , n+1) -U( : , : ,Nz -2 , n+1) ;
63 f o r k=2:Nz -1
64 f o r i =2:Nx-1
65 f o r j =2:Ny-1
66 by ( j -1 )=s U( i , j , k , n+1) ;
67 end
68 V( i , 2 :Ny-1 , k , n+1)=thomas3 ( ax , dx , cx , by ) ;
69 end
70 end
71 V( 1 , 2 :Ny-1 , 2 :Nz -1 , n+1)=2V( 2 , 2 :Ny-1 , 2 :Nz -1 , n+1) . . .
72 -V( 3 , 2 :Ny-1 , 2 :Nz -1 , n+1) ;
73 V( : , 1 , 2 :Nz -1 , n+1)=2V( : , 2 , 2 :Nz -1 , n+1) -V( : , 3 , 2 :Nz -1 , n+1) ;
74 V( : , : , 1 , n+1)=2V( : , : , 2 , n+1) -V( : , : , 3 , n+1) ;
75 V(Nx , 2 :Ny-1 , 2 :Nz -1 , n+1)=2V(Nx-1 , 2 :Ny-1 , 2 :Nz -1 , n+1) . . .
76 -V(Nx-2 , 2 :Ny-1 , 2 :Nz -1 , n+1) ;
77 V( : ,Ny , 2 :Nz -1 , n+1)=2V( : ,Ny-1 , 2 :Nz -1 , n+1) -V( : ,Ny-2 , 2 :Nz -1 , n+1) ;
78 V( : , : ,Nz , n+1)=2V( : , : ,Nz -1 , n+1) -V( : , : ,Nz -2 , n+1) ;
79 f o r j =2:Ny-1
80 f o r i =2:Nx-1
81 f o r k=2:Nz -1
82 bz (k -1 )=s V( i , j , k , n+1) ;
83 end
84 U( i , j , 2 :Nz -1 , n+1)=thomas3 ( ax , dx , cx , bz ) ;
85 end
86 end
87 U( 1 , 2 :Ny-1 , 2 :Nz -1 , n+1)=2U( 2 , 2 :Ny-1 , 2 :Nz -1 , n+1) . . .
88 -U( 3 , 2 :Ny-1 , 2 :Nz -1 , n+1) ;
89 U( : , 1 , 2 :Nz -1 , n+1)=2U( : , 2 , 2 :Nz -1 , n+1) -U( : , 3 , 2 :Nz -1 , n+1) ;
90 U( : , : , 1 , n+1)=2U( : , : , 2 , n+1) -U( : , : , 3 , n+1) ;
91 U(Nx , 2 :Ny-1 , 2 :Nz -1 , n+1)=2U(Nx-1 , 2 :Ny-1 , 2 :Nz -1 , n+1) . . .
92 -U(Nx-2 , 2 :Ny-1 , 2 :Nz -1 , n+1) ;
93 U( : ,Ny , 2 :Nz -1 , n+1)=2U( : ,Ny-1 , 2 :Nz -1 , n+1) -U( : ,Ny-2 , 2 :Nz -1 , n+1) ;
94 U( : , : ,Nz , n+1)=2U( : , : ,Nz -1 , n+1) -U( : , : ,Nz -2 , n+1) ;
95 end
96 f i g u r e ( 1 ) ; c l f ; colormap ( [ 0 0 0 ] ) ;
97 mesh ( x , y ,U( : , : , min ( f i n d ( z>100) )++1,n+1) ) ;
98 Pr i c e=i n t e rp 3 (y , x , z ,U( : , : , : , Nt+1) ,K1,K2,K3)
99 f u n c t i on x=thomas3 ( alpha , beta ,gamma, f )
100 n=length ( f ) ;
101 f o r i =2:n
102 mult=alpha ( i ) / be ta ( i -1 ) ;
103 be ta ( i )=be ta ( i ) -multgamma( i -1 ) ;
104 f ( i )=f ( i ) -mult f ( i -1 ) ;
105 end
106 x (n)=f (n) / be ta (n) ;
107 f o r i=n -1 : -1 : 1
108 x ( i )=( f ( i ) -gamma( i ) x ( i+1) ) / be ta ( i ) ;
109 end
110 end