Я только начинаю программировать на питоне. Я хотел бы нормализовать набор numpy для различных функций. Мой код до сих пор
from numpy import arange
from scipy.integrate import quad
import matplotlib.pyplot as plt
def function_A(x):
return -(x-1)*(x-5)
def normalize(functionName, numpyRange):
print "Inside normalize"
min = numpyRange.min()
max = numpyRange.max()
print "functionName: ", functionName
print "min: ", min
print "max: ", max
print "quad(functionName, min, max)[0]: ", quad(functionName, min, max)[0]
print "functionName(numpyRange): ", functionName(numpyRange)
print "RIGHT BEFORE RETURN"
return functionName(numpyRange) / quad(functionName, min, max)[0]
x = arange(1,5.01,0.01)
plt.plot(x, normalize(function_A, x))
plt.show()
print "This should equal unity: ", quad(normalize(function_A, x), x.min(), x.max(), args=(function_A, x))
Сообщение об ошибке, когда я запускаю свой код:
Traceback (most recent call last):
File "forStackExchange3.py", line 33, in <module>
print "This should equal unity: ", quad(normalize(function_A, x), x.min(), x.max(), args=(function_A, x))
File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 247, in quad
retval = _quad(func,a,b,args,full_output,epsabs,epsrel,limit,points)
File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 312, in _quad
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
quadpack.error: First argument must be a callable function.
Сообщение об ошибке сбивает меня с толку, потому что, хотя ошибка возникает в строке
print "This should equal unity: ", quad(normalize(function_A, x), x.min(), x.max(), args=(function_A, x))
Я все еще могу «ввести» свою функцию нормализации, о чем свидетельствуют мои многочисленные операторы печати. Я пробовал экспериментировать с разными способами написания строки, которая выдает сообщение об ошибке, но безуспешно. Любая помощь будет оценена по достоинству. Возможно, мне нужно переписать мою функцию нормализации, чтобы я мог правильно использовать quad? Кроме того, если есть более простой способ нормализации функций в python для моего конкретного случая, сообщите мне.
arange
не соответствует нецелочисленным размерам шага. Документация рекомендует вместо этогоlinspace
. - person makunha   schedule 17.05.2018