三角関数による最良近似

一般に音の高さは振動数によって決まり,振動数が大きいほど高い音になることはご存知ですね.しかし,たとえばある楽器で「ラ」の音を出したとき,その音にはこの「基音」(440ヘルツ)の他に「2倍音」(880ヘルツ),「3倍音」(1320ヘルツ),・・・が少しずつ含まれており,これらがそれぞれどのような振幅(大きさ)で含まれているかによって,その楽器の「音色」が決まります.
バイオリンなどの弦楽器の音色を表す波形は,おおよそ赤色表示されたグラフのような周期 2π の周期関数で,0≦x≦2π においては1次関数 (π-x)/2 で表されます.“ノコギリ波”と呼ばれています.
この波形を,機械が簡単に作れる単振動(サインカーブ):
  sin x (基音) , sin 2x (2倍音) , sin 3x (3倍音) , ・・・
を組み合わせて表現しようというのが(一昔前の)シンセサイザーです.
ここでは「sin 4x」までを用いて,0≦x≦2π (1周期分)において1次関数 (π-x)/2 を“最良近似”することを考えましょう.
そこで,“機械音”:a sin x+b sin 2x+c sin 3x+d sin 4x と“楽器音”:(π-x)/2 の平方誤差:
  {a sin x+b sin 2x+c sin 3x+d sin 4x)-(π-x)/2}2
を 0≦x≦2π において集めた定積分:
  E:=∫0 {(a sin x+b sin 2x+c sin 3x+d sin 4x)-(π-x)/2}2 dx (E:Error つまり誤差)
が最小となるように,各音の振幅 a,b,c,d を決めます.
定積分 E が「a,b,c,d の関数」であることを頭におきつつ x で積分計算すると,E は a,b,c,d それぞれの2次関数の和として表され
  a=1 , b=1/2 , c=1/3 , d=1/4  (一般に sin kx の振幅が 1/k)
のときに E は最小となることが確かめられます.
それでは,“機械音”(青色のグラフ.初期設定では a=1,b=c=d=0)を見ながら,b を 1/2(=0.5) に, c を 1/3(≒0.33) に, d を 1/4(=0.25) に変えていってください.青色の“機械音”が赤色の“楽器音”に近づいていく様子がわかりますね.
ここでは4倍音までしか使わないのでまだかなり誤差が残っていますが,倍音の個数を限りなく増やしていくと,E→0 となります.つまり,“機械音”は“楽器音”に限りなく近づきます.

↓「ダウンロード」を“右”クリック.「対象をファイルに保存」だかなんだかを左クリックしてファイルをパソコンの任意のフォルダに保存し,予めインストールしておいた function view で開いてください.

ダウンロード

トップへ