2016-10-26 2 views
2

У меня есть уравнение (подынтегральное выражение) и хочу, чтобы цикл for создавал массив значений, который затем можно построить. Обе переменные в подынтегральной функции являются аргументами косинуса. math.cos допускает только радианные значения, поэтому я хочу, чтобы мой диапазон находился от 0 до 90 градусов (pi/2 радиан), но функция диапазона не допускает значений поплавка. Как я могу это достичь. Моя попытка, но не работает из-за проблемы с поплатой:Сделать диапазон значений радиана в Python

for i in range(0, 0.5*(math.pi), 0.0174533): 
    yvalues = integrand(i, 60) 

ответ

2

Это делает это за вас? Пусть я быть мерой в градусах

for i in range(90): 
    yvalues = integrand(i * math.pi/180, 60) 

Если вы хотите, чтобы весь массив на один раз, использовать понимание:

yyvalues = [integrand(i * math.pi/180, 60) for i in range(90)] 
0

Перейти на градусов и преобразовать в радианы:

for i in range(0, 90): 
    radian = i * 0.0174533 
    yValue += integrand(i, 60) 

Вы также можете сделать это в одной строке со списком:

yValue = [integrand(i * 0.0174533, 60) for i in range(0, 90)] 
1

Если вы серьезно относитесь к математике и массивы чисел, обязательно проверить numpy и избежать петли в коде вообще:

>>> import numpy 
>>> yvalues = integrand(numpy.linspace(0,numpy.pi/2,361), 60) 

>>> print(numpy.linspace(0,numpy.pi/2,17)) 
[ 0.   0.09817477 0.19634954 0.29452431 0.39269908 0.49087385 
    0.58904862 0.68722339 0.78539816 0.88357293 0.9817477 1.07992247 
    1.17809725 1.27627202 1.37444679 1.47262156 1.57079633]] 

Это может потребовать редактирования функции integrand, но получение использовать Numpy массивы вместо списков python можно сделать код более читабельным и быстрым.