使用'十进制'数字与scipy?

时间:2015-09-02 10:12:44

标签: python scipy mathematical-optimization

我的数字太大而无法使用Python的内置类型,因此我使用的是十进制库。我想使用scipy.optimise.brentq函数对'decimals'进行操作,但是当函数返回decimal时,它显然不能与优化函数的基于float的内部函数一起使用。我怎样才能解决这个问题:如何对大数字使用Scimal优化技术和Decimal类?

1 个答案:

答案 0 :(得分:2)

你做不到。 Scipy严重依赖于仅处理真实数值数据类型的数值算法,并且不能处理十进制类。

作为一般经验法则:如果您的问题定义明确且条件良好(这是数学数学家定义的东西),您可以缩放它以使其适合普通的python float,并且那么你可以应用scipy功能。

但是,如果您的问题涉及非常少的数字以及无法容纳float的数字,那么通常情况下您几乎无法在数字上做到这一点:很难找到一个好的解决方案。

但是,如果您的函数只返回 适合float的值,那么您可以使用

lambda x: float(your_function(x))

而不是your_function中的brentq