離散フーリエ変換を使用して関数を近似しようとしていますが、関数の2M + 1の値が与えられています。離散フーリエ変換を使用した三角関数補間
私は、係数と近似のためのいくつかの違った表情を見てきましたが、私はもともとしようとしていたものがあった(12)と私は、リンクをお詫び申し上げます* http://www.chebfun.org/docs/guide/guide11.html
のように(13)が、どうやらStackOverflowはラテックスをサポートしていません。
私は係数が与えられた近似値を計算する関数を持ち、係数を計算する関数を持っていますが、これも以前の関数を返します。私はいくつかの値でテストしましたが、結果はまったく同じではありませんでした。私はそれらの両方をnumpy.fft.fftと比較しました。係数が一致せず、最初の関数にfftを渡しても良好な近似が得られなかったので、係数だけが問題ではありません。私はあなたのコードを理解していない
def model(cks, x):
n = len(cks)
assert(n%2 == 1)
M = (n-1)//2
def soma(s):
soma = 0
for i in range(n):
m = -M + i
soma += cks[i]*cmath.exp(1j*m*s)
return soma
soma = np.vectorize(soma)
return soma(x)
def fourier(y):
n = len(y)
assert(n%2 == 1)
M = (n-1)//2
def soma(k):
soma = 0
for i in range(n):
t = 2*math.pi*i/n
soma += y[i]*cmath.exp(-1j*k*t)
return (1/n)*soma
cks = np.zeros(n, dtype='complex')
for i in range(n):
j = -M + i
cks[i] = soma(j)
return cks, (lambda x: model(cks,x))