サルタン分光器:ファンのためのラプラシアン

クリスマスの日-普段の出来事を片付けて楽しみを覚える時間-万華鏡、モザイク、雪片...最も美しい星を描くのは誰ですか?



対称性は目を楽しませます。 数学は、美、Python言語、およびそのライブラリ-数学的numpyとグラフィックmatplotlibの作成を支援します。



不可能な格子のスペクトル



KDPVは、特定の対称行列の固有ベクトルの値を視覚化することによって取得されます。

基礎は、規則的な格子のスペクトルです。 それらの特性のいくつかは以前にすでに考慮されました 。 ここで、式は美学に役立ちます。



そのため、平面上にある特定の基本的なポイントのセットがあるとしましょう。 要件はほとんどありません。構成は中央で対称にする必要があります。 たとえば、六角形のグリッドは適切な選択です。



すでに美しい、ほんの少し単調です。



マグカップはドットです。 それぞれが2つの座標によって特徴付けられます。 特定のポイントセットについて、ポイント間の距離の平方マトリックスに基づいて独自の座標を計算できます。 これについては、上記の記事で説明しています。 スペクトルを計算するには、距離の2乗の行列をラプラシアン(この場合は相関行列)に変換し、このラプラシアンのスペクトルを計算する、つまり固有値と対応するベクトルを見つける必要があります。



平面上にある一連の点のスペクトルを計算すると、スペクトルには2つの成分しかありません。1つはx座標に対応し、もう1つはyに対応します。



しかし、スペクトルを「リング」にする必要がありますが、同時に対称性を保持します。 これは簡単に実現できます。 ポイント間の距離の関数を変更(または怒り)させるだけで十分です。 たとえば、ポイント間の距離は距離の2乗ではなく、その立方体または逆距離に等しいと仮定できます。距離に依存する任意の関数を使用できます。



このような「距離のマトリックス」の場合、スペクトルは2次元ではなくなります。 距離行列をスペクトルに分解するアルゴリズムは、非標準距離を満たすように、座標のセットを各点ごとに何らかの方法で選択する必要があります。 そのようなスペクトルは鳴り始めます-一般的な場合のそのコンポーネントの数は、ポイントの総数に等しくなります(ただし、ゼロは除外できます)。



ポイントのセットが対称である場合、コンポーネントの一部は縮退します。 これは、固有値の同じ値が異なる固有ベクトルに対応することを意味します。 この場合、ポイントの初期構成は2次元です。したがって、縮退度は2の倍数になります(おそらく、このステートメントには何らかの定理があります)。 そしてこれは、そのような二重に縮退したレベル-投影-を平面上に描画できることを意味します。 最も単純なバージョンでは、ドットもあります。



距離関数の形式が次のとおりであると仮定します。



f(R2)= w * Rd + 1 / Rd 、ここでw = dist / n ^ 2、Rd = R2 ^度



ここで、 distdegreeは2つの可変摂動パラメータです。 次に、摂動パラメーターdist = -2次数= 1の上記の基本構成(サイズ7の六角形格子)の最初の9つの縮退レベルは次の形式になります。



左上隅には初期構成があります。 パラメーター値は、ほとんど歪まないように選択されます。



すべてのパターンは異なることが保証されていますが、これは固有ベクトルの特性に基づいています(ただし、目で区別できない場合もあります)。 いくつかは他の人よりも珍しいようです。 ここに、例えば、凝った構成の1つがあります:





初期セットとして正方格子を使用できます。 その場合、対称性は正方形になります。





対称性が低下しているため、ここでの非縮退スペクトルの数は縮退スペクトルの2倍です。



色とサイズを追加します。



ドットの色とサイズを指定すると、雪片(パターン)がより楽しく多様になります。 秘Theは、ポイントの色とサイズもこのセットの固有ベクトルに基づいて形成できることです。



色生成アルゴリズムは簡単です。 ポイントの値を色に変換する特定のカラーマップ( matplotlibで使用可能なセットから)を使用し、非縮退固有ベクトルからポイントの値を取得します。 ポイントサイズについても同じです。 その後、楽しいレースのようなものを得ることができます:





