悠闲数学娱乐论坛(第2版)'s Archiver

opuikl_0 发表于 2017-7-9 15:22

Mathematica求函数值

[attach]5185[/attach]
[attach]5186[/attach]

请教下各位,这里我需要求 $C_0$, 针对给出的参数值,我用Mathematica求出的解是 18.3324, 但是别人算出的却是 6.9990, 不知道我代码哪里有问题?

[attach]5187[/attach]

kuing 发表于 2017-7-9 15:27

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=22103&ptid=4746]1#[/url] [i]opuikl_0[/i] [/b]

代码不要贴图,直接复制粘帖上来

opuikl_0 发表于 2017-7-9 15:31

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=22104&ptid=4746]2#[/url] [i]kuing[/i] [/b]

好的,代码如下:

S0 = 100;
K = 100;
b = 0.04;
v0 = 0.0082;
theta = 0.0168;
kappa = 6.21;
nu = 0.625;
rho = -0.6674;
t = 0;
T = 1;
tau = T - t;
F = S0*Exp[b*tau];
x = Log[F/K];
gamma = nu^2/2;

alpha[j_] := -k^2/2 - I*k/2 + I*j*k;
beta[j_] := kappa - rho*nu*j - rho*nu*I*k;
d[j_] := Sqrt[beta[j]^2 - 4*alpha[j]*gamma];
r1[j_] := (beta[j] + d[j])/gamma^2;
r2[j_] := (beta[j] - d[j])/gamma^2;
g[j_] := r2[j]/r1[j];
CC[j_] := kappa*(r2[j]*tau - (2/nu^2)*Log[(1 - g[j]*Exp[-d[j]*tau])/(1 - g[j])]);
DD[j_] := r2[j]*(1 - Exp[-d[j]*tau])/(1 - g[j]*Exp[-d[j]*tau]);
P[j_] := 1/2 + (1/Pi)*Integrate[Re[Exp[CC[j]*theta + DD[j]*v0 + I*k*x]/(I*k)], {k, 0, Infinity}];

C0 = S0*P[1] - K*Exp[-b*tau]*P[0] // N

opuikl_0 发表于 2017-7-9 15:39

不好意思.......我发现是
r1[j_] := (beta[j] + d[j])/gamma^2;
r2[j_] := (beta[j] - d[j])/gamma^2;
这俩函数分母写错了.........

现在有新的问题,分母改成nu^2后,出来的结果是 7.00701

请问这是精确到第几位的?怎么改Mathematica的默认精确位数?谢谢!

kuing 发表于 2017-7-9 16:12

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=22106&ptid=4746]4#[/url] [i]opuikl_0[/i] [/b]

细微差别的原因很难说,还要看别人怎么做的才知道

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.