我正在尝试使用 SciPy 来集成此功能:
y(x) = (e^-ax)*cos(x) 介于 0 和 4pi 之间。
这是我到目前为止的代码:
from numpy import *
from scipy.integrate import simps
a = 0
x = linspace(0 , 4*pi, 100)
y = (e^-(a*x))*cos(x)
integral_value = simps(y,x)
print integral_value
Run Code Online (Sandbox Code Playgroud)
但是,它似乎不起作用。任何帮助将不胜感激,谢谢!
好吧,如果您运行该程序,则会出现以下错误:
类型错误:输入类型不支持 ufunc 'bitwise_xor',并且无法根据转换规则“安全”将输入安全地强制转换为任何受支持的类型
所以您知道问题出^在函数中的(bitwise xor) 上。在 Python 中,一种用于**取指数。
如果有人写:
y = (e**-(a*x))*cos(x)
Run Code Online (Sandbox Code Playgroud)
相反,一个人得到:
>>> print integral_value
-0.000170200006112
Run Code Online (Sandbox Code Playgroud)
完整的程序:
from numpy import *
from scipy.integrate import simps
a = 0
x = linspace(0 , 4*pi, 100)
y = (e**-(a*x))*cos(x)
integral_value = simps(y,x)
print integral_valueRun Code Online (Sandbox Code Playgroud)
您还可以通过以下方式显式使用numpy函数:
from numpy import *
from scipy.integrate import simps
a = 0
x = linspace(0 , 4*pi, 100)
y = exp(-a*x)*cos(x)
integral_value = simps(y,x)
print integral_valueRun Code Online (Sandbox Code Playgroud)
为了提高精度,可以增加点数(100 不算多)。