楼主: 小雅要加油
12851 20

[问答] 求助大神,fsolve解非线性方程组!!!求违约距离的~ [推广有奖]

  • 1关注
  • 0粉丝

已卖:11份资源

硕士生

76%

还不是VIP/贵宾

-

威望
0
论坛币
2601 个
通用积分
0.0009
学术水平
3 点
热心指数
5 点
信用等级
0 点
经验
9424 点
帖子
95
精华
0
在线时间
140 小时
注册时间
2012-9-6
最后登录
2018-1-2

楼主
小雅要加油 发表于 2013-9-1 20:26:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
本人初入matlab,现在做论文,需要用到KMV模型里面求解违约距离的,所以要用到非线性方程组求解上市公司资产价值VA和它的波动率σA
原方程关系式如下:
未命名2.jpg
已知

a(1)=E即公司股权的价值; a(2)=DB即违约距离;a(3)=σE上市公司股权的波动率。

求解

x(1)=VA;x(2)=σA

%首先新建函数


function F= myfun(x)
a(1)=4.489850237*(10^9);a(2)=0.99633839*(10^9);a(3)=0.474561615;
a=[a(1);a(2);a(3)];
F=[a(1)-x(1)*normcdf((log(x(1)/a(2))+0.025+x(2)*x(2)/2)/x(2))+a(2)*(exp(-0.025))*normcdf((log(x(1)/a(2))+0.025-x(2)*x(2)/2)/x(2));x(1)*x(2)*normcdf((log(x(1)/a(2))+0.025+x(2)*x(2)/2)/x(2))-a(1)*a(3)];

然后在命令窗口里面:
>> x0=[5;0.4];options=optimset('display','iter');
>> [x,fval]=fsolve(@myfun,x0,options)

结果是:
                                                   Norm of      First-order   Trust-region
Iteration  Func-count     f(x)          step         optimality    radius
     0          3          2.46987e+019                             0               1
No solution found.
fsolve stopped because the problem appears regular as measured by the gradient,
but the vector of function values is not near zero as measured by the
default value of the function tolerance.
x =
    5.0000
    0.4000
fval =
  1.0e+009 *
    4.4899
   -2.1307

这个结果本来就有点奇怪,而且试了几次发现他解出来的x的结果总是等于设置的初值。我用的是MATLAB(R2010b),由于10月就要交论文初稿了,这个计算涉及我的基础数据的获得,求不出来后面也没法进行下去,有点着急,求助大神,麻烦帮我看一下,前面编写代码的过程是不是有什么错误,本人感激不尽!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:fsolve 非线性方程组 线性方程组 非线性方程 Solve 方程组

沙发
TimeT 发表于 2013-9-2 22:24:09
我用EXCEL解出:
X1=5,461,588,063
X2=39.01273104%

藤椅
小雅要加油 发表于 2013-9-2 23:12:38
TimeT 发表于 2013-9-2 22:24
我用EXCEL解出:
X1=5,461,588,063
X2=39.01273104%
多谢解答,这结果看起来靠谱多了。麻烦问一下,excel求解是用的 规划求解 吗?(之前在网上看到 规划求解 好像可以解方程,但是我用的03的excel貌似找不到规划求解。)

板凳
TimeT 发表于 2013-9-2 23:38:21
小雅要加油 发表于 2013-9-2 23:12
多谢解答,这结果看起来靠谱多了。麻烦问一下,excel求解是用的 规划求解 吗?(之前在网上看到 规划求解 ...
可以用SOLVER(规划求解)。不过,我试着用SOLVER(规划求解)解你的题,但是结果似乎精度不够高(没我给你的解的精度高),当然其实精度不必要求很高,本来就是估计么。

报纸
小雅要加油 发表于 2013-9-3 14:19:05
TimeT 发表于 2013-9-2 23:38
可以用SOLVER(规划求解)。不过,我试着用SOLVER(规划求解)解你的题,但是结果似乎精度不够高(没我给 ...
那你第一次给的解(精度高些的)是用什么解的?不是规划求解的话。如果方便的话,能说的具体些吗?

地板
TimeT 发表于 2013-9-3 23:48:42
小雅要加油 发表于 2013-9-3 14:19
那你第一次给的解(精度高些的)是用什么解的?不是规划求解的话。如果方便的话,能说的具体些吗?
那第一次给的解是:多次试验用不同的SOLVER初始值,以SOLVER来解得到的。有点猜和运气成分。如果直接用SOLVER,不多次尝试得到的精度就不是很高。

7
小雅要加油 发表于 2013-9-4 00:44:12
TimeT 发表于 2013-9-3 23:48
那第一次给的解是:多次试验用不同的SOLVER初始值,以SOLVER来解得到的。有点猜和运气成分。如果直接用SO ...
哦。这样啊。看起来还要有丰富经验。总之,再次感谢啊! 我会尝试下,不过还是希望有懂matlab的也能指导下~

8
小雅要加油 发表于 2013-9-11 22:20:46
TimeT 发表于 2013-9-3 23:48
那第一次给的解是:多次试验用不同的SOLVER初始值,以SOLVER来解得到的。有点猜和运气成分。如果直接用SO ...
真抱歉又来请教下,我试了下规划求解,解一般的多元线性方程组,多迭代几次就可以求出解,但是一换到求资产价值和资产波动率的方程组就解不出来,开始的时候,在目标单元格里输入方程式时显示的是#NUM!,使用规划求解后,活动单元格里的值都是0,即解出来的两个解都是0,然后目标单元格还是显示#NUM!,输入的表达式确认没有错误。请问下,是不是因为这个表达式太复杂了,除了常规用规划求解应该设置的东西,还要设置别的东西呢?希望高手能指导下!

9
TimeT 发表于 2013-9-12 23:10:08
小雅要加油 发表于 2013-9-11 22:20
真抱歉又来请教下,我试了下规划求解,解一般的多元线性方程组,多迭代几次就可以求出解,但是一换到求资 ...
大概你的问题出在#NUM!上了,你得先找出为何会有这个#NUM!,是否是你选的初始值使得表达式出错,或者是你的目标单元格表达式本身是错的。例如你可以用我的解代入活动单元格看看目标单元格是否正常计算出值来。

10
小雅要加油 发表于 2013-9-13 17:20:31
TimeT 发表于 2013-9-12 23:10
大概你的问题出在#NUM!上了,你得先找出为何会有这个#NUM!,是否是你选的初始值使得表达式出错,或者是你 ...
明白了~就是规划求解之前,得先在活动单元格里输入初值。刚才又试了一下,得到了使两个方程都为0的解,虽然得出的解和您回复的不同,不过也算比较靠谱了。所以,非常感谢您的指导啊!:)

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 09:09