メモ2
をテンプレートにして作成
Unity学習帳2冊目
メモ2 をテンプレートにして作成
[
トップ
] [
差分
|
バックアップ
|
リロード
] [
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
[ ]
開始行:
TITLE:メモ2
#jsmath
***メモ
-P65の\({ \nu }_{ j }\) は\({H }_{ 1 }\)に対するズレを表...
-指数と回転置換群と順列(全てを網羅する置換)には明確な関...
-プログラムコード的に数学的帰納を利用せずに指数と回転置換...
-指数と回転置換群で順列を分析するという視点
**指数と回転置換群(n進数)を利用した順列の作成
ここでは数学的帰納を利用しないで指数と回転置換群、n進数(...
XとYの数列は自由に変更可能な状態で順列を作成出来る
TODO:仕組みもメモで書く
#code(csharp){{
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Model3 : MonoBehaviour
{
void Start()
{
int[] X = { 1, 2, 3, 4 };
char[] Y = { 'A', 'B' }; //Y要素を自由に変えて...
int[] Z = new int[X.Length + 1];
for (int i = 0; i < Z.Length; i++)
{
Z[i] = (int)Mathf.Pow(Y.Length, i); //指...
}
int total = Z[Z.Length - 1];
List<char[]> charList = new List<char[]>();
for (int i = 0; i < total; i++)
{
charList.Add(new char[X.Length]);
}
for (int i = 0; i < X.Length; i++)
{
int mod = 0;
char set = Y[mod];
for (int j = 0; j < total; j++)
{
//指数の数列と回転置換群との関係をここで...
if (j % Z[i] == 0)
{
set = Y[mod % (Y.Length)];
mod++;
}
charList[j][i] = set; //二次元配列...
}
}
foreach (var item in charList)
{
print(new string(item));
}
}
}
}}
出力
何気に右側の数字アイコンで重複数がわかるのは便利かもしれ...
&ref(output1.png);
**支援プログラム
群Rの計算をC#で行うコードを書いてみた。演算子のオーバーロ...
この場合、6要素しか考えていないので例えば7要素にする場...
\(\sigma \cdot \sigma \cdot \sigma \\ \sigma \cdot \sigma...
といった様な計算をさせている
#code(csharp){{
using UnityEngine;
using System.Collections;
public class Model2 : MonoBehaviour
{
void Start()
{
//置換関数化
Rotate f = new Rotate("ABCABC"); ...
Rotate iota = new Rotate(new int[] { 0, 1, 2, 3, ...
Rotate sigma = new Rotate(new int[] { 5, 0, 1, 2,...
Rotate sigma2 = new Rotate(new int[] { 4, 5, 0, 1...
Rotate sigma3 = new Rotate(new int[] { 3, 4, 5, 0...
Rotate sigma4 = new Rotate(new int[] { 2, 3, 4, 5...
Rotate sigma5 = new Rotate(new int[] { 1, 2, 3, 4...
Rotate tau = new Rotate(new int[] { 5, 4, 3, 2, 1...
//以下のように計算機として使う
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, Rota...
{
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,...
iota.X = new string(temp2);
return iota;
}
//演算子「==」のオーバーロード
public static bool operator ==(Rotate left, Rotat...
{
//オブジェクトとして同一かどうか
if (object.ReferenceEquals(left, right))
{
return true;
}
//オブジェクトとしてnullかどうか
if (((object)left == null) || ((object)right ...
{
return false;
}
return (left.X == right.X);
}
//演算子「==」と共に必ず設定する必要がある
public static bool operator !=(Rotate left, Rotat...
{
return !(left == right); //これはoperatorの処...
}
//文字表示
public override string ToString()
{
return X;
}
}
}
}}
**P56~
\(X=\left\{ k\in \mathbb{Z}|1\le k\le 6 \right\} =\left\{...
集合を定義して問題をモデル化し関数の型を決め置換関数と置...
\(f=\begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 \\ A & B & B & ...
の状態だったとする
\(g=f\cdot { \sigma }^{ j }\quad { \sigma }^{ j }\in R\...
この場合、 \(g=f\cdot { \sigma }^{ 2 }\) \(f=g\cdot { ...
\(f{ \sim }_{ R }g\)
\(R\) の置換群により同値であることを確認すると
①\(R\)の中に恒等置換 \(\iota \) があるので反射性OK
\(f=f\cdot \iota \) 従って \(f{ \sim }_{ R }f\)
②任意の \({ \sigma }^{ j }\) に対して\(R\)の中に逆関数が...
式を変形して逆関数を求める式を作ってみる
&font(Red){\(g=g\cdot \iota =g\cdot { \sigma }^{ 6 }\qua...
\(g\cdot { \sigma }^{ 6 }=f\cdot { \sigma }^{ j }\quad ...
&font(Red){\( { \sigma }^{ 6 }={ \sigma }^{ k }\cdot { ...
\( g=f\cdot { \sigma }^{ j }=f\cdot { \sigma }^{ 6-k }\...
\(j\)が\(2\)だと\(k\)は\(4\)になる。\(g\)も\(f\)も互いに\...
シフトの方向を逆にして置換しているわけでないことに注意!...
対称性が成立すると \( f{ \sim }_{ R }g\rightarrow g{ \si...
③推移性がある
演算"\(\cdot\) "において演算結果が集合\(R\)の中で閉じてい...
\(g=f\cdot { \sigma }^{ m }\\ h=g\cdot { \sigma }^{ n }\)
とすると\(h=f\cdot { \sigma }^{ m }\cdot { \sigma }^{ n...
\({ \sigma }^{ m+n }\in R\)なので\(f{ \sim }_{ R }h\)が...
推移性が成立すると \(\quad f{ \sim }_{ R }g\quad \wedge ...
終了行:
TITLE:メモ2
#jsmath
***メモ
-P65の\({ \nu }_{ j }\) は\({H }_{ 1 }\)に対するズレを表...
-指数と回転置換群と順列(全てを網羅する置換)には明確な関...
-プログラムコード的に数学的帰納を利用せずに指数と回転置換...
-指数と回転置換群で順列を分析するという視点
**指数と回転置換群(n進数)を利用した順列の作成
ここでは数学的帰納を利用しないで指数と回転置換群、n進数(...
XとYの数列は自由に変更可能な状態で順列を作成出来る
TODO:仕組みもメモで書く
#code(csharp){{
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Model3 : MonoBehaviour
{
void Start()
{
int[] X = { 1, 2, 3, 4 };
char[] Y = { 'A', 'B' }; //Y要素を自由に変えて...
int[] Z = new int[X.Length + 1];
for (int i = 0; i < Z.Length; i++)
{
Z[i] = (int)Mathf.Pow(Y.Length, i); //指...
}
int total = Z[Z.Length - 1];
List<char[]> charList = new List<char[]>();
for (int i = 0; i < total; i++)
{
charList.Add(new char[X.Length]);
}
for (int i = 0; i < X.Length; i++)
{
int mod = 0;
char set = Y[mod];
for (int j = 0; j < total; j++)
{
//指数の数列と回転置換群との関係をここで...
if (j % Z[i] == 0)
{
set = Y[mod % (Y.Length)];
mod++;
}
charList[j][i] = set; //二次元配列...
}
}
foreach (var item in charList)
{
print(new string(item));
}
}
}
}}
出力
何気に右側の数字アイコンで重複数がわかるのは便利かもしれ...
&ref(output1.png);
**支援プログラム
群Rの計算をC#で行うコードを書いてみた。演算子のオーバーロ...
この場合、6要素しか考えていないので例えば7要素にする場...
\(\sigma \cdot \sigma \cdot \sigma \\ \sigma \cdot \sigma...
といった様な計算をさせている
#code(csharp){{
using UnityEngine;
using System.Collections;
public class Model2 : MonoBehaviour
{
void Start()
{
//置換関数化
Rotate f = new Rotate("ABCABC"); ...
Rotate iota = new Rotate(new int[] { 0, 1, 2, 3, ...
Rotate sigma = new Rotate(new int[] { 5, 0, 1, 2,...
Rotate sigma2 = new Rotate(new int[] { 4, 5, 0, 1...
Rotate sigma3 = new Rotate(new int[] { 3, 4, 5, 0...
Rotate sigma4 = new Rotate(new int[] { 2, 3, 4, 5...
Rotate sigma5 = new Rotate(new int[] { 1, 2, 3, 4...
Rotate tau = new Rotate(new int[] { 5, 4, 3, 2, 1...
//以下のように計算機として使う
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, Rota...
{
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,...
iota.X = new string(temp2);
return iota;
}
//演算子「==」のオーバーロード
public static bool operator ==(Rotate left, Rotat...
{
//オブジェクトとして同一かどうか
if (object.ReferenceEquals(left, right))
{
return true;
}
//オブジェクトとしてnullかどうか
if (((object)left == null) || ((object)right ...
{
return false;
}
return (left.X == right.X);
}
//演算子「==」と共に必ず設定する必要がある
public static bool operator !=(Rotate left, Rotat...
{
return !(left == right); //これはoperatorの処...
}
//文字表示
public override string ToString()
{
return X;
}
}
}
}}
**P56~
\(X=\left\{ k\in \mathbb{Z}|1\le k\le 6 \right\} =\left\{...
集合を定義して問題をモデル化し関数の型を決め置換関数と置...
\(f=\begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 \\ A & B & B & ...
の状態だったとする
\(g=f\cdot { \sigma }^{ j }\quad { \sigma }^{ j }\in R\...
この場合、 \(g=f\cdot { \sigma }^{ 2 }\) \(f=g\cdot { ...
\(f{ \sim }_{ R }g\)
\(R\) の置換群により同値であることを確認すると
①\(R\)の中に恒等置換 \(\iota \) があるので反射性OK
\(f=f\cdot \iota \) 従って \(f{ \sim }_{ R }f\)
②任意の \({ \sigma }^{ j }\) に対して\(R\)の中に逆関数が...
式を変形して逆関数を求める式を作ってみる
&font(Red){\(g=g\cdot \iota =g\cdot { \sigma }^{ 6 }\qua...
\(g\cdot { \sigma }^{ 6 }=f\cdot { \sigma }^{ j }\quad ...
&font(Red){\( { \sigma }^{ 6 }={ \sigma }^{ k }\cdot { ...
\( g=f\cdot { \sigma }^{ j }=f\cdot { \sigma }^{ 6-k }\...
\(j\)が\(2\)だと\(k\)は\(4\)になる。\(g\)も\(f\)も互いに\...
シフトの方向を逆にして置換しているわけでないことに注意!...
対称性が成立すると \( f{ \sim }_{ R }g\rightarrow g{ \si...
③推移性がある
演算"\(\cdot\) "において演算結果が集合\(R\)の中で閉じてい...
\(g=f\cdot { \sigma }^{ m }\\ h=g\cdot { \sigma }^{ n }\)
とすると\(h=f\cdot { \sigma }^{ m }\cdot { \sigma }^{ n...
\({ \sigma }^{ m+n }\in R\)なので\(f{ \sim }_{ R }h\)が...
推移性が成立すると \(\quad f{ \sim }_{ R }g\quad \wedge ...
ページ名: