Structure Computer
計算サーバーを確認中…

系ファイルの書き方

試すページで「系ファイル(自分で書く)」を選ぶと、自分の系を短いテキストで書いて問える。「ひな形」で例題の系ファイルを読み込み、それを書き換えて始めるのが早い。

いちばん簡単な例

# Lyness 型の写像
name: Lyness type
vars: x, y
params: a = 3, b = 2
map:
  x' = y
  y' = (a + b*y)/x
行 意味
# から行末 コメント
name: 系の名前(省略できる)
vars: 状態の変数。状態はこの順に並べる(s に 2, 5 と入れると x = 2、y = 5)
params: パラメータ(有理数)。試すページの「パラメータの上書き」(例:a = 5, b = 3)で値を変えられる
map: 1 歩の式。変数ごとに x' = … と書く。x' は 1 歩後の x

式の書き方

  • 使えるもの:数(分数は / で書く)、変数、パラメータ、+ - * /、べき ^(または **。指数は 0 以上 64 以下の整数)、かっこ。
  • 式は書いたとおりに計算する。分母が 0 になるところでは式が定義されず、そこに来た軌道は途切れる(その状態は正則でない)。
  • sqrt(c) で定数 c の平方根が書ける(変数は入れられない)。有限体ごとに求め、平方根がない素数ではその系は使えない。
  • 約せる式は、約した形で書く。展開して大きな共通因子を残すと、検査は正しく終わるが、数秒ではなく数分かかることがある。

1 歩の与え方

次のどれか 1 つを使う。

書き方 1 歩
map:(inverse: も書ける) 式で書いた有理写像。逆向きの式 inverse: は省略でき、省略すると Structure Computer が求めて記録する。書いた場合は、それが本当に逆になっているかを Q1 が答える
field: と kahan: h = … 2 次のベクトル場(dx/dt = … または x' = … と書く)を、刻み h の Kahan の方法で離散化した 1 歩
use: 名前 既知の系を名前で使う。パラメータは params: で与える。名前は下の表のとおり
generator 名前: を複数 いくつかの写像(生成元)を持つ系。1 つについて問うときは、試すページの「生成元」に名前を入れる
potential: と alpha: ポテンシャルから決まる測地線を離散化した 1 歩。状態は前の点と今の点の組 (x, x')。ポテンシャルには log も書ける
lagrangian: L = … 変数とその 1 歩後(x')で書いた離散ラグランジアンから決まる 1 歩。状態は (x, x')

ベクトル場を Kahan の方法で離散化する例(Euler のコマ)

name: Euler top
vars: x1, x2, x3
params: a1 = 1, a2 = 2, a3 = -3
field:
  dx1/dt = a1*x2*x3
  dx2/dt = a2*x3*x1
  dx3/dt = a3*x1*x2
kahan: h = 1/2

既知の系を名前で使う例

name: Lyness by name
use: lyness
params: a = 3

use: に書ける名前は次のとおり。

名前 系
lyness Lyness 写像
kahan-euler Euler のコマ(Kahan の方法)
oscillator 振動子
e2 双曲面上の離散測地線(E2)
lyness-type Lyness 型
lyness-rev Lyness 型の逆向き
linear 行列式 1 の線形写像
parabolic 放物型の平行移動
translation 平行移動

生成元を 2 つ持つ例

name: two generators
vars: x, y
generator r:
  x' = -y
  y' = x
generator s:
  x' = x + y^2
  y' = y

potential: と lagrangian: の例は、例題の系ファイルの「E2 geodesic」「discrete oscillator」「quartic midpoint」にある(試すページの「ひな形」でも選べる)。

対称性の宣言(Q6 に必要)

Q6(ホロノミー)は、系ファイルで対称性を宣言したときだけ答える。

name: rational rotation
vars: x, y
map:
  x' = (3*x - 4*y)/5
  y' = (4*x + 3*y)/5
symmetry:
  so: x^2 + y^2
  • so: に 2 次形式を書くと、それを保つ回転の群を対称性として宣言する。群は、状態の 2〜4 個の座標のまとまりごとに作用する。
  • linear: [[0, -1], [1, 0]] のように、行列で線形の対称性も宣言できる。Q6 が使うのは so: のほうである。

既知の族として見抜かれる系

次の形の系は既知の族として見抜かれ、大きい q でも軌道をたどらずに、定理にもとづいて答える。

  • (x, y) ↦ (y, (a + b y)/x):Lyness 写像(b = 1)と Lyness 型
  • (x, y) ↦ ((a + b x)/y, x):その逆向き
  • (x, y) ↦ (p x + q y, r x + s y)、ps − qr = 1:行列式 1 の線形写像(振動子を含む)
  • ベクトル場 (c1 x2 x3, c2 x3 x1, c3 x1 x2) の Kahan 離散化:Euler のコマ

Lyness 写像、不動点を持つ行列式 1 のアフィン写像、Euler のコマは、アフィンな座標の取り替え(x ↦ Mx + c)をしてから書いても見抜かれる。どの場合も、式が定義されない場所まで族と同じであることが条件で、余分な因子で割っていると別の系として扱う。

見抜かれない系は、歩く上限まで軌道をたどって答える。既知の族として扱ってほしくないときは、試すページで「既知の族として認識しない」を選ぶ。

試すページでの手順

  1. 「系ファイル(自分で書く)」を選ぶ。
  2. 「ひな形」から近い例題を選ぶか、白紙から書く。
  3. 必要なら「パラメータの上書き」と「生成元」を入れる。
  4. 状態 s、t と体を入れて「全部計算する」を押す。

書き間違いがあると、カードにエラーとして理由が出る。