我的数字太大而无法使用Python的内置类型,因此我使用的是十进制库。我想使用scipy.optimise.brentq
函数对'decimals'进行操作,但是当函数返回decimal时,它显然不能与优化函数的基于float的内部函数一起使用。我怎样才能解决这个问题:如何对大数字使用Scimal优化技术和Decimal类?
答案 0 :(得分:2)
你做不到。 Scipy严重依赖于仅处理真实数值数据类型的数值算法,并且不能处理十进制类。
作为一般经验法则:如果您的问题定义明确且条件良好(这是数学数学家定义的东西),您可以缩放它以使其适合普通的python float
,并且那么你可以应用scipy功能。
但是,如果您的问题涉及非常少的数字以及无法容纳float
的数字,那么通常情况下您几乎无法在数字上做到这一点:很难找到一个好的解决方案。
但是,如果您的函数只返回 适合float的值,那么您可以使用
lambda x: float(your_function(x))
而不是your_function
中的brentq
。