2016-02-18 27 views
0

为什么scipy中的hyp2f1会给出1?然而,应当scipy中的2F1函数的奇怪值

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

好像你正在使用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)) 

另外,转换参数浮动(例如,使用.符号):

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