📄 impl.m
字号:
function [values,matf]=impl(Smax,M,T,N,r,sig,X)
dS=Smax/M;
dt=T/N;
matf=zeros(M+1,N+1);
vetS=linspace(0,Smax,M+1)';
matf(:,N+1)=max(X-vetS,0);
matf(1,:)=X;
matf(M+1,:)=0;
%preparo la matrice dei coefficienti
veti=0:N;
vetj=0:M;
a=0.5*(r*dt*vetj-sig^2*dt*(vetj.^2));
b=1+sig^2*dt*(vetj.^2)+r*dt;
c=-0.5*(r*dt*vetj+sig^2*dt*(vetj.^2));
coeff = zeros(M-1,M-1);
coeff(1,1)=b(2);
for i=2:M-1
coeff(i,i) = b(i+1);
coeff(i,i-1) = a(i+1);
coeff(i-1,i) = c(i);
end
%risolvo la sequenza di sistemi di equazioni
aux = zeros(M-1,1);
aux(1) = - a(2)*X;
for i=N:-1:1
matf(2:M,i) = coeff \ (matf(2:M,i+1) + aux);
for j=2:M
matf(j,i) = max(matf(j,i),X-(j-1)*dS);
end
end
values = flipud([vetS, matf(:,1)]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -