スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2009-8-7 11:06 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
Fourier変換と波形解析:演習問題 上巻最後の演習問題。さっくり突破して下巻を攻略しよう。
問題を良く見ると、理論の解説で出てくる公式の証明や導出問題が結構出てくるが、他にもFourier変換の応用に関する問題も多い。 問題を解く際に現実での応用場面を想像するともっと面白いかもしれない。 今はかなり蒸し暑い季節なので、がんばらないで77問を見ていこう。 |
webadm | 投稿日時: 2009-8-7 12:03 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【1】波形補間 最初にいきなり興味深い問題が出てくる。やはり著者はFourier変換の現実的な応用面を知っていて、それと関連のある問題を考えているのかもしれない。
最初の問題は、y(t)=a1*sin(ωt)+b0+b1*cos(ωt) という関数を用いて、以下の電圧波形e(t)を近似しようとするときに、t=0,π/ω,3π/2ωの3点でy(t)とe(t)が一致するには、係数a1,b0,b1をどのようにすればよいかというもの。 e(t)=2t, 0≦t≦2π/ω これはどういう意味だろう。y(t)はFourier級数なので繰り返し波形になる。 e(t)をプロットすると 式としては連続関数として与えられているが、近似関数に対しては3点が離散的な数列として与えられているだけである。 こうした離散的な数列と一致する関数を合成することを波形補間とも呼ぶ。 デジタルオシロのように離散的にサンプリングされた波形データを滑らかに曲線で表示するにはなんらかの波形補間が必要である。 画像イメージを拡大表示する際も素の画素データ列が離散的に離ればなれになるため隙間の画素データを補間しないといけない。 もちろん素のデータは離散数値列なので、その間の情報は無いのだが、ほとんどの波形はFourier級数で近似できるので有限項数のFourier級数の係数を求めれば良いことになる。 そのためには問題で与えられているe(t)の式は一端忘れて、与えられた3点の値のみがわかっているものとする必要がある。 再びそれを図に描くと これは有る意味で方程式の解を求める問題でもある。微分方程式程面倒ではない。 3点(t0,t1,t2)でそれぞれ以下の関係式がなりたたねばならない。 y(t0)=a1*sin(ω*t0)+b0+b1*cos(ω*t0)=2*t0 y(t1)=a1*sin(ω*t1)+b0+b1*cos(ω*t1)=2*t1 y(t2)=a1*sin(ω*t2)+b0+b1*cos(ω*t2)=2*t2 これをa1,b0,b1に関する三元連立方程式として解くと (%i1) e1:a1*sin(o*t0)+b0+b1*cos(o*t0)=2*t0; (%o1) a1*sin(o*t0)+b1*cos(o*t0)+b0=2*t0 (%i2) e2:a1*sin(o*t1)+b0+b1*cos(o*t1)=2*t1; (%o2) a1*sin(o*t1)+b1*cos(o*t1)+b0=2*t1 (%i3) e3:a1*sin(o*t2)+b0+b1*cos(o*t2)=2*t2; (%o3) a1*sin(o*t2)+b1*cos(o*t2)+b0=2*t2 (%i4) solve([e1,e2,e3],[a1,b0,b1]); (%o4) [[a1=- (t0*(2*cos(o*t2)-2*cos(o*t1))-2*t1*cos(o*t2)+2*cos(o*t1)*t2+cos(o*t0)*(2*t1-2*t2))/(cos(o*t0)*(sin(o*t2)-sin(o*t1))-cos(o*t1)*sin(o*t2)+sin(o*t1)*cos(o*t2)+sin(o*t0)*(cos(o*t1)-cos(o*t2))),b0=(t0* (2*sin(o*t1)*cos(o*t2)-2*cos(o*t1)*sin(o*t2))+cos(o*t0)*(2*t1*sin(o*t2)-2*sin(o*t1)*t2)+sin(o*t0)* (2*cos(o*t1)*t2-2*t1*cos(o*t2)))/(cos(o*t0)*(sin(o*t2)-sin(o*t1))-cos(o*t1)*sin(o*t2)+sin(o*t1)* cos(o*t2)+sin(o*t0)*(cos(o*t1)-cos(o*t2))),b1= (t0*(2*sin(o*t2)-2*sin(o*t1))-2*t1*sin(o*t2)+2*sin(o*t1)*t2+sin(o*t0)*(2*t1-2*t2))/(cos(o*t0)*(sin(o*t2)-sin(o*t1))-cos(o*t1)*sin(o*t2)+sin(o*t1)*cos(o*t2)+sin(o*t0)*(cos(o*t1)-cos(o*t2)))]] (%i9) ratsimp(%); (%o9) [[a1=-((2*t1-2*t0)*cos(o*t2)+(2*cos(o*t0)-2*cos(o*t1))*t2+2*t0*cos(o*t1)-2*cos(o*t0)*t1)/(sin(o*t2-o*t1)-sin(o*t2-o*t0)+sin(o*t1-o*t0)),b0= (2*t0*sin(o*t2-o*t1)-2*t1*sin(o*t2-o*t0)+2*sin(o*t1-o*t0)*t2)/(sin(o*t2-o*t1)-sin(o*t2-o*t0)+sin(o*t1-o*t0)),b1= ((2*t1-2*t0)*sin(o*t2)+(2*sin(o*t0)-2*sin(o*t1))*t2+2*t0*sin(o*t1)-2*sin(o*t0)*t1)/(sin(o*t2-o*t1)-sin(o*t2-o*t0)+sin(o*t1-o*t0))]] ということになる。これに t0=0 t1=π/ω t2=3π/2ω を代入すると (%i10) subst(0, t0, [[a1=-((2*t1-2*t0)*cos(o*t2)+(2*cos(o*t0)-2*cos(o*t1))*t2+2*t0*cos(o*t1) -2*cos(o*t0)*t1)/(sin(o*t2-o*t1)-sin(o*t2-o*t0)+sin(o*t1-o*t0)),b0=(2*t0*sin(o*t2 -o*t1)-2*t1*sin(o*t2-o*t0)+2*sin(o*t1-o*t0)*t2)/(sin(o*t2-o*t1)-sin(o*t2-o*t0)+sin(o*t1 -o*t0)),b1=((2*t1-2*t0)*sin(o*t2)+(2*sin(o*t0)-2*sin(o*t1))*t2+2*t0*sin(o*t1)-2*sin(o*t0)*t1)/(sin(o*t2 -o*t1)-sin(o*t2-o*t0)+sin(o*t1-o*t0))]]); (%o10) [[a1=(-2*t1*cos(o*t2)-(2-2*cos(o*t1))*t2+2*t1)/(sin(o*t2-o*t1)-sin(o*t2)+sin(o*t1)),b0=(2*sin(o*t1)*t2-2*t1*sin(o*t2))/(sin(o*t2-o*t1)-sin(o*t2)+sin(o*t1)),b1= (2*t1*sin(o*t2)-2*sin(o*t1)*t2)/(sin(o*t2-o*t1)-sin(o*t2)+sin(o*t1))]] (%i11) subst(%pi/o, t1, [[a1=(-2*t1*cos(o*t2)-(2-2*cos(o*t1))*t2+2*t1)/(sin(o*t2-o*t1)-sin(o*t2) +sin(o*t1)),b0=(2*sin(o*t1)*t2-2*t1*sin(o*t2))/(sin(o*t2-o*t1)-sin(o*t2)+sin(o*t1)),b1=(2*t1*sin(o*t2) -2*sin(o*t1)*t2)/(sin(o*t2-o*t1)-sin(o*t2)+sin(o*t1))]]); (%o11) [[a1=-(-(2*%pi*cos(o*t2))/o-4*t2+(2*%pi)/o)/(2*sin(o*t2)),b0=%pi/o,b1=-%pi/o]] (%i12) subst(3*%pi/(2*o), t2, [[a1=-(-(2*%pi*cos(o*t2))/o-4*t2+(2*%pi)/o)/(2*sin(o*t2)),b0=%pi/o,b1= -%pi/o]]); (%o12) [[a1=-(2*%pi)/o,b0=%pi/o,b1=-%pi/o]] 従って a1= -2π/ω b0=π/ω b1=-π/ω ということになる。これをy(t)の式に代入してプロットしてみると wxplot2d([-2*%pi*sin(t)-%pi*cos(t)+%pi,2*t], [t,0,2*%pi])$ ω=1と置いて2πまでの時間をプロットしたもの。t=0,π,3π/2 の3点でe(t)とy(t)のカーブが一致していることが確認できる。 さすがに項数が少ないと正弦波そのものなので近似とはいいがたいが、確かにサンプル値は一致している。 微分方程式と違って、Fourier級数の場合には係数が与えられるとそれによって唯一の関数が定まる。従ってサンプル数を多くとればそれだけ多くの次数の係数を解くことができより近似な関数が得られるということになる。 実際にはこれはサンプル数が多くなると連立方程式を解くのは大変なことになるので、実用的な波形補完はナイキスト・シャノンのサンプリング定理に基づいて、ナイキストレートによる等間隔に入力信号をサンプルした離散データ列と重み漬け関数(フィルターの伝達関数)をサンプリングした離散データ列とをたたき込み積分する方法が用いられる。詳しくは離散Fourier変換とδ関数、サンプリング定理を学ばないと難しいので割愛。後日「デジタル信号処理理論おもちゃ箱」とかいうボードが出来た暁にはその辺も触れてみたい。 |
webadm | 投稿日時: 2009-8-8 21:17 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【2】Fourier係数の式の導出 2番目の問題は理論の時にやったFourier級数の係数の式を導く問題。
理論の時はだいぶ間を端折っていたので、ここできっちりおさらいを。 Fourier級数の式は y(t)=Σan*sin(nωt)+b0+Σbn*cos(nωt) (n=1,∞) だったよね。 わかりやすく書くとFourier級数は正弦波の重ね合わせ(superposition)のこと y(t)=a1*sin(ωt)+a2*sin(2ωt)+...+an*sin(nωt)+b0+b1*cos(ωt)+b2*cos(2ωt)+...+bn*cos(nωt) (n=∞) それぞれの係数はどうやって決める?という問題。 最初に正弦波は波長の整数倍で積分すると0になるという性質を利用すればsinとcosの項は全部0になり、b0の項だけ残るはず。両辺の最短周期Tで積分すると ∫y(t)dt=∫(Σan*sin(nωt)+b0+Σbn*cos(nωt)dt =∫(a1*sin(ωt)+a2*sin(2ωt)+...+bn*sin(nωt)+b0+b1*cos(ωt)+b2*cos(2ωt)+...+bn*cos(nωt)) =∫a1*sin(ωt)dt+∫a2*sin(2ωt)dt+...+∫an*sin(nωt)dt+∫b0dt+∫b1*cos(ωt)dt+∫b2*cos(2ωt)dt+...+∫bn*cos(nωt)dt =a1∫sin(ωt)dt+a2*∫sin(2ωt)dt+...+an∫sin(nωt)dt+b0∫dt+b1∫cos(ωt)dt+b2∫cos(2ωt)dt+...+bn∫cos(nωt)dt ここで ∫sin(ωt)dt=∫sin(2ωt)dt=...=∫sin(nωt)dt=0 (t=0,T) ∫cos(ωt)dt=∫cos(2ωt)dt=...=∫cos(nωt)dt=0 (t=0,T) ∫dt=T なので ∫y(t)dt=b0*T ∴b0=(1/T)∫y(t)dt ということになる。 一方今度はsin^2の積分は0とならないことを利用して両辺にsin(mωt)を乗じて積分すると ∫y(t)*sin(mωt)dt=∫(Σan*sin(nωt)+b0+Σbn*cos(nωt)*sin(mωt)dt =∫(a1*sin(ωt)+a2*sin(2ωt)+...+an*sin(nωt)+b0+b1*cos(ωt)+b2*cos(2ωt)+...+bn*cos(nωt))*sin(mωt)dt =∫a1*sin(ωt)*sin(mωt)dt+∫a2*sin(2ωt)*sin(mωt)dt+...+∫an*sin(nωt)*sin(mωt)dt+∫b0*sin(mωt)dt+∫b1*cos(ωt)*sin(mωt)dt+∫b2*cos(2ωt)*sin(mωt)dt+...+∫bn*cos(nωt)*sin(mωt)dt =a1∫sin(ωt)*sin(mωt)dt+a2∫sin(2ωt)*sin(mωt)dt+...+an∫sin(nωt)*sin(mωt)dt+b0∫sin(mωt)dt+b1∫cos(ωt)*sin(mωt)dt+b2∫cos(2ωt)*sin(mωt)dt+...+bn∫cos(2ωt)*sin(mωt)dt ここで ∫sin(mωt)dt=0 であるためb0の積分項は常に0 また係数ak(k=1,∞)の積分項に関して ∫sin(kωt)*sin(mωt)dt =∫(1/2)(cos((k-m)ωt)-cos((k+m)ωt))dt =(1/2)∫cos((k-m)ωt)dt-(1/2)∫cos((k+m)ωt)dt =0 (k≠m) =T/2 (k=m) ということから、mと等しい次数の係数の積分項以外は0になる。 またbk(k=1,∞)の積分項に関しても ∫cos(kωt)*sin(mωt)dt =∫(1/2)(sin((k+m)ωt)dt-sin((k-m)ωt))dt =(1/2)∫sin((k+m)ωt)dt-(1/2)∫sin((k-m)ωt)dt =0 であることから ∫y(t)*sin(nωt)dt=an*(T/2) (n=1,∞) 従って an=(2/T)∫y(t)*sin(nωt)dt (n=1,∞) ということになる。 同様に今度はcos^2の積分が0でないことを利用して両辺にcos(mωt)を乗じて積分すると ∫y(t)*cos(mωt)dt=∫(Σan*sin(nωt)+b0+Σbn*cos(nωt)*cos(mωt)dt =∫(a1*sin(ωt)+a2*sin(2ωt)+...+an*sin(nωt)+b0+b1*cos(ωt)+b2*cos(2ωt)+...+bn*cos(nωt))*cos(mωt)dt =∫a1*sin(ωt)*cos(mωt)dt+∫a2*sin(2ωt)*cos(mωt)dt+...+∫an*sin(nωt)*cos(mωt)dt+∫b0*cos(mωt)dt+∫b1*cos(ωt)*cos(mωt)dt+∫b2*cos(2ωt)*cos(mωt)dt+...+∫bn*cos(nωt)*cos(mωt)dt =a1∫sin(ωt)*cos(mωt)dt+a2∫sin(2ωt)*cos(mωt)dt+...+an∫sin(nωt)*cos(mωt)dt+b0∫cos(mωt)dt+b1∫cos(ωt)*cos(mωt)dt+b2∫cos(2ωt)*cos(mωt)dt+...+bn∫cos(2ωt)*cos(mωt)dt ここで ∫cos(mωt)dt=0 であるためb0の積分項は常に0 また係数ak(k=1,∞)の積分項に関して ∫sin(kωt)*cos(mωt)dt =∫(1/2)(sin((k+m)ωt)+sin((k-m)ωt))dt =(1/2)∫sin((k+m)ωt)dt+(1/2)∫sin((k-m)ωt)dt =0 またbk(k=1,∞)の積分項に関しても ∫cos(kωt)*cos(mωt)dt =∫(1/2)(cos((k-m)ωt)dt+cos((k+m)ωt))dt =(1/2)∫cos((k-m)ωt)dt+(1/2)∫cos((k-m)ωt)dt =0 (k≠m) =T/2 (k=m) であることから ∫y(t)*cos(nωt)dt=bn*(T/2) (n=1,∞) 従って bn=(2/T)∫y(t)*cos(nωt)dt (n=1,∞) ということになる。 数学の本で扱っているFourier級数の式や最近の電気理論の教科書で出てくるものも以下のようにb0に(1/2)の係数がついている y(t)=Σan*sin(nωt)+(1/2)b0+Σbn*cos(nωt) (n=1,∞) 昔は電気の世界ではb0の(1/2)の係数は無かったのだが、数学の世界で教えるのと違っているのはいろいろ不都合なので、今は同じにしているようだ。このことによってFourier係数はちょっとスマートになる an=(2/T)∫y(t)*sin(nωt)dt b0=(2/T)∫y(t)dt bn=(2/T)∫y(t)*cos(nωt)dt と係数がみな(2/T)と統一される。 従って y(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt)) an=(2/T)∫y(t)*sin(nωt)dt (n=1,∞) bn=(2/T)∫y(t)*cos(nωt)dt (n=0,∞) という風に表すことができる。こうすると複素形式のFourier級数の式も導きやすくなる。 |
webadm | 投稿日時: 2009-8-12 10:08 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【3】半波整流波のFourier級数展開 3つめの問題は正弦波を半波整流した波形をFourier級数に展開せよというもの。
こんな面倒なことを何故わざわざ苦労してと思うけど、いくつかこれをやらないと気が付かない発見がある。 半波整流波は y(t)=A*sin(ωt) (0≧t≧T/2) =0 (T/2≧t≧T) で表されるとすると、これは対称波でもなく偶関数でもなく奇関数でもない。 Fourier級数展開を y(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt))dt とすると b0=(2/T)∫y(t)dt =(2/T)∫A*sin(ωt)dt (0≦t≦T/2) +(2/T)∫0dt (T/2≦t≦T) =(2/ωT)*A*(1-cos(ωT/2)) ここで ωT=2π を代入すると b0=(2/2π)*A*(1-cos(2π/2)) =(1/π)*A*(1-cos(π)) =2*A/π また an=(2/T)∫y(t)*sin(nωt)dt =(2/T)∫A*sin(ωt)*sin(nωt)dt (0≦t≦T/2) +(2/T)∫0*sin(nωt)dt (T/2≦t≦T) ここで疑問なのは正弦波の半周期とその高調波の積の積分がどうなるかである。正弦波の全周期とその高調波の積の積分は0となることは承知の通りである。しかし今回は半周期である。 それぞれの高調波についてプロットしてみることにしよう。 半波整流波と二次の高調波の積をプロットしてみると wxplot2d([sin(t),sin(t)*sin(2*t)], [t,0,%pi])$ どうやらこれは積分は正と負が対称なので0になりそうである。 次ぎに三次の高調波の場合 wxplot2d([sin(t),sin(t)*sin(3*t)], [t,0,%pi])$ これは微妙だな。正の2つのこぶを足し合わせた面積が負の大きな凹みの面積と一致すれば積分は0となるはず。 wxplot2d([sin(t),sin(t)*sin(4*t)], [t,0,%pi])$ どうやら偶数次の高調波との積については積分は0になりそうである。 これはどうやって証明すればいいのだ? そのままanの定積分を計算すると an=(2/T)∫A*sin(ωt)*sin(nωt)dt (0≦t≦T/2) +(2/T)∫0*sin(nωt)dt (T/2≦t≦T) =(2*A/T)∫sin(ωt)*sin(nωt)dt (0≦t≦T/2) =(2*A/T)*(1/2ω)*(sin((n-1)*ωT/2)/(n-1)-sin((n+1)*ωT/2)/(n+1)) (n≠±1) =(A/ωT)*(sin((n-1)*ωT/2)/(n-1)-sin((n+1)*ωT/2)/(n+1)) ここで ωT=2π なので an=(A/2π)*(sin((n-1)*π)/(n-1)-sin((n+1)*π)/(n+1)) =0 (n≠±1) ということでn=1の場合は別途求める必要がある a1=(2/T)∫A*sin(ωt)*sin(ωt)dt (0≦t≦T/2) =(2*A/T)∫(1/2)*(cos(0)-cos(2ωt))dt =(A/T)∫(1-cos(2ωt))dt =(A/T)∫dt-(A/T)∫cos(2ωt)dt (0≦t≦T/2) =(A/T)*(T/2) =A/2 ということになる。 また bn=(2/T)∫y(t)*cos(nωt)dt (0≦t≦T) =(2/T)∫A*sin(ωt)*cos(nωt)dt (0≦t≦T/2) +(2/T)∫0*cos(nωt)dt (T/2≦t≦T) =(2/T)*((A/2ω)*(cos((n-1)*ωT/2)/(n-1)-cos((n+1)*ωT/2)/(n+1)-2/(n^2-1)) =(A/ωT)*(cos((n-1)*ωT/2)/(n-1)-cos((n+1)*ωT/2)/(n+1)-2/(n^2-1)) ここで ωT=2π なので bn=(A/2π)*(cos((n-1)*π)/(n-1)-cos((n+1)*π)/(n+1)-2/(n^2-1)) (n≠±1) =(A/2π)*((-1)^(n-1)/(n-1)-(-1)^(n+1)/(n+1)-2/(n^2-1)) (n≠±1) ここでnが偶数の場合 bn=(A/2π)*(-1/(n-1)+1/(n+1)-2/(n^2-1)) =(A/2π)*(-(n+1)/(n^2-1)+(n-1)/(n^2-1)-2/(n^2-1)) =(A/2π)*(-4/(n^2-1)) =(A/π)*(-2/(n^2-1)) (n=2,4,6,...) nが奇数の場合 bn=(A/2π)*(1/(n-1)-1/(n+1)-2/(n^2-1)) =(A/2π)*((n+1)/(n^2-1)-(n-1)/(n^2-1)-2/(n^2-1)) =(A/2π)*(2/(n^2-1)-2/(n^2-1)) =0 (n=3,5,7,...) ということになる。 一方n=1の場合は b1=(2/T)∫A*sin(ωt)*cos(ωt)dt (0≦t≦T/2) =(2/T)*(A/2ω)*(1-cos(ωT/2)^2) =(A/ωT)*(1-cos(ωT/2)^2) ωT=2π なので b1=(A/2π)*(1-cos(π)^2) =0 従って半波整流波のFourier級数展開は y(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt)) =(1/2)*(2*A/π)+(A/2)*sin(ωt)+(A/π)*((-2/3)*cos(2ωt)+(-2/15)*cos(4ωt)+(-2/35)*cos(6ωt)+...) =(A/2)*sin(ωt)+(A/π)*(1-(2/3)*cos(2ωt)-(2/15)*cos(4ωt)-(2/35)*cos(6ωt)+...) ということになる。 六次までの高調波を含めた級数式をプロットしてみると wxplot2d([(-(2*cos(6*t))/35-(2*cos(4*t))/15-(2*cos(2*t))/3+1)/%pi+sin(t)/2], [t,0,4*%pi])$ 半波整流波にかなり近づいている。 なかなか簡単そうに見えて簡単ではない。ましてIQの低いものにとっては躓きの材料満載である。(ほとんど三角関数と微分と積分のおさらいだってのは内緒だよ、判っている人は飛ばして先に進んでよろしい) この他に、T/4だけ位相をずらして波形を偶関数としてFourier級数を求める別解もある。偶関数だと基本波も高調波もすべて偶関数(cos)のみになることはもう知っているよね。 それ以外に全波整流波形と元の正弦波との重ね合わせとして半波整流波形を定義してFourier級数展開するという解法もある。 それらの別解は読者の課題としよう(´∀` ) P.S 著者の解を見ると2カ所不備がある。ひとつはanがn=1以外で一律0となる証明を省略している点。半周期なので全周期の積分とは厳密には異なる。2つ目はbnの式がn=1の場合には一部の分母が0となるため値が不定となるので、別途n=1の場合の式を立てて求めないといけないがそれをせずに一律nが奇数のときはbn=0としている点。 |
webadm | 投稿日時: 2009-8-13 8:34 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【4】ノコギリ波のFourier級数展開 次ぎもFourier級数展開の問題。
ノコギリ波は、アナログオシロスコープの水平スイープ偏向信号とか、スイープジェネレーターのVCOの制御信号とか、アナログTVの水平偏向信号とかいろいろ使われている。 いずれもリニアに右上がりで上昇する電圧が、ある時点でリセットするか急降下するを繰り返すもの。リニアな上昇のところでオシロスコープやTVなどでビームを水平方向に走査される。スイープジェネレータではVCOの周波数がリニアに上昇する。 ノコギリ波は時間軸の原点をどこにおいても対称波でもなく、偶関数でもなく奇関数でもない。 題意から e(t) =(2*A/T)*t (0≦t≦T/2) =0 (T/2≦t≦T) Fouier級数を e(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt))dt とするとFourier係数はそれぞれ b0=(2/T)∫y(t)dt (0≦t≦T) =(2/T)∫(2*A/T)*tdt (0≦t≦T/2) +(2/T)∫0dt (T/2≦t≦T) =(2/T)*(2*A/T)*(T^2/8) =A/2 an=(2/T)∫y(t)*sin(nωt)dt (0≦t≦T) =(2/T)∫(2*A/T)*t*sin(nωt)dt (0≦t≦T/2) +(2/T)∫0*sin(nωt)dt (T/2≦t≦T) =(2/T)*(2*A/T)*(sin(nωT/2)-nωT*cos(nωT/2))/(2*n^2*ω^2) =(2*A/T^2)*(sin(nωT/2)-nωT*cos(nωT/2))/(n^2*ω^2) ここで ω=2π/T を代入すると an=(2*A/T^2)*(sin(nπ)-2πn*cos(nπ))/(n^2*(2π/T)^2) =(A/2π^2)*(sin(nπ)-2πn*cos(nπ))/n^2 =-(A/π)*cos(nπ)/n =-(A/π)*(-1)^n/n (n=1,∞) また bn=(2/T)∫y(t)*cos(nωt)dt (0≦t≦T) =(2/T)∫(2*A/T)*t*cos(nωt)dt (0≦t≦T/2) +(2/T)∫0*cos(nωt)dt (T/2≦t≦T) =(2/T)*(2*A/T)∫t*cos(nωt)dt (0≦t≦T/2) =(4*A/T^2)*((nωT*sin(nωT/2)+2*cos(nωT/2))/(2*n^2*ω^2)-1/(n^2ω^2)) ここで ω=2π/T を代入すると bn=(4*A/T^2)*(2πn*sin(nπ)+2*cos(nπ))/(2*n^2*(2π/T)^2)-1/(n^2*(2π/T)^2)) =(A/π^2)*(2πn*sin(nπ)+2*cos(nπ))/(2*n^2)-1/n^2) =(A/π^2)*(cos(nπ)/n^2-1/n^2) =(A/π^2)*((-1)^n/n^2-1/n^2) (n=1,∞) =-(2*A/π^2)/n^2 (n=1,3,5,...) =0 (n=2,4,6,...) ということになる。 従ってFourier級数は e(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt)) =(1/2)*(A/2)+Σ((-(A/π)*(-1)^n/n)*sin(nωt)+(A/π^2)*((-1)^2n/n^2-1/n^2)*cos(nωt)) (n=1,∞) =A/4+(A/π)*(sin(ωt)-(1/2)*sin(2ωt)+(1/3)*sin(3ωt)+...) -(2*A/π^2)*(cos(ωt)+(1/9)*cos(3ωt)+(1/25)*cos(5ωt)+...) ということになる。 これをプロットしてみると wxplot2d([-(2*(cos(5*x)/25+cos(3*x)/9+cos(x)))/%pi^2+(sin(3*x)/3-sin(2*x)/2+sin(x))/%pi +1/4], [x,0,4*%pi])$ ううむ、いまいち直線性が悪く収束が甘いけど致し方ない。 これから判るのは、ノコギリ波の直線性を良くするには回路にかなりの広帯域特性が要求されるということである。昔からアマチュア無線の送信機の終段にはTV用の水平偏向出力管がよく流用されていたのは広帯域性と直線性の良さからだろう。 |
webadm | 投稿日時: 2009-8-14 9:45 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【5】対称波のFourier係数 理論の時に天下り的に出てきた対称波のFourier係数の式を導けという問題。
対称波は半周期が残りの半周期を符合反転したものと同じ波形になるので y(t+T/2)=-y(t) が成り立つ。 従ってFourier級数展開は y(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt)) とすると b0=(2/T)∫y(t)dt =(2/T)∫y(t)dt (0≦t≦T/2) +(2/T)∫y(t+T/2) (T/2≦t≦T) =(2/T)∫y(t)dt-(2/T)∫y(t)dt =0 つまり平均値は0ということになる。 また以下が成り立つ必要がある -y(t)=-Σ(an*sin(nωt)+bn*cos(nωt)) =y(t+T/2) =Σ(an*sin(nω(t+T/2))+bn*cos(nω(t+T/2))) ここで T=2π/ω を代入すると -y(t)=-Σ(an*sin(nωt)+bn*cos(nωt)) =y(t+T/2) =Σ(an*sin(nωt+nπ)+bn*cos(nωt+nπ)) (n=1,∞) =Σ(an*sin(nωt)*(-1)^n+bn*cos(nωt)*(-1)^n) (n=1,∞) が成り立たなければならない。nが奇数の時のみ成り立つ。 すなわちnが偶数の場合にはan=bn=0とならなければならない。 従って an=(2/T)∫y(t)*sin(nωt)dt (0≦t≦T) =(2/T)∫y(t)*sin(nωt)dt+(2/T)∫y(t+T/2)*sin(nω(t+T/2))dt (0≦t≦T/2) =(2/T)∫y(t)*sin(nωt)dt-(2/T)∫y(t)*sin(nωt+nπ)dt =(2/T)∫y(t)*sin(nωt)dt-(2/T)∫y(t)*sin(nωt)*(-1)^ndt =(4/T)∫y(t)*sin(nωt)dt (n=1,3,5,... 0≦t≦T/2) ということになる。同様に bn=(2/T)∫y(t)*cos(nωt)dt (0≦t≦T) =(2/T)∫y(t)*cos(nωt)dt+(2/T)∫y(t+T/2)*cos(nω(t+T/2))dt (0≦t≦T/2) =(2/T)∫y(t)*cos(nωt)dt-(2/T)∫y(t)*cos(nωt+nπ)dt =(2/T)∫y(t)*cos(nωt)dt-(2/T)∫y(t)*cos(nωt)*(-1)^ndt =(4/T)∫y(t)*cos(nωt)dt (n=1,3,5,... 0≦t≦T/2) ということになる。 従って a(2m+1)=(4/T)∫y(t)*sin((2m+1)ωt)dt (m=0,1,2,... 0≦t≦T/2) b(2m+1)=(4/T)∫y(t)*cos((2m+1)ωt)dt (m=0,1,2,... 0≦t≦T/2) a(2m)=b(2m)=b0=0 (m=0,1,2,...) ということになる。 |
webadm | 投稿日時: 2009-8-14 10:46 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【6】奇関数波のFourier係数 次ぎも理論の時に出てきた奇関数のFouier係数の式を導く問題。
奇関数は原点を中心に対称な波形なので y(t)=-y(-t) が成り立つ。 従ってFourier級数展開 y(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt)) -y(-t)=-(1/2)b0-Σ(an*sin(-nωt)+bn*cos(-nωt)) =-(1/2)b0+Σan*sin(nωt)-Σbn*cos(nωt) 上記の2式が相等しくなければならず、それには b0=bn=0 でなければならない また an=(2/T)∫y(t)*sin(nωt)dt (0≦t≦T) =(2/T)∫y(t)*sin(nωt)dt (0≦t≦T/2) +(2/T)∫y(t+T/2)*sin(nω(t+T/2))dt (0≦t≦T/2) =(2/T)∫y(t)*sin(nωt)dt (0≦t≦T/2) -(2/T)∫(-t-T/2)*sin(nω(t+T/2))dt (0≦t≦T/2) =(2/T)∫y(t)*sin(nωt)dt (0≦t≦T/2) +(2/T)∫y(t)*sin(nωt)dt (-T/2≧t≧0) =(2/T)∫y(t)*sin(nωt)dt (0≦t≦T/2) +(2/T)∫y(-t)*sin(-nωt)dt (0≦t≦T/2) =(2/T)∫y(t)*sin(nωt)dt+(2/T)∫y(t)*sin(nωt)dt (0≦t≦T/2) =(4/T)∫y(t)*sin(nωt)dt (0≦t≦T/2) ということになる。 面倒なのは一周期の積分ではなく半周期の積分の2倍で表されるという証明である。左右波形は対称なので半周期の積分は等しいのは自明だが、数学的に証明するのは結構骨がおれる。 繰り返し関数なので y(t)=y(t+T)=y(t-T) また奇関数の性質 y(t)=-y(-t) と、定積分の ∫f(x)dx (x=a,c) +∫f(x)dx (x=c,b) =∫f(x)dx (x=a,b) という性質やf(x)の原始関数をF(x)とした場合 -∫f(x)dx (x=a,b) =∫f(x)dx (x=b,a) =-(F(b)-F(a)) =F(a)-F(b) を利用した。 IQ値の低い者にとってはつらいのう。 |
webadm | 投稿日時: 2009-8-14 11:12 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【7】偶関数波のFourier係数 次ぎは同様に偶関数波のFourier係数の式の導出問題。
偶関数波は時間0を境に左右対称になるので y(t)=y(-t) が成り立つ。 従ってFourier級数展開は y(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt)) y(-t)=(1/2)b0+Σ(an*sin(-nωt)+bn*cos(-nωt)) =(1/2)b0-Σan*sin(nωt)+Σbn*cos(nωt) 上記の二式は相等しくなければならないため an=0でなければならない。 b0=(2/T)∫y(t)dt (0≦t≦T) =(2/T)∫y(t)dt (0≦t≦T/2) +(2/T)∫y(t)dt (T/2≦t≦T) =(2/T)∫y(t)dt (0≦t≦T/2) +(2/T)∫y(t-T)dt (T/2≦t≦T) =(2/T)∫y(t)dt (0≦t≦T/2) +(2/T)∫y(-(t-T))dt (T/2≧t≧0) =(2/T)∫y(t)dt (0≦t≦T/2) +(2/T)∫y(t-T)dt (0≦t≦T/2) =(2/T)∫y(t)dt+(2/T)∫y(t)dt (0≦t≦T/2) =(4/T)∫y(t)dt (0≦t≦T/2) ということになる。 面倒なのは一周期の積分ではなく半周期の積分の2倍で表されるという証明である。左右波形は対称なので半周期の積分は等しいのは自明だが、数学的に証明するのは結構骨がおれる。 繰り返し関数なので y(t)=y(t+T)=y(t-T) また偶関数の性質 y(t)=y(-t) と、定積分の ∫f(x)dx (x=a,c) +∫f(x)dx (x=c,b) =∫f(x)dx (x=a,b) という性質やf(x)の原始関数をF(x)とした場合 -∫f(x)dx (x=a,b) =∫f(x)dx (x=b,a) =-(F(b)-F(a)) =F(a)-F(b) を利用した。 まさに数式の知恵の輪を解くようなものである。 |
webadm | 投稿日時: 2009-8-18 9:46 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【8】奇数次高調波のみの波形 次ぎの問題ははなはだ曖昧な問い。
基本波、第三高調波、第五高調波からなる波形が時間軸上のある点で対称となるとき、その波形はどのように表されるか? というもの。問題は対称という意味が曖昧なのだが、ひずみ波で波形が対称性となるのは ・対称波 ・奇関数 ・偶関数 の3種類である。それぞれについて可能性を調べてみよう。 対称波という意味であれば y(t+T/2)=-y(t) となる点があるはず。 y(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt)) とすれば、基本波と第三高調波、第五高調波からなる場合 y(t)=(1/2)b0+a1*sin(ωt)+a3*sin(3ωt)+a5*sin(5ωt)+b1*cos(ωt)+b3*cos(3ωt)+b5*cos(5ωt) と表すことができる。一方対称となるためには y(t+T/2)=(1/2)b0+a1*sin(ω(t+T/2))+a3*sin(3ω(t+T/2))+a5*sin(5ω(t+T/2))+b1*cos(ω(t+T/2))+b3*cos(3ω(t+T/2))+b5*cos(5ω(t+T/2)) ここで T=2π/ω を代入すると y(t+T/2)=(1/2)b0+a1*sin(ω(t+π/ω))+a3*sin(3ω(t+π/ω))+a5*sin(5ω(t+π/ω))+b1*cos(ω(t+π/ω))+b3*cos(3ω(t+π/ω))+b5*cos(5ω(t+π/ω)) =(1/2)b0+a1*sin(ωt+π)+a3*sin(3ωt+3π)+a5*sin(5ωt+5π)+b1*cos(ωt+π)+b3*cos(3ωt+3π)+b5*cos(5ωt+5π) =(1/2)b0-a1*sin(ωt)-a3*sin(3ωt)-a5*sin(5ωt)-b1*cos(ωt)-b3*cos(3ωt)-b5*cos(5ωt) 従ってb0=0の場合 y(t+T/2)=-y(t) が成り立つので y(t)=a1*sin(ωt)+a3*sin(3ωt)+a5*sin(5ωt)+b1*cos(ωt)+b3*cos(3ωt)+b5*cos(5ωt) wxplot2d([sin(5*t)+cos(5*t)+sin(3*t)+cos(3*t)+sin(t)+cos(t)], [t,-5,5])$ ということになる。 今度は奇関数波である場合を検討してみよう。 奇関数では y(t)=-y(-t) が成り立つ必要から -y(-t)=-(1/2)b0-a1*sin(-ωt)-a3*sin(-3ωt)-a5*sin(-5ωt)-b1*cos(-ωt)-b3*cos(-3ωt)-b5*cos(-5ωt) =-(1/2)b0+a1*sin(ωt)+a3*sin(3ωt)+a5*sin(5ωt)-b1*cos(ωt)-b3*cos(3ωt)-b5*cos(5ωt) 従ってb0=b1=b3=b5=0であれば題意の条件を満たす。 y(t)=a1*sin(ωt)+a3*sin(3ωt)+a5*sin(5ωt) wxplot2d([sin(5*x)+sin(3*x)+sin(x)], [x,-5,5])$ 残りの偶関数の可能性をチェックしてみよう。 偶関数なら y(t)=y(-t) が成り立つ必要があるので y(-t)=(1/2)b0+a1*sin(-ωt)+a3*sin(-3ωt)+a5*sin(-5ωt)+b1*cos(-ωt)+b3*cos(-3ωt)+b5*cos(-5ωt) =(1/2)b0-a1*sin(ωt)-a3*sin(3ωt)-a5*sin(5ωt)+b1*cos(ωt)+b3*cos(3ωt)+b5*cos(5ωt) 従ってa1=a3=a5=0なら題意の条件を満たすことになる。 y(t)=(1/2)b0+b1*cos(ωt)+b3*cos(3ωt)+b5*cos(5ωt) wxplot2d([cos(5*x)+cos(3*x)+cos(x)], [x,-5,5])$ 著者の解では題意をある時間を原点として点対称となる奇関数の意と解釈し、それだけを検証している。 P.S あとで良く考えたら対称波の検証の際に-y(t)とy(t+T/2)を比較すべきところをy(t)とy(t+T/2)と比較してしまっていた。訂正してお詫びする。 |
webadm | 投稿日時: 2009-8-19 2:40 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
【9】ノコギリ波のFourier級数展開(その2) 以前にも出てきたノコギリ波のFourier級数展開問題。こんどのはどちらかというとデューティ比が100%の三角波ともいうべきもので、これを半波整流すると前に出てきたノコギリ波になる。
通常通りFourier級数を解析的に求めるだけだと著者の解法とまったく変わりないので、違う方法でやってみよう。 Fourier級数もFourier変換と同様に重ね合わせ(Superosition)が適用できる。すなわち y(t)=f(t)+g(t) の場合そのFourier級数とFourier係数は y(t)=(1/2)b0+Σ(an*sin(nωt)+bn*cos(nωt)) an=(2/T)∫y(t)*cos(nωt)dt =(2/T)∫(f(t)+g(t))*cos(nωt)dt =(2/T)∫f(t)*cos(nωt)dt+(2/T)∫g(t)*cos(nωt)dt bn=(2/T)∫y(t)*cos(nωt)dt =(2/T)∫(f(t)+g(t))*cos(nωt)dt =(2/T)∫f(t)*cos(nωt)dt+(2/T)∫g(t)*cos(nωt)dt と表されるので、Fourier係数はそれぞれの関数のFourier係数の和となる。 前のノコギリ波の場合は f(t)=(2/T)*A*t (0≦t≦T/2) =0 (T/2≦t≦T) これは半波整流された正極性の部分だけだが、逆極性の分は g(t)=0 (0≦t≦T/2) =-(2/T)*A*(T-t) =-f(T-t) と表すことができる。題意のノコギリ波はこの2つの関数の合成として表すことができるので y(t)=f(t)+g(t) 既にf(t)に関するFourier係数は前の問題で求めているので、g(t)に関するFourier係数を求めて合成すれば良いことになる。 a'n=(2/T)∫g(t)*sin(nωt)dt (T/2≦t≦T) =(2/T)∫(-(2/T)*A*(T-t))*sin(nωt)dt =(2/T)∫(-2A+(2/T)*A*t)*sin(nωt)dt =-(4*A/T)∫sin(nωt)dt+(2/T)∫(2/T)*A*t*sin(nωt)dt (T/2≦t≦T) =-(4*A/T)*(cos(nωT/2)/nω-cos(nωT)/nω)+(2*A/T)*((sin(nωt)-nωT*cos(nωt)/n^2ω^2-(2*sin(nωT/2)-nωT*cos(nωT/2))/2*n^2*ω^2)) ここで ω=2π/T を代入すると a'n=-(2*A/πn)*(cos(πn)-cos(2πn))+(A*T/2π^2*n^2)*(sin(2πn)-sin(πn)+πn*(cos(πn)-2*cos(2πn))) =(2*A/πn)*(1-(-1)^n)+(A/π*n)*((-1)^n-2) =(A/πn)*(2-2*(-1)^n+(-1)^n-2) =-(A/πn)*(-1)^n (n=1,∞) また b'0=(2/T)∫g(t)dt (T/2≦t≦T) =(2/T)∫(-(2/T)*A*(T-t))dt =(2/T)∫(-2A+(2/T)*A*t)dt =-(4*A/T)∫dt+(4*A/T^2)∫tdt =-2*A+3*A/2 =-A/2 同様に b'n=(2/T)∫g(t)*cos(nωt)dt (T/2≦t≦T) =(2/T)∫(-(2/T)*A*(T-t))*cos(nωt)dt =(2/T)∫(-2A+(2/T)*A*t)*cos(nωt)dt =-(4*A/T)∫cos(nωt)dt+(4*A/T^2)∫t*cos(nωt)dt =-(4*A/nωt)*(sin(nωT)-sin(nωT/2))+(2*A/n^2*ω^2*T^2)*(2*nωT*sin(nωT)+2*cos(nωT)-nωT*sin(nωT/2)-2*cos(nωT/2)) ここで ω=2π/T を代入すると b'n=(2*A/πn)*(sin(πn)-sin(2πn))+(A/π^2*n^2)*(2πn*sin(2πn)+cos(2πn)-πn*sin(πn)-cos(πn)) =(A/π^2*n^2)*(cos(2πn)-cos(πn)) =(A/π^2*n^2)*(1-(-1)^n) =2*A/π^2*n^2 (n=1,3,5,...) =0 (n=2,4,6,...) 従ってg(t)のFourier級数展開は g(t)=-A/4+(A/π)*(sin(ωt)-sin(2ωt)/2+sin(3ωt)/3+...)+(2*A/π^2)*(cos(ωt)+cos(3ωt)/3^2+...) それに対して前の問題で求めた正極性側のFourier級数展開は f(t)=A/4+(A/π)*(sin(ωt)-sin(2ωt)/2+sin(3ωt)/3+...)-(2*A/π^2)*(cos(ωt)+cos(3ωt)/3^2+...) 従ってこの2つの合成波のFourier級数展開は y(t)=f(t)+g(t) =(2*A/π)*(sin(ωt)-sin(2ωt)/2+sin(3ωt)/3+...) ということになる。 Fourier係数をプロットすると wxplot2d([-(2*(-1)^n)/(%pi*n)], [n,1,5], [nticks,1])$ ということになる。 これは普通のスペクトルアナライザで表示されるものとは異なって極性が正と負がある。通常の測定器ではパワースペクトルを測定しRMS値で表示するためスペクトルはすべて正の値になる点に注意。その場合はすべての線スペクトルが2*A/πnの漸近線上にプロットされることになる。 P.S いつものことながら面倒な定積分はMaximaを用いて求めた。 重ね合わせを用いれば結構面倒な波形のFourier級数展開も容易に出来ることになる。 |
(1) 2 3 4 ... 8 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |