さて,次は縦数列周期のカラー表示だ

さて,次は縦数列周期のカラー表示だ.方針としては,マトリックスを小ブロックに分割し,それぞれの矩形を塗り分けることで代用するというつもりだが,そのためには,ブロックの分割数,つまりサイズを決定しなくてはならない.⇒横数列周期カラー表示にブロック表示を上書きしてみた.イメージとしては,これに近いものになる.

縦数列周期カラー

このマトリックスはγ=200でα=100.横周期Λは不定だが,α=108のとき最大値20を取る.φ(γ)の値は80だが,小ブロックの周期はもっと小さい.明らかにブロックと認識される矩形サイズは10x10だ.この10という数字がどこから来るものかを知りたい.明らかに言えることは,この区切りは横に0が並んだ行であることだけは間違いない.従って,ゼロ行の発生機序が分かればおそらく小ブロックのサイズを確定できると思われる.これは多分それほど難しくないとは思われるが,試行錯誤なしで式から直接導出できるかどうかが問題だ.しかし,よく見ると,どうもこのパターンはかならずしも理論通りになっていないようにも見える.縦数列のブロックが個々に異なるのはよいのだが,横周期は少なくとも1つ置きには一致してほしい.⇒横周期のカラー表示がまだ収束していない可能性がある.もう一度確認する必要がある.

γ=200のマトリックスでα=94,ε=79 のとき,周期#は10で周期列は{94*,36*, 184, 96, 24, 56, 64, 16, 104, 176, 144, 136}のようになっている.つまり,先頭項は184だ.後半部はおおむね正しく表示されているように見えるが,横インデックスが64より前の部分ではカラー表示が崩れているように見える.どうも,まだ仕上がっていない気配だ.⇒まだいろいろあると思われるので,まず,ともかくマトリックスに異種文字数を出しておくことにしよう.これは,マトリックスに表示される値なので,BuildPowerGridで計算するというのでもよいのではないか?⇒この計算は確かTestMtrixでやっていたはずだ.

TestMatrixでやっているのは,基本的に異種文字数カウントだけだ.BuildPowerGridは独立に呼び出される可能性があるので,別物としておいた方がよい.TestMatrixではs1(), s2()という2つの配列に異種文字数カウントを入れて返している.とりあえず,BuildPowerGridの中からこの関数を呼び出してみよう.

TestMatrixを実行して,System.IndexOutOfRangeExceptionが発生した.work(MT(i, j)) = work(MT(i, j)) + 1でエラーが起きている.workのサイズはγだ.maxにはγ=200が入っている.⇒BuildMatrixにはモードがある.通常はノーマルモードで表示される範囲のマトリックスのためのテーブルを生成し,フルサイズモードの場合のみγ全体をカバーするテーブルを生成している.しかし,異種文字数をカウントするだけならフルサイズのテーブルがなくても間に合うはずなのだが…

つまり,一サイクル分を計算すれば十分なはずだ.ということは,TestMatrixの論理は大幅な書き換えが必要ということではないだろうか?横数列に関してはLambda関数で代用することはできる.縦数列の場合はそれに相当するものがない.GetResidueStripeという関数はある.この関数は文字列を返すようになっているが,改造して配列を返すようにすればよい.グリッドに表示されている範囲だけを計算し,その関数の中で異種文字数をカウントすればよいと思う.つまり,縦数列異種文字数カウント専用ルーチンということでよいのではないだろうか?横数列用も作ることにしよう.一応できたようだ.

image

ただし,BuildPowerGridでは,表示されている範囲の異種文字数しかカウントしていないので,横数列と縦数列で異種文字数の分布が一致するか否かの検定を行うことはできない.とりあえずは,これで十分だ.さて,もう一度マトリックスの不備の問題に立ち返ることにしよう.

どうも,行ヘッダに出す数宇を間違えてしまったようだ.ここにはやはりインデックスが出ていた方がよい.表面には出ていないが,通し番号は行ヘッダ部に表示されている.

横数列の異種文字数カウントには固定部文字数が入っている.このため,桁数ないしΛと一致しない.調整した方がよいのだろうか?調整した値を表示するとすれば,これは剰余数列の周期そのものになり,Λとも一致する.だとすれば,単純にΛ数ないし桁数を直接表示してしまった方が早い.⇒ここでは保留としておく.

α=94で周期の乱れが発生するのは,数列中に1が現れないためと見られる.このため.数列の末項が見つからず,おかしな形に繋がってしまっているものと思われる.⇒初項が検出された場合には必ずモードを切り替える用に修正した.⇒これで正しい表示になったものと思われる.プリントして小ブロックに区切ってみよう.

マトリックスγ200-α94

大体正しい図になったように思われるのだが,厄介な問題が一つある.周期は完全一致していると言ってよいように思われるが,位相に微妙なずれが発生する.これは,行によって固定桁が異なるためだ.従って,位相のずれは避けられないと思われるのだが,それが縦数列にどう影響するのかがまだよく分かっていない.⇒いや,均等にずれるのだから,その影響は無視できるのではないか?仕上がりは,下の図版から横数列のカラー表示を抜いたようなものになると考えられるのだが…

マトリックスγ200-α94-2

イメージとしては,概要,下図のようなものを想定しているのだが…

マトリックスγ200-α94W

この図版はγ=200を64x64で出力したものだが,縦数列の周期が10なので,200÷10=20のパターンが出現することになると考えられる.いまのところ縦数列に関して分かっていることは回文になる数列が存在するということくらいしかない.上のような色付けならある程度機械的に処理できると考えられるので,このくらいで手を打ちたいというのが本音のところだ.⇒同じ番号を同色で塗りつぶすという手も考えられる.この場合,横一列に0行と1行が並ぶので縦数列の特異性が多少なりとも見えてくるのではないだろうか?

これは試してみる価値のある実験であるとは思われる.固定部を切り捨てて,強制的に位相をそろえたらどういうことになるのだろう?それもまたおもしろい実験になりそうな気はするのだが…小ブロックのタイルを敷き詰めるというのは意味のある操作であるとは思われるが,背後になんらかのパターンがないと,ほとんど意味が通じない.意味もなくただ,ダンダラに塗り分けたようにしか見えない.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA