Почему hyp2f1 от scipy дает 1? Однако это должно бытьСтранные значения функции 2F1 в scipy
Вот мой код
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))
Почему hyp2f1 от scipy дает 1? Однако это должно бытьСтранные значения функции 2F1 в scipy
Вот мой код
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))
Похоже, вы используете 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))
В качестве альтернативы, преобразовать параметры плавать (например, с помощью .
обозначения):
y = special.hyp2f1(-1./2, 1./2, 2., -400/(1-8/9.*np.cos(x)**2))