メモ2 のバックアップ差分(No.3)

Unity学習帳2冊目メモ2 のバックアップ差分(No.3)
« Prev  Next »
2: 2016-09-12 (月) 02:54:50 osinko ソース 3: 2016-09-14 (水) 16:22:25 osinko ソース
Line 1: Line 1:
TITLE:メモ2 TITLE:メモ2
#jsmath #jsmath
 +***メモ [#bd79a0bd]
 +-P65の\({ \nu  }_{ j }\) は\({H }_{ 1 }\)に対するズレを表していると考えられる
 +-指数と合同式と順列には明確な関係、繋がりがある
 +-プログラムコード的に数学的帰納を利用せずに指数と合同を利用して自由に順列を作ることも可能な筈
 +-指数と合同で順列を分析するという視点
 +
 +**支援プログラム [#sd3554c2]
 +
 +群Rの計算をC#で行うコードを書いてみた。演算子のオーバーロードを用いた回転置換群の計算機
 +この場合、6要素しか考えていないので例えば7要素にする場合、変更が全体に必要
 +
 +\(\sigma \cdot \sigma \cdot \sigma \\ \sigma \cdot \sigma \cdot \sigma \cdot \tau \\ \tau \cdot \sigma \cdot \sigma \\ \sigma \cdot \sigma \cdot \sigma \cdot \sigma \cdot \tau \\ f\cdot \tau \cdot { \sigma  }^{ 2 }\\ f\cdot { \sigma  }^{ 4 }\cdot \tau \\ f\cdot \tau \cdot { \sigma  }^{ 2 }とf\cdot { \sigma  }^{ 4 }\cdot \tau は同一?\)
 +
 +といった様な計算をさせている
 +
 +#code(csharp){{
 +using UnityEngine;
 +using System.Collections;
 +
 +public class Model2 : MonoBehaviour
 +{
 +
 +   void Start()
 +   {
 +       //置換関数化
 +       Rotate f = new Rotate("ABCABC");                                //f:X→Y
 +       Rotate iota = new Rotate(new int[] { 0, 1, 2, 3, 4, 5 });      //ι:恒等置換
 +       Rotate sigma = new Rotate(new int[] { 5, 0, 1, 2, 3, 4 });      //σ:回転
 +       Rotate sigma2 = new Rotate(new int[] { 4, 5, 0, 1, 2, 3 });    //σ^2:回転
 +       Rotate sigma3 = new Rotate(new int[] { 3, 4, 5, 0, 1, 2 });
 +       Rotate sigma4 = new Rotate(new int[] { 2, 3, 4, 5, 0, 1 });
 +       Rotate sigma5 = new Rotate(new int[] { 1, 2, 3, 4, 5, 0 });
 +       Rotate tau = new Rotate(new int[] { 5, 4, 3, 2, 1, 0 });        //τ:左右反転
 +
 +       //以下のように計算機として使う
 +       print(sigma * sigma * sigma);
 +       print(sigma * sigma * sigma * tau);
 +       print(tau * sigma * sigma);
 +       print(sigma * sigma * sigma * sigma * tau);
 +       print(f * tau * sigma2);
 +       print(f * sigma4 * tau);
 +       print(f * tau * sigma2 == f * sigma4 * tau);
 +   }
 +
 +   //回転をモデル化した置換群R
 +   class Rotate
 +   {
 +       public string X;
 +       public int[] shift;
 +
 +       public Rotate(int[] shift)
 +       {
 +           this.X = "012345";
 +           this.shift = shift;
 +       }
 +
 +       public Rotate(string X)
 +       {
 +           this.X = X;
 +           this.shift = new int[] { 0, 1, 2, 3, 4, 5 };
 +       }
 +
 +       //演算子「*」のオーバーロード
 +       public static Rotate operator *(Rotate left, Rotate right)
 +       {
 +           char[] temp = new char[left.X.Length];
 +           char[] temp2 = new char[left.X.Length];
 +           for (int i = 0; i < left.shift.Length; i++)
 +           {
 +               temp[i] = left.X[left.shift[i]];
 +           }
 +           for (int i = 0; i < right.shift.Length; i++)
 +           {
 +               temp2[i] = temp[right.shift[i]];
 +           }
 +
 +           //あたらしいRotate型を作って返す
 +           //演算後はιで文字列の配置が変わった物を渡している。これが連続する二項演算の左辺になる
 +           Rotate iota = new Rotate(new int[] { 0, 1, 2, 3, 4, 5 });
 +           iota.X = new string(temp2);
 +           return iota;
 +       }
 +
 +       //演算子「==」のオーバーロード
 +       public static bool operator ==(Rotate left, Rotate right)
 +       {
 +           //オブジェクトとして同一かどうか
 +           if (object.ReferenceEquals(left, right))
 +           {
 +               return true;
 +           }
 +
 +           //オブジェクトとしてnullかどうか
 +           if (((object)left == null) || ((object)right == null))
 +           {
 +               return false;
 +           }
 +
 +           return (left.X == right.X);
 +       }
 +
 +       //演算子「==」と共に必ず設定する必要がある
 +       public static bool operator !=(Rotate left, Rotate right)
 +       {
 +           return !(left == right); //これはoperatorの処理で判定している
 +       }
 +
 +       //文字表示
 +       public override string ToString()
 +       {
 +           return X;
 +       }
 +   }
 +}
 +}}
 +
