You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用numpy.vectorize对scipy.optimize.brentq按K迭代实现向量化?

向量化scipy.optimize.brentq的一致性与性能问题

需求

通过numpy.vectorize对scipy.optimize.brentq进行向量化,迭代参数K完成计算。

现有代码

核心计算函数(调用brentq)

from scipy.optimize import brentq

def fun(S, K, P, T, R, Q, Bin):
    def f(x): 
        return F(1, K/S, x, T, R, Q, Bin.get(K < S)) - P[K]/S
    return brentq(f, 0., 10.)

辅助计算函数F

import numpy as np
from scipy.stats import norm

def F(S, K, x, T, R, Q, B=Bin.get(K < S)):
    return B * (S * np.exp(-Q * np.ones_like(K) * T) * norm.cdf(B * S/K) 
                - np.exp(-R * np.ones_like(K) * T) * K * norm.cdf(B * S/K))

参数说明

  • S、K:等长numpy数组
  • P:键为K元素值的字典
  • T、R、Q:浮点数
  • Bin:返回±1的字典

遇到的问题

  1. 单个数值传入fun时运行正常,但直接用np.vectorize调用fun,结果与遍历K的for循环结果不一致;
  2. 解决结果一致性问题后,np.vectorize的运行速度并未优于for循环。

内容的提问来源于stack exchange,提问作者trmgn094

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:15:11