• 回答数

    0

  • 浏览数

    2891

  • 收藏数

    0

作者:爱鈊 发表于 2018-12-6 14:30:41
跳转到指定楼层
这是我的程序:
1 .VsigV .m:
function y=VsigV(x)
global B T E e p;
V=x(1);
v=x(2);
y(1)=V*normcdf((log(V/(p*B))+0.5*v^2*T)/(v*T^(1/2),0,1)-p*B*normcdf((log(v/(p*B))-0.5*v^2*T)/(v*T^(1/2)),0,1)-E;
y(2)=v*V*normcdf((log(V/(p*B))+0.5*v^2*T)/(v*T^(1/2)),0,1)-e*E;

2 .RV64 .m:
clc
clear all
global B T E e p;
[BB]=xlsread('D:\RV64.xls','C2:C81');
[TT]=xlsread('D:\RV64.xls','D2: D81');
[EE]=xlsread('D:\RV64.xls','E2:E81');
[ee]=xlsread('D:\RV64.xls','F2:F81');
[pp]=xlsread('D:\RV64.xls','G2:G81');
[kk]=xlsread('D:\RV64.xls','H2:H81');
%读取变量数据

z = zeros(81,2);
G = zeros(81,1);
V = zeros(81,1);
v = zeros(81,1);
FV = zeros(81,2);
EX = zeros(81,1);
for i = 1:64
B = BB (i,1); %存款负债B
T = TT (i,1); %到期时间T
E = EE (i,1); %市场价值E
e = ee (i,1); %股票收益波动率e
p = pp (i,1); %监管宽容系数p
k = kk (i,1); %fsolve初始值k [size=13.3333px]就是有关于这个k我不是很懂,因为没有k的数据,我不知道是自己赋值还是运行之后就会得出。


[z(i,: ),fval,exitflag ]=fsolve('VsigV',[k,0.01] ,optimset('Display','off'));
FV(i,: )=fval;
EX(i)=exitflag;
V(i)=z(i,1);
v(i)=z(i,2);

G(i,1)=normcdf((log(B/V(i))+0.5*v(i)^2*T)/(v(i)*T^0.5),0,1)-V(i)/B*normcdf((log(B/V(i))-0.5*v(i)^2*T)/(v(i)*T^0.5),0,1);
%存款保险费率G
end
xlswrite('D:\RV64.xls',V,'I2:I81')
xlswrite('D:\RV64.xls',v,'J2:J81')
xlswrite('D:\RV64.xls',G,'K2:K81')
xlswrite('D:\RV64.xls',FV,'L2:M81')
xlswrite('D:\RV64.xls',EX,'N2:N81')
%写入求解结果

我其实完全不了解matlab,我也不知道这程序的错误在哪里,输入后得到的问题是,size (kk)=[0,0]
我不知道这个fsolve函数是在程序中已经算出的还是需要在运行之前自行赋值,希望有大神可以帮我解答,我将感激不尽。
分享:
回复

使用道具

成为第一个回答人

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录