python - 解决积分问题时得到奇怪的结果
问题描述
问题是先求解 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, 0, 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, 0, 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, 0, T, args(gamma)) == K*T
23
24 result = solve(eqa, gamma)
NameError: name 'args' is not defined
非常感谢
解决方案
你为什么在这里调用 args,那不是函数 args(gamma) 请解释你想要它做什么
推荐阅读
- javascript - ReferenceError:直到未定义 selenium javascript
- ios - 类型“通知”没有成员“名称” - Swift
- javascript - D3 Zoom 无法读取未定义的属性“转换”
- javascript - 如何在 html css 和 js 中创建动画?
- javascript - 没有访问事件侦听器中全局变量的值?
- javascript - 无法解析剩余部分:来自“room_name _json”的“_json”
- java - Markwon 库的 Xamarin Android 绑定
- javascript - NodeJS 从“前缀”路由(例如“/something/about”)中访问“无前缀”路由名称(例如“/home”)会导致错误
- angular - 角材料垫sidenav项目
- java - BufferedReader readLine() 卡住了