Python:绘制函数的一个变量

时间:2012-07-30 01:47:48

标签: python oop matplotlib

我一直在用这种方式打气一段时间了:

我有一个函数在可以解决之前依赖五(5)个变量(Black-Scholes)。在我解决了这个BS实例的价格之后,我想创建一系列不同的输入(比如时间)并将它们与相应的输出(解决方案,其他所有变量保持不变)进行对比。

所以希望我正在策划像

这样的东西
class BS

    def __init__(self, args)
        self.a = float(args[0])
        self.b = float(args[1])
        self.c = float(args[2])
        self.d = float(args[3])
        self.e = float(args[4])
    ...
    ...
    the math
    ...
    ...

现在,我可以创建该类的实例,该实例包含从T或时间计算价格的方法。

def price(self)
   'math that only requires T'
    return price

所以,我只需要运行BS.price()并输出类似

的内容
t = range(T-200, T+200, 1)

prices = [BS.price() for x in t]
rhos = [BS.rho() for x in t]
vegas = [BS.vega() for x in t]
parities = [BS.parity() for x in t]


pylab.plot(prices,t)
pylab.plot(rhos,t)
pylab.plot(vegas,t)
pylab.plot(parities,t)

如果价格的唯一变量是时间。有没有更好的方法来观察python的单变量依赖?我更喜欢R,但这不取决于我。

感谢您的帮助!

编辑:当时间变量正在进行数学运算(如math.sqrt()和scipy.cdf())时,我不知道如何使用列表推导。有没有办法做到这一点?我知道如何构建依赖变量t的函数,一个浮点数。如何将值列表输入math.sqrt()或scipy.cdf()?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

  

当时间变量正在进行数学运算(如math.sqrt()和scipy.cdf())时,我不知道如何使用列表推导。有没有办法做到这一点?我知道如何构建依赖变量t的函数,一个浮点数。如何将值列表输入math.sqrt()或scipy.cdf()?

几乎没有什么选择可以考虑:

  • Python生成器允许您在迭代集合/值列表时动态生成结果。这是一个非常好的讨论:
    http://wiki.python.org/moin/Generators

  • Python的map和reduce函数允许您将函数(例如sqrt)应用于列表中的每个元素,并且使用reduce可以将列表中某些操作的每个结果减少为单个值(Check 2.1“映射列表“):
    http://www.siafoo.net/article/52