为什么来自scipy的hyp2f1给出1?但它应该是
这是我的代码
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))
答案 0 :(得分:1)
看起来你正在使用Python 2。问题是Python 2中的除法运算符:将整数除以整数给出一个整数。例如,1/2
为0
。如果其中一个操作数是浮点,则结果符合您的预期: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))