JavaScript での数式処理の実装

2018年3月24日

松川信彦

大阪府立泉大津高等学校数学科情報科常勤講師
(〜2018年3月まで)

大阪府立佐野工科高等学校数学科情報科常勤講師
(2018年4月から〜)

https://noblegarden-math.jp/math/

自己紹介

  • 大阪府立高校の数学と情報の教員
  • JavaScript や PHP を趣味(数学の勉強)や教育で利用
  • 情報科でタイピングシステムをPHPで構築して1年間運用しておりました。
  • 実装系数学大好き
  • amazonで数学書買い漁りまくり。
  • JavaScript で多倍長整数ライブラリは既にあるものを利用して、数式処理を実装しようと思い立ったのが2年前くらい
  • ちょうど1年前 Mr.Konn の「計算機代数ゼミ発表資料」 に触発され groebner基底を JavaScript で実装しようと頑張り始める。

私の現到達点

  • JavaScriptの多倍長整数ライブラリbig-integerを用いて
  • 有理数や有限素体の上の多項式演算・行列演算の実装
  • 有限次代数拡大体や有限体演算の実装
  • 単因子論、対称群の簡約表示
  • Pell 方程式の実装(和田秀男先生の本の勉強結果)
  • Buchberger Algorithm (Gebauer-Moller)(野呂先生・横山先生の本の勉強結果)
  • 0次元イデアルにおける最小多項式(野呂先生・横山先生の本の勉強結果)
  • FGLM や trace algorithm はまだ (;´д`)ゞ
  • 実演については、後でまとめてやります。しばしお待ちくださいませ。

JavaScript の利用について

遅くて非力と言われるスクリプト言語であるJavaScript

使うメリットがあるのか?

  • 手計算よりは確実に速い
  • メモ帳に書いてブラウザで即実行
  • 一番使われている言語
  • 学習コストが低い
  • 困ったときに検索で解決することが多い
  • ブラウザ上で公開できる

JavaScript の数式処理で既にあるもの

  • algebrite (big-integer を利用して作られている)
  • $\rightarrow$ groebner 基底や単因子は実装されていない
  • GIAC (geogebra内の数式処理システム)
  • $\rightarrow$ emscripten で C++ プログラムを JavaScript に変換したもの
  • 他に面白いものがあれば教えていただければ幸いです。

数学を実装する上で有用と思われる

JavaScript ライブラリ

web note について

Web Note の機能

  • 開発環境を持ち運んだり、仮想環境にアクセスする必要がない。
  • 開発環境をブラウザで完結。
  • 手軽に数学の実験。
  • 数学の勉強ノートを作る。
  • コードの実験を行い, 良いものができたら保存する。
  • ある程度まとまったらノートやコードを公開する。
  • 公開するコンテンツを決定できる
  • MathJax, JSXGraph, Cindy.js, matter.js, big-integer.js などの
  • JSライブラリを取り込んで利用できる

ここから先は Web Note を使って数式処理のの実演を

やっていきたいと思います。

数式処理的なことで次なる目標

  • 多項式の正規化にかかる時間を速くしたい
  • JavaScript の gebauer-moller で cyclic_6 を現実的な時間で完了させたい
  • Berlekamp や Hensel lifting など, 1変数の場合をしっかりやりたい
  • 有限幾何や Mathieu 群の可視化 (パズルみたいでとても面白そう)

ご清聴ありがとうございました!