python - 如何实现一个 pytorch 求解器,可以非常快速地并行求解大量非线性方程(如 scipy.fsolve)?
问题描述
我正在研究 Python 的求解器,最好使用 pytorch 张量,它可以非常快速有效地求解一系列非线性方程。给定某个“ob”值,该求解器基本上需要求解以下公式中的变量“s”;即函数'f'返回的值应该为零
from scipy.optimize import fsolve
from scipy.stats import norm
import numpy as np
d = 0.01
r = 0.02
v_base = 0.19
v_skew1 = -0.0035
v_skew2 = -0.0021
t = 1
def v(s):
return v_base + v_skew1 * (s-1) + v_skew2 * (s-1.1)
def f(s, ob):
v_temp = v(s)
k1 = np.log(1/s) + (r - d + 0.5 * v_temp**2)*t)/(v_temp * np.sqrt(t))
k2 = k1 - v_temp * np.sqrt(t)
result = np.exp(-d*t) * norm.cdf(k1) - strike * np.exp(-r * t) * norm.cdf(k2)
return (result - ob)
ob = 0.015 # only one value of ob for now, but need to solve for thousands of ob values
answer = fsolve(f, 0.01, args = ob)
ob 将使用 pytorch 张量来计算性能,同时解决大量值,所以我希望解决 ob 的方法也使用张量。即使我将张量参数传递给 fsolve,当我尝试求解数千个“ob”值时,运行时间也会增加很多。有没有办法实现所有这些单独的 fsolves 的求解器功能,以使用张量并行运行。另外,有没有使用torch.optim实现求解器?
解决方案
推荐阅读
- taskscheduler - 任务计划程序下一次运行时间为空
- ios - Image.file() 显式创建指定文件时显示空白
- android - Android:无法连接到 192.168.1.103:5555:无法连接,因为目标机器主动拒绝。(10061)
- javascript - 使用调试代码镜头以模板字符串作为测试名称运行 jest 测试
- pip - 安装 pyarrow 时出现错误“错误:命令错误,退出状态为 1:”
- sql - SQL 修改列名大小写更改
- r - 估算时间序列缺失值的建议
- javascript - 如何在 OMDB Api 中搜索包含搜索词的标题?
- or-tools - CP-Sat 的 OR-Tools 优化
- flutter - Flutter 注册通过 aws amplify 中的电话 otp 确认