如何解决解决积分问题时得到奇怪的结果
问题是先求解 gamma,然后将 gamma 代入第二个方程得到 k*,但我不明白为什么我的 K* 总是 1.0。任何帮助将不胜感激,如果这个问题可以在 python 中解决,那也很好。
这是我的尝试,
T = 1;
sigma = 0.3;
r = 0.09;
a = r - sigma^2/2;
K = 100;
S_0 = 100;
M = 3;
syms gamma Kstar t;
eqa = int(S_0*exp(exp(3*t*(T-t/2)*gamma*sigma/T^2 + a*t + sigma^2*(t- 3*t^2*(T - t/2)^2/T^3)/2)),t,T) == T*K;
Y = vpasolve(eqa,gamma);
K_s = solve((log(log(Kstar)) - log(M))*T/sigma == Y,Kstar);
display(K_s);
这是我的python尝试
import scipy.integrate as integrate
import scipy.special as special
from scipy.integrate import quad
from numpy import exp,log
from sympy.solvers import solve
from sympy import Symbol
T = 1
sigma = 0.3
r = 0.09
a = r - sigma**2/2
K = 100
S_0 = 100
M_2 = S_0 * exp(r*T/2 - sigma**2*T/12)
t = Symbol("t")
Kstar = Symbol("Kstar")
gamma = Symbol("gamma")
def integrand(t,gamma):
return S_0*exp(exp(3*t*(T-t/2)*gamma*sigma/T**2 + a*t + sigma**2*(t- 3*t**2*(T - t/2)**2/T**3)/2))
eqa = quad(integrand,T,args(gamma)) == K*T
result = solve(eqa,gamma)
print(result)
然后出现了这个错误
NameError Traceback (most recent call last)
<ipython-input-10-e24a1238ff27> in <module>
20 return S_0*exp(exp(3*t*(T-t/2)*gamma*sigma/T**2 + a*t + sigma**2*(t- 3*t**2*(T - t/2)**2/T**3)/2))
21
---> 22 eqa = quad(integrand,args(gamma)) == K*T
23
24 result = solve(eqa,gamma)
NameError: name 'args' is not defined
非常感谢
解决方法
你为什么在这里调用 args,那不是函数 args(gamma) 请解释你想要它做什么
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。