MATLAB求解KMV模型?急急急

发布网友

我来回答

1个回答

热心网友

Function F=myfun3(x(1),x(2),R,c1,c2,c3)

d1=(log(x(1)/c1)+(R+x(2)^2))/x(2)

F=[x(1)*normcdf(d1,0,1)-exp(-R)*c1*normcdf(d1-x(2),0,1)-c2;normcdf(d1,0,1)*x(1)*x(2)/c2-c3]

clear all

clc

close all

C=xlsread('G:\毕业设计\计算\600684 珠江实业','计算表格','C2:C13');

E=xlsread(以下格式同上,贴子超过发表*);

F=xlsread();

G=xlsread();

H=1.326+0.53*G;

VE=H.*F+C.*E;

STD=xlsread();

LTD=xlsread();

DP=STD+0.5*LTD;

SigE=xlsread();

rf=xlsread();

%以上我都验证过,都可以成功。

for i=1:12

c1=DP(i); (因为以上数从excel里导进来都是一列一列的,不知道是不是可以这样写。我的数比较多,这里去12个只是试验一下。我就是希望都导进来,最后又能都算出来的可以一起倒回去)

c2=VE(i);
c3=SigE(i);
R=rf(i);
a=fsolve(@(x)F,[10000;0.1])
%初值我是随便设的,我也不知道应该是多少。
VA(i)=a(1,1)
SigA(i)=a(2,1)

end

VA

SigA

出错信息是:Warning: Default trust-region dogleg method of FSOLVE cannot
handle non-square systems; switching to Gauss-Newton method.

> In fsolve at 232
In kmvmycomputer2 at 21

Optimizer appears to be converging to a minimum that is not a root:

Sum of squares of the function values is > sqrt(options.TolFun).

Try again with a new starting point.

a =

1.0e+004 *

1.0000

0.0000

VA =

10000

SigA =

0.1000

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com