Error using surf: Data dimensions must agree

I'm trying to create a surface plot to illustrate the second order Greek, Vera. I have wrote the following function for Vera:
function [Vera] = VERAmodifiedBS(S0,X,T,t,vol,r_base,r_quote)
d1=(log(S0./X)+(((r_base-r_quote)+((vol).^ 2./2)).*(T-t)))/(vol.*sqrt(T-t));
Ndash_d1=normpdf(d1);
Vera=(T-t).*S0.*exp(-r_quote.*(T-t)).*Ndash_d1;
end
This seems to be working fine however I get an error every time I try to plot it. Here is part of my script:
r_baseMAX=0.2;
volMAX=0.5;
r_base = (0:0.001:r_baseMAX);
vol = (0:0.02:volMAX);
[r_base,vol] = meshgrid (r_base, vol);
Vera=VERAmodifiedBS(S0,X,T,t,vol,r_base,r_quote);
figure
surf(r_base,vol,Vera);
S0, X, T being > 0 and t = 0. r_quote is an interest rate of 0.01. Looking in the workspace, r_base is a 26x201 double, vol is the same but Vera is a 26x25 double. I have no idea what could be causing the issue as I have what is essentially the exact same script for Rho and I've never had an issue with it. Any ideas?

 采纳的回答

d1=(log(S0./X)+(((r_base-r_quote)+((vol).^ 2./2)).*(T-t)))./(vol.*sqrt(T-t));
instead of
d1=(log(S0./X)+(((r_base-r_quote)+((vol).^ 2./2)).*(T-t)))/(vol.*sqrt(T-t));

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Numerical Integration and Differentiation 的更多信息

产品

版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by