2014-06-22 3 views
3

Я читаю книгу «Праймер на научном программировании с помощью Python», и я застрял в упражнении 2.26. Говорят, что он пишет функцию maxmin (f, a, b, n = 1000), которая возвращает максимальные и минимальные значения математической функции f (x) (оцененной в n точках) в интервале между a и b.как вычислить функцию в списке?

Функция maxmin может вычислять набор из n координат между и b, хранящихся в списке x, затем вычислять f в точках в x и сохранять значения в другом списке y. Функции Python max (y) и min (y) возвращают максимальное и минимальное значения в списке y соответственно.

В качестве теста, он говорит, что

from math import cos, pi 
print maxmin(cos, -pi/2, 2*pi) 

должен выписывать (1,0, -1,0)

Это то, что я пытался, но ничего не возвращает!

from math import cos, pi 

def maxmin(f, a, b, n=1000): 
    x = [f(i) for i in range(a, b, n)] 
    #print x 
    maximum = max(x) 
    minimum = min(x) 
    return maximum, minimum 

print maxmin(cos, -pi/2, 2*pi) 
+0

@frostnational вы должны сделать это в ответ, потому что это действительно ответ. Диапазон – Duncan

+0

позволяет вам проходить поплавки? –

+0

Нет, это не так. Я получаю эту ошибку: TypeError: range() целочисленный конечный аргумент, ожидаемый, получил float. –

ответ

2

Ваш код использует range(). Функция не поддерживает аргументы с плавающей запятой, а последний аргумент - не то, что вы думаете.

Если я правильно помню, книга, на которой вы следуете, основана на NumPy. Если это так, вы можете просто заменить range() на numpy.linspace().

Смежные вопросы