色のみを変える場合、子供のモザイクを再生できます。



この数学は、ドットの基本構成を異なる色で装飾しました。



クモの巣



近接点が線で接続されている場合、ウェブのようなものが得られます。 科学的に、そのような操作は三角測量と呼ばれます。 matplotlibパッケージの利点は、そのような操作がすぐに利用できることです。 ゴッサマーは美しい:





いくつかのマスクベースの三角形を削除できます。





モザイク



三角形が異なる色で塗りつぶされている場合、三角形分割は色付きになります。





カラーマップとカラーベクトルの選択は、同じ構成の認識に大きく影響します。



マスクを使用すると、パターンの輪郭がシャープになります。



組み合わせとバリエーションの数はほぼ無限であり、パターンのゲームは非常に奇妙です。



アウトライン



おそらく最も精巧なのは、三角形分割に基づいて輪郭を描くことによって得られるパターンです。 これらのパターンは、 matplotlibライブラリのtricontour()メソッドを使用して取得されます。 最も単純で退屈なポイントのセットでさえ、完全に予想外のバリエーションを獲得します。



対称性は任意で、たとえば5次です。



ある種の魔法。



分光器



これらのパターンはすべて、Pythonで作成された「 Spectroscope 」プログラムを使用して作成されました。 プログラムコードは完全ではありませんが、 アクセス可能です。







これにより、誰でも簡単なインターフェースを介してパラメーターを変更することでパターンを作成できます。



コントロールパネルの上部で、ポイント分布の基本セット( Base )のいずれかを選択できます。 摂動パラメーターがそれぞれ-2( Disturb )と1( Degree )の場合、ベース分布のインデックスは常に1であるため、常に見ることができます。



最も強力なのは、最も多くのポイントを持っているため、 Hex (hex)とSquare (square)の基本セットです。 したがって、より多様なパターンを提供します。 しかし、 xボーダーセット(ポリゴンの境界)と特に (サークル)は、反対に、研究目的にとっては除かれており、より興味深いものです。



基本セットの場合、スライダー(スライダー)を使用してサイズ( Order )を指定できます。 次のフィールド( Index )は、このセットで使用可能なスペクトルから表示されるスペクトル(レベル)の数を設定します。 このバージョンでは、1、4、または9パターンを同時に表示できます。



重要なパラメーターは、パターンのタイプ( プロットタイプ )です。 自分のベクトルを表示する方法(モード)を設定するのは彼です。 使用可能なものは上記にリストされています( ポイント、ウェブ、モザイク、輪郭 )。



タイトル 」チェックボックスは、各スペクトル上に、数値パラメーター、レベルの全体構成のシリアル番号、および指定されたレベルの固有値を表示します。 これは、グラフィックス以上のものに興味がある人向けです。



以下は、変動パラメーターの2つのスライダーです。 それらが変化すると、スペクトルが生き返ります。 スライダー上のマウスの右ボタン-現在の位置に移動し、左-が増加することを思い出してください。



以下は、スペクトルの外観に影響するパラメータです-色、マーカー、マスク。 すべての表示モードが関係するわけではありません。 たとえば、マーカーは「ポイント」モードにのみ関連し、反対に、マスクはポイントモード以外のすべてのユーザーにとって重要です。



おそらく最も重要なのは色(色)です。 設定するには、カラーマップ(マップ)を指定する必要があります。 ただし、ベクトル(Useフラグの付いたスライダー)を使用して色を再生します。 すでに述べたように、非縮退レベルから色ベクトル(およびマーカーサイズも)が選択されます。



プログラムメニューには、スペクトルをファイルに保存し、画像としてエクスポートするための標準機能が用意されています。



分光器を開発できる分野はたくさんあります。 明らかなインターフェースの改善、機能の開発(たとえば、アニメーション、またはWebアクセス)に加えて、3次元パターンを構築する必要があります。 彼らは見ることができるだけでなく、彫刻することもできます)。



数学的側面



スペクトルを使用したゲームでは、重要度がさまざまな興味深い質問がいくつか発生します。



縮退スペクトルの数の計算



