元の関数f(t)=1(ーπ<t<=0)かつ 0(0<t<=π)のフ―リエ級数展開した式をグラフに出力したいです。
フ―リエ級数展開は1/2+(Σ(k=1~∞)1-(-1)のk乗*sin(nπx)/nπ)
def f(t,k)の所を何度も変えても波は重なりません。ただ、最初の1.0を無くすと重なりますが、グラフの形が違う上に、フ―リエ級数展開は1.0もシグマの中に含んでいるので、絶対この位置だと思います。
python
1# -*- coding: utf-8 -*- 2import numpy as np 3import matplotlib.pyplot as plt 4 5def f(t,k): 6 return -(1.0-np.power(-1,k)*np.sin(k*np.pi*t))/k*np.pi 7 #return -np.sin((2.0*k-1.0)*t)/(2.0*k-1.0)*np.pi 8 9dt = 0.01 10start = -2.0*np.pi 11end = 2.0*np.pi 12 13# 横軸 t の作成.-6.28 から 6.28 を0.01 おきに.t は横ベクトル. 14t = np.arange(start, end, dt) 15 16K=1 17s1 = (1.0/2.0)*np.ones(t.size) 18for k in range(K): 19 s1 = s1 + f(t,k+1) 20K=3 21s3 = (1.0/2.0)*np.ones(t.size) 22for k in range(K): 23 s3 = s3 + f(t,k+1) 24 25K=10 26s10 = (1.0/2.0)*np.ones(t.size) 27for k in range(K): 28 s10 = s10 + f(t,k+1) # k+1 にしているのは,ranng(5) は 0 はじまりのため. 29 30K=100 31s100 = (1.0/2.0)*np.ones(t.size) 32for k in range(K): 33 s100 = s100 + f(t,k+1) 34 35K=1000 36s1000 = (1.0/2.0)*np.ones(t.size) 37for k in range(K): 38 s1000 = s1000 + ft,k+1) 39 40 41fig=plt.figure(0) 42plt.plot (t, s3, linewidth=1.0, color="r",linestyle="solid",label="$ K=3 $") 43plt.plot (t, s10, linewidth=1.0, color="g",linestyle="solid",label="$ K=10 $") 44plt.plot (t, s100, linewidth=1.0, color="b",linestyle="solid",label="$ K=100 $") 45plt.plot (t, s1000, linewidth=1.0, color="m",linestyle="solid",label="$ K=1000 $") 46plt.grid() 47plt.legend() 48plt.show() 49fig.savefig('f102.pdf') 50
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/13 00:22