全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1968 7
2008-11-18

请问如何编程解方程组:

            E=VN(d1) -Dexp(-rT)N(d2)                                               (1)

  其中: d1=[1n(V/D)+(r+0.5σ^2)T]/σ                                   

            d2=[1n(V/D)+(r-0.5σ^2)T]/σ        

             σs/σ=VN(d1)/E                                                               (2) 

             其中V和σ是未知数,N是标准正态分布函数,1n为以e为底的自然对数,exp是以e为底的指数, σs是已知数。
                       谢谢!

[此贴子已经被作者于2008-11-18 13:59:15编辑过]

二维码

扫码加我 拉你入群

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

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

全部回复
2008-11-19 08:36:00

我编的程序是:

NewtonIterate.m

function s=NewtonIterate(x,eps)
  % Newton迭代法求非线性方程组
  % x为迭代初值,eps为允许误差值
  if nargin==1
        eps=1.0e-6;
  elseif nargin<1
        error
        return
  end
  x1=fx1(x); %非线性方程组
  x2=-dfx1(x); %非线性方程组导数
  x3=pinv(x2);
  x0=x3*x1';
  while norm(x0)>=eps %循环迭代
      x=x0'+x;
      x1=fx1(x);
      x2=-dfx1(x);
      x3=pinv(x2);
      x0=x3*x1';
  end
  s=x0'+x;
  return
     

fx1.m

function y=fx1(x)
  syms t
  E=714711.9864;
  D=955030;
  s=0.32531;
  e=2.71828;
  y(1)=[x(1)/sqrt(2*pi)]*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))-D*e^(-r)/sqrt(2*pi)*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r-0.5*x(2)*x(2)]/x(2))-E
  y(2)=x(1)*x(2)*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))-Es

dfx1.m

function y=dfx1(x)
   syms t
   e=2.71828;
   E=714711.9864;
   s=0.32531;
   y(1)=[1/sqrt(2*pi)]*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))+[1/sqrt(2*pi)]*[1/(x(1)*x(2))]*e^{-0.5*[log(x(1)/D)+r+0.5*x(2)*x(2)]^2/(x(2)*x(2))}-D*e^(-r)*{1/(x(1)*x(2))}*e^{-0.5*[log(x(1)/D)+r-0.5*x(2)*x(2)]^2/(x(2)*x(2))}*[1/sqrt(2*pi)];
   y(2)=[x(1)/sqrt(2*pi)]*[-(log(x(1)/D)+r)/(x(2)*x(2))+0.5]*e^{-0.5*[log(x(1)/D)+r+0.5*x(2)*x(2)]^2/(x(2)*x(2))}-D*e^(-r)*[1/sqrt(2*pi)]*[-(log(x(1)/D)+r)/(x(2)*x(2))-0.5]*e^{-0.5*[log(x(1)/D)+r-0.5*x(2)*x(2)]^2/(x(2)*x(2))};
   y(3)=x(2)*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))+x(1)*x(2)*[1/sqrt(2*pi)]*[1/(x(1)*x(2))]*e^{-0.5*[log(x(1)/D)+r+0.5*x(2)*x(2)]^2/(x(2)*x(2))};
   y(4)=x(1)*[1/sqrt(2*pi)]*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))+x(1)*x(2)*[1/sqrt(2*pi)]*[-(log(x(1)/D)+r)/x(2)*x(2)+0.5]*e^{-0.5*[log(x(1)/D)+r+0.5*x(2)*x(2)]^2/(x(2)*x(2))};
   y=[y(1)*y(2);y(3)*y(4)];

请高手指出错误,不吝赐教!非常感谢!

二维码

扫码加我 拉你入群

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

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

2008-11-19 11:13:00

可能是此方程组较难解吧,怎么没其他人回复呢?

二维码

扫码加我 拉你入群

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

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

2008-11-19 14:57:00

fx1.m中r没有定义啊

二维码

扫码加我 拉你入群

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

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

2008-11-21 15:36:00

谢谢你,tabuce。

我修改后,程序如下:

fx1.m

function y=fx1(x)
  syms t
    e=2.71828;
    E=714711.9864;
    s=0.32531;
    r=0.02;
    D=955030;
  y(1)=[x(1)/sqrt(2*pi)]*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))-D*e^(-r)/sqrt(2*pi)*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r-0.5*x(2)*x(2)]/x(2))-E
  y(2)=x(1)*x(2)*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))-Es

dfx1.m

function y=dfx1(x)
   syms t
    e=2.71828;
    E=714711.9864;
    s=0.32531;
    r=0.02;
    D=955030;
   y(1)=[1/sqrt(2*pi)]*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))+[1/sqrt(2*pi)]*[1/(x(1)*x(2))]*e^{-0.5*[log(x(1)/D)+r+0.5*x(2)*x(2)]^2/(x(2)*x(2))}-D*e^(-r)*{1/(x(1)*x(2))}*e^{-0.5*[log(x(1)/D)+r-0.5*x(2)*x(2)]^2/(x(2)*x(2))}*[1/sqrt(2*pi)];
   y(2)=[x(1)/sqrt(2*pi)]*[-(log(x(1)/D)+r)/(x(2)*x(2))+0.5]*e^{-0.5*[log(x(1)/D)+r+0.5*x(2)*x(2)]^2/(x(2)*x(2))}-D*e^(-r)*[1/sqrt(2*pi)]*[-(log(x(1)/D)+r)/(x(2)*x(2))-0.5]*e^{-0.5*[log(x(1)/D)+r-0.5*x(2)*x(2)]^2/(x(2)*x(2))};
   y(3)=x(2)*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))+x(1)*x(2)*[1/sqrt(2*pi)]*[1/(x(1)*x(2))]*e^{-0.5*[log(x(1)/D)+r+0.5*x(2)*x(2)]^2/(x(2)*x(2))};
   y(4)=x(1)*[1/sqrt(2*pi)]*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))+x(1)*x(2)*[1/sqrt(2*pi)]*[-(log(x(1)/D)+r)/x(2)*x(2)+0.5]*e^{-0.5*[log(x(1)/D)+r+0.5*x(2)*x(2)]^2/(x(2)*x(2))};
   y=[y(1)*y(2);y(3)*y(4)];

运行NewtonIterate([0 0]),结果是:
error_msg : socket 4280 listen failed (err=10013).

??? Maple initialization failed.


Error in ==> mapleinit at 47
maplemex(maplelib,0);

Error in ==> maple at 104
[result,status] = maplemex(statement);

Error in ==> sym.maple at 85
[result,status] = maple(statement);

Error in ==> sym.mpower at 17
   B = maple(A,'^',p);

Error in ==> fx1 at 8
  y(1)=[x(1)/sqrt(2*pi)]*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r+0.5*x(2)*x(2)]/x(2))-D*e^(-r)/sqrt(2*pi)*int(e^(-0.5*t^2),-inf,[log(x(1)/D)+r-0.5*x(2)*x(2)]/x(2))-E

Error in ==> NewtonIterate at 10
  x1=fx1(x); %非线性方程组

还是不行,请不吝赐教,多谢!


二维码

扫码加我 拉你入群

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

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

2008-11-24 14:21:00

怎么没有高手来回答呢?

期望中。。。。

二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群