我需要制作方形函数的傅里叶级数。
要得到这个,有一个函数y = square(t)
我需要将(2 / p)*(square(t)* cos((2pi / p)* t))的积分从0变为变量I类型,例如p = 10但我不能使这个积分,因为每次我尝试用scipy做这个,我得到方形函数的错误。
from scipy.signal import *
from scipy.integrate import quad
from numpy import *
p = 10
na = arange(0,10,1)
def integrand(t, a, b):
return square(t)*cos(b*((2*pi)/a)*t)
i,err = quad(integrand,0,p, args=(p,na))
y = i
quadpack.error:提供的函数不返回有效的float。
答案 0 :(得分:2)
quad
返回2个参数,错误的积分和绝对值,你只需要解压缩它。
from scipy.signal import *
from scipy.integrate import quad
from numpy import *
p = 10
def integrand(t, a):
return square(t)*cos(((2*pi)/a)*t)
i, err = quad(integrand,0,p, args=(p,))
y = (2/p)*i
<强>更新强>
from scipy.signal import *
from scipy.integrate import quad
from numpy import *
p = 10
na = arange(0,10,1)
y = []
def integrand(t, a, b):
return square(t)*cos(b*((2*pi)/a)*t)
for e in na:
i,err = quad(integrand,0,p, args=(p, e))
y.append(i)
print(y)