**P56~ [#ybe9c2a3] **P56~ [#ybe9c2a3]
\(X=\left\{ k\in \mathbb{Z}|1\le k\le 6 \right\} =\left\{ 1,2,3,4,5,6 \right\} \\ Y=\left\{ A=シューマイ,B=棒棒鶏,C=酢豚 \right\} \\ f:X\rightarrow Y\\ g:X\rightarrow Y\\ \sigma :X\rightarrow X\\ \iota =\begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 \\ 1 & 2 & 3 & 4 & 5 & 6 \end{pmatrix}\\ \sigma =\begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 \\ 6 & 1 & 2 & 3 & 4 & 5 \end{pmatrix}\\ R=\left\{ \iota ,\sigma ,{ \sigma  }^{ 2 },{ \sigma  }^{ 3 },{ \sigma  }^{ 4 },{ \sigma  }^{ 5 } \right\} \\  \) \(X=\left\{ k\in \mathbb{Z}|1\le k\le 6 \right\} =\left\{ 1,2,3,4,5,6 \right\} \\ Y=\left\{ A=シューマイ,B=棒棒鶏,C=酢豚 \right\} \\ f:X\rightarrow Y\\ g:X\rightarrow Y\\ \sigma :X\rightarrow X\\ \iota =\begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 \\ 1 & 2 & 3 & 4 & 5 & 6 \end{pmatrix}\\ \sigma =\begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 \\ 6 & 1 & 2 & 3 & 4 & 5 \end{pmatrix}\\ R=\left\{ \iota ,\sigma ,{ \sigma  }^{ 2 },{ \sigma  }^{ 3 },{ \sigma  }^{ 4 },{ \sigma  }^{ 5 } \right\} \\  \)
Line 35: Line 151:
\({ \sigma  }^{ m+n }\in R\)なので\(f{ \sim  }_{ R }h\)が成り立つ \({ \sigma  }^{ m+n }\in R\)なので\(f{ \sim  }_{ R }h\)が成り立つ
推移性が成立すると \(\quad f{ \sim  }_{ R }g\quad \wedge \quad g{ \sim  }_{ R }h\quad \rightarrow \quad f{ \sim  }_{ R }h\)  と言える 推移性が成立すると \(\quad f{ \sim  }_{ R }g\quad \wedge \quad g{ \sim  }_{ R }h\quad \rightarrow \quad f{ \sim  }_{ R }h\)  と言える
- 
-***メモ [#bd79a0bd] 
-P65の\({ \nu  }_{ j }\) は\({H }_{ 1 }\)に対するズレを表していると考えられる 
« Prev  Next »


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom