任意の周期数列を作る その1
先日Twitterでこんなツイートをしました。
1, 1, 4, 5, 1, 4, 8, 1, 0, 8, 9, 3,... の数列も作ってみた
— ほげ (@hogehogehogege) 2016年3月1日
計算して、どうぞ pic.twitter.com/D6XLjutSUK
この一般項の作り方の話をします。
追記 (2019/12/11)
一般に,周期数列は離散フーリエ変換(DFT)により一般項を求めることが出来ます。実際,周期 の数列 について,
とおけば,数列 の一般項はと表せます。ここで, は虚数単位です。以上により「任意の周期数列を作る」という本記事の趣旨は達成されますが,この記事では
表記
この記事では便宜的に数列とベクトルを同一視した書き方をします。
そしてベクトルとみなした数列を で繋ぎ、加減算・スカラー倍します。
という周期 の数列 と、 次元ベクトル を対応させ、 と便宜的に表記することにします。
あくまでもこの記事の中だけの表記です。
この数列の一般項が のとき と書くことにします。
このとき です。
例えば であるような周期 の数列を
と表記し、 としたときに
のような操作をします。
添え字 は正の整数とします。
周期2
周期2の周期数列は簡単に作れてしまいますが、ここではこの後の話に繋がるような形で求めていきます。
まず2つの数列を用意します。
それぞれ
を意味します。
それぞれの一般項は
となります。*1
任意の周期2の数列は、この2つの数列の一次結合 で表せます。
例えば数列 は、 の 倍と の足し算で表せます。
周期数列 の一般項を作ってみましょう。
数列 は の一次結合で表せるので
両辺の要素を比較して連立すると
となるので、数列 の一般項は
と書けます。
数列 の一般項はそれぞれ なので
が求まります。
周期3
周期が3のときは3つの数列を用意します。
このとき、3つの数列それぞれに対応する3つのベクトルが一次独立になるようにします。
とすると
となるので、この3つの数列(ベクトル)は独立です。
したがって、任意の周期3の数列は の一次結合で表すことができます。
周期数列 の一般項を作ってみましょう。一般項は実数 を用いて
と表すことができます。これを行列にすると
すなわちによって係数 が求まり、一般項
が決定します。具体的に書き出すと
となります。
周期4
任意の周期4の数列を作るには、独立な数列が4つ必要です。
(最短)周期が の4つの数列を次のように用意します。*2
このとき
より4つの数列は独立になります。
同じように周期数列 の一般項を作ります。
この数列の一般項は4つの独立な数列 を用いて
と表すことができます。したがって
によって係数 が求まり、一般項
が求まります。
周期6
任意の周期6の数列を作るために、周期が の独立な数列を次のように6つ用意します。
このとき
となり、6つの数列は独立です。
周期数列 の一般項を求めます。
この数列の一般項は6つの数列 ~ を用いて
と表すことができます。係数 は
によって求まります。これによって一般項
が求まります。
例: 周期6 (1, 1, 4, 5, 1, 4)
ここで、一度ツイートした周期数列 の一般項を実際に作ってみます。
上で定めた6つの数列 を用いて
と表します。
から行列を作ると、係数 が
と求まります。したがって、周期数列 の一般項は
となります。
ツイートしたのはこれを で括って順番を変えた
の形でした。
周期8
任意の周期8の数列を作るために、周期が の独立な数列を次のように8つ用意します。
これら8つの数列は
より独立で、これらの一次結合で任意の周期8の数列が作れます。
~ の一般項はどうやって作りましょう。
まずは の一般項を作るために、似た形の関数をひとつ持ってきます。
ここでは を使うことにしましょう。 が一般項の周期数列は です。すこしずらすだけで が作れそうです。
この を にしちゃえばいいじゃないか!って人もいるかと思いますが、係数を計算する上で数列が常に整数値をとったほうが都合がよいのです。
下の [図 1] の青い曲線が です。
この青い曲線をピンクの矢印のようにずらし、曲線が赤い点を全て通るようにします。
とすればよいので
となります。ずらしたグラフは次の図のようになります。
同様に から も次のように一般項を作ることができます。
それでは今までと同様に周期数列 の一般項を求めます。
と表して
から係数 が求まり、一般項
が求まります。
さて、ここからが本番です!!
・・・・・・と言いたいところですが、続きは作成中です。
次は周期 の順で一般項を作っていくつもりです。