2016-02-18 2 views

ответ

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)) 

В качестве альтернативы, преобразовать параметры плавать (например, с помощью . обозначения):

y = special.hyp2f1(-1./2, 1./2, 2., -400/(1-8/9.*np.cos(x)**2)) 
Смежные вопросы