おそらくこれは最も重要な質問ではなく、おそらく最も簡単な質問です。 明らかに、縮退したスペクトルの割合は、ポイントの基本的な分布に依存します。 主な格子(六角形と正方形)の明示的な公式があります。



六方格子の場合、「雪片」の数Nsは、ポイント(ノード) Nの総数に次のように関連しています。



Ns =(N-1)/ 3



同様に、点の数は二次的に格子aのサイズに依存します:



N(a)= 3a(a-1)+ 1 。 したがって、 Ns(a)= a(a-1)。



正方格子では、縮退スペクトルの数は同様の方法で点の数に関連しています。



Ns = N / 4 = a ^ 2/4



任意の構成に対してこのような式を取得する方法は、あまり明確ではありません。 一般的なアルゴリズムが存在しない可能性があります。



スペクトルレベルの識別



おそらく最も興味深い質問です。 スペクトルのレベルを識別する主な方法は、固有値の値です。 番号を昇順で並べ替えると、各レベルにインデックスを割り当てることができます(固有値)。 このインデックスはスペクトルを識別するようです。



これは実際にはあまり信頼できる方法ではありません。 摂動パラメータが変化すると、スペクトルが生き生きとしています-パターンが呼吸し始め(たとえば、「乱れ」パラメータが変更されると「ベース」分布がどのように「滑らかになる」 かがわかります)、その固有値も変更されます。 この場合、異なるレベルの固有値が互いに近づいて通過する状況が発生します。 つまり、スペクトルの場所が変わります。 さらに、スペクトルパターンの性質により、どのスペクトルがどこにあるかを確認できます。 この「文字」は、何らかの方法でスペクトルの識別子にハッシュする必要があります。



相転移



パターンの急激な変化の現象は、摂動パラメータの狭い帯域で発生します。 相転移のようなもの。 これは既知の現象である可能性があります。 相転移中に、スペクトルの形とそれらの相対的な位置の両方が変化します。 プログラムでは、摂動関数の形式が選択されているため、[摂動の乱れ]パラメーターが変更されると、関数の符号が変更されます。 パラメーターを最小から最大に変更するときの基本的な分布は、最初のインデックスから最後のインデックスに行くことがわかります。 この移行は、インデックスのベースパターンを最小から最大に移動することにより、実行されます。 しばらくすると、変更された基本パターンが最後のインデックスに表示されます。 その後、元の基本構成に進化します。



ただし、大規模な構成では、誰もどこにも移動していないようです(まあ、追跡することは不可能です)。 ある特定の瞬間に、新しい基本構成の基本が適切な場所(最大インデックス)で発生します。 要するに、興味のある人は誰でも見てみてください)。



適切なレベルを識別するためのパラメーターがあれば、スペクトルの動き(または死と誕生?)をより正確に追跡することができます。 また、固有値の値に関係なく、指定されたスペクトルを常に画像に表示します。



手ぶれ補正



まだあまり成功していません。 パターンは定期的に左/右に回転します。 それらを正しい方向に向ける最も簡単な方法が常に一方向にあることは明らかではありません。



仕切り



基本構成が単純な円(正多角形の頂点を指す)の場合、整数除数の現象が発生します。 この構成では、すべてのポイントが等しくなります。 したがって、すべての縮退レベル(およびここには他のレベルはありません)は、ポリゴンの頂点の座標でもあります(それらは円上にあります)。 しかし、同時に、単純なポリゴン(頂点の数は素数)のスペクトルは、複合ポリゴンとは異なります。 素数のスペクトルでは、すべてのレベルも同じ数の頂点を持つ単純なポリゴンです。 また、複合レベルのスペクトルでは、ベースポリゴンの頂点の約数で構成されます。



たとえば、30角形のスペクトルは、14の縮退レベル(投影)で構成されています。 これらのうち、4つの30ゴン、4つの15ゴン、2つの10ゴン、1つの6ゴン、2つの5ゴン、1つの3ゴン。 除数によるこのようなレベルの分布が明確でないのはなぜですか(しかし、あまり浸透していません)。 おそらく、これはすでにグループ理論のどこかで説明されています。



今のところすべてです。 クリエイティブな検索とメリークリスマスをお楽しみください!



All Articles