楼主: ch守望
6720 10

[问答] 用牛顿迭代法求解方程组 [推广有奖]

  • 2关注
  • 1粉丝

已卖:43份资源

博士生

37%

还不是VIP/贵宾

-

威望
0
论坛币
360 个
通用积分
0.1200
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
9688 点
帖子
216
精华
0
在线时间
344 小时
注册时间
2011-11-27
最后登录
2018-12-11

楼主
ch守望 发表于 2014-4-28 17:04:13 |AI写论文
100论坛币
写论文写到一半出现了一点困难,excel solver似乎不能解决,所以上论坛来向大神们求助了。感觉不会matlab编程是硬伤啊。。
进入正题,下面有一组方程

s=v*n(d1)-k*exp(-rt)*n(d2)
d1=(ln(v/k)+(r+0.5*x^2)*t)/(x*t^0.5)
d2=d1-x*t^0.5
g*s=x*v*n(d1)

n(.)大家应该都知道的吧,,现已知s,k,g,r,t,求解v和x……

大神快来啊。。有兴趣的大神可以消息我。。

写的好可以再加啊!


最佳答案

Xaero 查看完整内容

哥给你提供一个最简版本, 假设VE,SE,D,r,T已知(自己跟你的程序的变量做对应吧) VA0=VE;SA0=SE; %设置初始值。 KMV_eqs=@(x)([x(1)*normcdf((log(x(1)/D)+(r+0.5*x(2)*x(2))*T)/(x(2)*sqrt(T)))-exp(-r*T)*D*normcdf((log(x(1)/D)+(r+0.5*x(2)*x(2))*T)/(x(2)*sqrt(T))-x(2)*sqrt(T))-VE,x(1)*normcdf((log(x(1)/D)+(r+0.5*x(2)*x(2))*T)/(x(2)*sqrt(T)))*x(2)-SE*VE]); %KMV的方程组,要求解的目标 [X,FVAL,Exi ...
关键词:牛顿迭代法 解方程组 方程组 迭代法 解方程 方程组

本帖被以下文库推荐

沙发
Xaero 发表于 2014-4-28 17:04:14
ch守望 发表于 2014-4-30 18:46
well...thx 我去试一下
哥给你提供一个最简版本, 假设VE,SE,D,r,T已知(自己跟你的程序的变量做对应吧)
VA0=VE;SA0=SE;        %设置初始值。

KMV_eqs=@(x)([x(1)*normcdf((log(x(1)/D)+(r+0.5*x(2)*x(2))*T)/(x(2)*sqrt(T)))-exp(-r*T)*D*normcdf((log(x(1)/D)+(r+0.5*x(2)*x(2))*T)/(x(2)*sqrt(T))-x(2)*sqrt(T))-VE,x(1)*normcdf((log(x(1)/D)+(r+0.5*x(2)*x(2))*T)/(x(2)*sqrt(T)))*x(2)-SE*VE]); %KMV的方程组,要求解的目标

[X,FVAL,Exitflag]=fsolve(KMV_eqs,[VA0;SA0])


搞定。
十年一觉扬州梦。
智不足以Academy,才尚不够Industry,[情无力于Life]。

藤椅
ch守望 发表于 2014-4-28 18:31:35
有没有大神啊!!!

板凳
Benlaron 发表于 2014-4-29 17:09:05
这是啥?欧式期权么?

不好意思我还真的不知道n代表什么……正态分布密度函数?

报纸
ch守望 发表于 2014-4-30 10:31:14
Benlaron 发表于 2014-4-29 17:09
这是啥?欧式期权么?

不好意思我还真的不知道n代表什么……正态分布密度函数?
这个是kmv模型用于计算违约距离的,算是从merton模型衍生出来的。
那个的确是正态分布概率密度函数…………

地板
Xaero 发表于 2014-4-30 15:45:53
你不需要真的就按照教材上面写,用Newton法求解方程组。
实际上,把这两个方程写成m文件函数,然后直接用fsolve就能解决问题(当然,初值要比较靠谱)。
十年一觉扬州梦。
智不足以Academy,才尚不够Industry,[情无力于Life]。

7
ch守望 发表于 2014-4-30 18:46:30
Xaero 发表于 2014-4-30 15:45
你不需要真的就按照教材上面写,用Newton法求解方程组。
实际上,把这两个方程写成m文件函数,然后直接用f ...
well...thx 我去试一下

8
ch守望 发表于 2014-5-3 20:54:55
Xaero 发表于 2014-5-1 15:56
哥给你提供一个最简版本, 假设VE,SE,D,r,T已知(自己跟你的程序的变量做对应吧)
VA0=VE;SA0=SE;       ...
我代了一组数据进去,出来的结果是这样的。。

Equation solved, fsolve stalled.

fsolve stopped because the relative size of the current step is less than the
default value of the step size tolerance squared and the vector of function values
is near zero as measured by the default value of the function tolerance.

<stopping criteria details>


X =

   1.0e+05 *

    4.3060
    0.0000


FVAL =

   1.0e-10 *

   -0.5821   -0.0364


Exitflag =

     2

>>

为啥我没看到VA和SA……求帮助~

9
ch守望 发表于 2014-5-4 15:10:58
Xaero 发表于 2014-5-1 15:56
哥给你提供一个最简版本, 假设VE,SE,D,r,T已知(自己跟你的程序的变量做对应吧)
VA0=VE;SA0=SE;       ...
你这个大体上是对的,除了那个D2的符号是负的。。。然后,我自己重新写了一个,这样导师看的时候还清楚点,悬赏就给你啦~

10
Xaero 发表于 2014-5-4 20:02:31
ch守望 发表于 2014-5-4 15:10
你这个大体上是对的,除了那个D2的符号是负的。。。然后,我自己重新写了一个,这样导师看的时候还清楚点 ...
没有错误哈。我只是把那个写在后面了
d2=d1-xxxx
我没有代入进去,而是直接写-xxxx
十年一觉扬州梦。
智不足以Academy,才尚不够Industry,[情无力于Life]。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 17:35