2F1的奇怪值在scipy中起作用

时间:2016-02-18 12:29:24

标签: python numpy math scipy

为什么来自scipy的hyp2f1给出1?但它应该是

enter image description here

这是我的代码

import numpy as np
from scipy import special
x = np.arange(0,2,0.01)
y = special.hyp2f1(-1/2, 1/2, 2, -400/(1-8/9*np.cos(x)**2))

1 个答案:

答案 0 :(得分:1)

看起来你正在使用Python 2。问题是Python 2中的除法运算符:将整数除以整数给出一个整数。例如,1/20。如果其中一个操作数是浮点,则结果符合您的预期:float(1) / 2 == 1. / 2 == 0.5

以下内容将按预期工作:

from __future__ import division
import numpy as np
from scipy import special

x = np.arange(0,2,0.01)
y = special.hyp2f1(-1/2, 1/2, 2, -400/(1-8/9*np.cos(x)**2))

或者,将参数转换为float(例如使用.表示法):

y = special.hyp2f1(-1./2, 1./2, 2., -400/(1-8/9.*np.cos(x)**2))