融入 python
Integration in python
我编写的集成代码给出了错误 results.I 得到 c_0,c_1,...c_4 为零!我究竟做错了什么?我在 mac 上仅使用 0.7.6。
from numpy import *
from matplotlib.pyplot import *
from sympy import *
x = Symbol('x')
f = 1.0*sin(np.pi * x)
phi_0 = 1.0
phi_1 = 1.0*x
phi_2 = 1./2*(3*x**2-1)
phi_3 = 1./2*(5*x**3-3*x)
phi_4 = 1./8*(35*x**4-30*x**2+3)
c_0 = integrate(f*phi_0, (x, -1.0, 1.0))
c_1 = integrate(f*phi_1, (x, -1.0, 1.0))
c_2 = integrate(f*phi_2, (x, -1.0, 1.0))
c_3 = integrate(f*phi_3, (x, -1.0, 1.0))
c_4 = integrate(f*phi_4, (x, -1.0, 1.0))
print c_0
print c_1
print c_2
print c_3
print c_4
除了需要将numpy导入为np之外,我在最新版本(0.7.6)中没有发现任何问题。有些值是零(由于对称性考虑,正如预期的那样)但其他值不是:
>>> print c_0
0
>>> print c_1
0.636619772367581
>>> print c_2
0
>>> print c_3
-0.330926260628403
>>> print c_4
0
我同意 smichr 的观点。只要您导入 numpy,一切似乎都很好。您也可以使用 scipy,但这取决于您的偏好和需求。
from scipy.integrate import quad
quad(lambda x: x**2, 0, 1)
我编写的集成代码给出了错误 results.I 得到 c_0,c_1,...c_4 为零!我究竟做错了什么?我在 mac 上仅使用 0.7.6。
from numpy import *
from matplotlib.pyplot import *
from sympy import *
x = Symbol('x')
f = 1.0*sin(np.pi * x)
phi_0 = 1.0
phi_1 = 1.0*x
phi_2 = 1./2*(3*x**2-1)
phi_3 = 1./2*(5*x**3-3*x)
phi_4 = 1./8*(35*x**4-30*x**2+3)
c_0 = integrate(f*phi_0, (x, -1.0, 1.0))
c_1 = integrate(f*phi_1, (x, -1.0, 1.0))
c_2 = integrate(f*phi_2, (x, -1.0, 1.0))
c_3 = integrate(f*phi_3, (x, -1.0, 1.0))
c_4 = integrate(f*phi_4, (x, -1.0, 1.0))
print c_0
print c_1
print c_2
print c_3
print c_4
除了需要将numpy导入为np之外,我在最新版本(0.7.6)中没有发现任何问题。有些值是零(由于对称性考虑,正如预期的那样)但其他值不是:
>>> print c_0
0
>>> print c_1
0.636619772367581
>>> print c_2
0
>>> print c_3
-0.330926260628403
>>> print c_4
0
我同意 smichr 的观点。只要您导入 numpy,一切似乎都很好。您也可以使用 scipy,但这取决于您的偏好和需求。
from scipy.integrate import quad
quad(lambda x: x**2, 0, 1)