erf 메서드를 사용하지 않고 scipy를 사용하여 오류 함수를 재현하려고합니다.quad 메서드 Python을 사용한 통합
#!/usr/bin/env python
import numpy as np
import math
from scipy.integrate import quad
def error_func(y):
return 2/math.sqrt(np.pi)*quad(np.exp(-y**2), 1, np.inf, args=(y))[0]
g = [error_func(x) for x in np.arange(-1,1,0.2)]
print g
이 코드는 다음과 같은 오류 메시지를 반환합니다 : 만약 내가 제대로 이해하고
File "./test.py", line 9, in <module>
g = [error_func(x) for x in np.arange(-1,1,0.2)]
File "./test.py", line 7, in error_func
return 2/math.sqrt(np.pi)*quad(np.exp(-y**2), 1, np.inf, args=(y))[0]
File "/usr/local/lib/python2.7/site-packages/scipy/integrate/quadpack.py", line 316, in quad
points)
File "/usr/local/lib/python2.7/site-packages/scipy/integrate/quadpack.py", line 383, in _quad
return _quadpack._qagie(func,bound,infbounds,args,full_output,epsabs,epsrel,limit)
quadpack.error: quad: first argument is not callable
, 쿼드의 첫 번째 인수는 함수해야
이
내 코드입니다. 나는 그것을 올바르게 통과하는 것. 내 코드에서 무슨 문제가 있습니까?
코드는 스택 추적의 코드에서 눈에 띄게 다르다. 스택 트레이스의 코드에는 'lambda y'가 없습니다. 자신이 생각하는 코드를 실행하고 있는지 확인하십시오. – user2357112
나는 당신이 당신의 포스트를 편집 한 것을 본다. 그러나 당신의 코드가 여전히 눈에 띄게 스택 트레이스와 일치하지 않기 때문에, 내가 지적한 부분을 주목하자. 그러지 마. 코드를 실행하고 오류 메시지를받은 다음 실행 한 정확한 코드와 정확한 오류 메시지를 모두 복사하여 질문에 붙여 넣으십시오. 다른 것은 버그를 숨기고, 다른 버그를 소개하며, 일반적으로 누구에게나 당신을 도울 수 없습니다. – user2357112
'scipy.integrate.quad'는 첫 번째 인자로 함수를 기대합니다. 당신은 숫자 인'np.exp (-y ** 2)'를 제공합니다. 'lambda x : np.exp (-x ** 2)'로 바꿔보십시오. 또한 'scipy.integrate.quad' 문서를 읽으십시오 : https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.integrate.quad.html –