Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2017-08-11
年龄: 32
帖子: 1
声望力: 0 ![]() |
![]()
这是我的程序:
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 就是有关于这个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函数是在程序中已经算出的还是需要在运行之前自行赋值,希望有大神可以帮我解答,我将感激不尽。 |
![]() |
![]() |