楼主: yuqibajiao
2713 1

[其他] 有关KMV模型中Matlab代码运行问题 [推广有奖]

  • 4关注
  • 2粉丝

本科生

37%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
1.0194
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
249 点
帖子
86
精华
0
在线时间
93 小时
注册时间
2011-6-9
最后登录
2019-5-16

楼主
yuqibajiao 学生认证  发表于 2014-6-14 19:48:08 |AI写论文
10论坛币
function[vT,sigmaV]=fun1(D,E,sigmaE,r,sigmaV)
d2=1;
d3=0;
d1=0;
vT=0;
while(1)
sigmaV=E*sigmaE/(D*normcdf(d1)*exp(-r)+E);
d1=d2+sigmaV;
vT=E*sigmaE/(normcdf(d1)*sigmaV);
d3=(log(vT/D)+(r+0.5*sigmaV*sigmaV))/sigmaV-sigmaV;
if(abs(d3-d2)<0.0001)
break;
end
d2=d3;
end
这是源代码,当我调用该代码时第一次我随便带了几个值可以得到结果,可第二次再调用时就没有结果了,具体情况如下截图所示。 求指点,不甚感激。期末论文没几天就要交了,急!!!


附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

最佳答案

wantfly1981 查看完整内容

这是因为你在第二次调用fun1(350963000000,98640462080,0.3752,0.0325,0.3752)程序时,程序陷入死循环,分别在 if(abs(d3-d2)
关键词:matlab代码 MATLAB KMV模型 matla atlab 模型

回帖推荐

wantfly1981 发表于2楼  查看完整内容

这是因为你在第二次调用fun1(350963000000,98640462080,0.3752,0.0325,0.3752)程序时,程序陷入死循环,分别在 if(abs(d3-d2)

沙发
wantfly1981 学生认证  发表于 2014-6-14 19:48:09
这是因为你在第二次调用fun1(350963000000,98640462080,0.3752,0.0325,0.3752)程序时,程序陷入死循环,分别在 if(abs(d3-d2)<0.0001); 和d2=d3; 前面设置断点,可见,d2、d3将在97.6762和-3.4842之间重复跳来跳去,无法满足abs(d3-d2)<0.0001的循环推出条件,因此程序运行后即处于死循环状态。希望能帮到你,急需论坛币啊!!!
已有 1 人评分论坛币 收起 理由
admin_kefu + 50 热心帮助其他会员

总评分: 论坛币 + 50   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-30 21:31