修論以降の研究経歴及び 数学ソフトウェア向け言語の設計について 受験番号114 神戸隆行 平成12年度大学院博士後期課程(一般選考)学位論文の試問用資料
発表の概要 修論以降の研究経歴 計算機代数システムの並列計算実験 数学ソフトウェア向け言語の設計について 背景 問題点 例 取り組み
修論以降の研究経歴 平成12年度大学院博士後期課程(一般選考)学位論文の試問用資料
修論以降の研究相互の関係 ユーザー 数値解析 ライブラリ インターフェース 計算機代数 ライブラリ インターフェース Asir言語 インタプリタ 数値解析ライブラリ NUMPAC Risa 基本代数エンジン ・ライブラリ 並列計算機 AP1000 並列計算 実験環境 多倍長 浮動小数点数 の実装
ライブラリのインターフェース 強い型付けを利用するC++数値解析ライブラリ(修論’93) 計算対象の代数構造に注目してライブラリのインターフェースを整理 数学的な性質を意識したポリモルフィズム実装手法の選択
多倍精度浮動小数点数の実装 指数部可変長浮動小数点ライブラリの基本演算部(数式処理学会大会’95) 指数部可変長浮動小数点ライブラリの初等関数部(富士通研究所テクニカル・レポート ‘97) 指数部が可変な場合の基数変換の実装 多倍長整数演算を利用した連分数展開の計算による初等関数の実装
計算機代数システムの並列計算実験 計算機代数システムRisa/Asir の 並列計算機AP1000へ移植と並列計算の実験(PCW ’95 J、ASCM ‘96) アルゴリズムの並列性を利用した粒度の大きな並列計算の実験 AP1000上で粒度の大きな並列計算のための環境の構築
Asir on AP1000 Asirインタプリタ Asirインタプリタ Risa 基本代数 エンジン PARI ライブラリ Conservative GC C標準 エミュレーション・ CellOS ホスト・ タスク User PARI ライブラリ Risa 基本代数 エンジン Conservative GC C標準ライブラリ OS(Host) Disk
Gröbner基底計算の並列化 mbc モジュラGröbner基底の計算 nf 未定係数正規形の生成 eq 線型方程式の計算 eq Basis Element と同数 eq 線型方程式の計算 eq 線型方程式の計算
実験結果 (秒数) 変 基 mbc nf eq 合計 Cyclic-6 6 17 8.962 7.436 4.147 22.79 (逐次計算) (12.34) (27.85) Modified c5 5 8 12.82 13.28 33.88 63.15 (157.3) (228.6) Katsura-5 2.019 4.237 26.31 33.98 (逐次計算) (86.47) (119.3) Katsura-6 7 12.21 38.22 771.8 827.6 (3200.0) (4257.0)
数学ソフトウェア向け言語の設計について 平成12年度大学院博士後期課程(一般選考)学位論文の試問用資料
背景 計算の数学的正確さ 計算の速さ が重視されてきている プログラムし易さ に関する技術の導入が相対的に遅れている
対象分野 計算機代数 (数式処理) 数値解析 数値解析 例1: Newton法(数値解析)とHensel構成(計算機代数) 例2: 近似代数
形態 基本演算ライブラリ 対話的計算環境 シミュレーター ソルバー 数学的な対象の基本演算を提供 基本演算ライブラリの利用環境 基本演算ライブラリの開発・実験環境 シミュレーター 特定問題を観察する環境 ソルバー 特定問題の解法をパッケージ化
記述がしやすい言語 言語の記法と意味構成規準 [Fateman94?] <直観性規準>数学における「直感的な用法」とよく対応付けるべき →究極的には数式によるプログラミング <プログラム記述規準>アルゴリズム的プログラミング及び計算機内の実際のデータ表現から抽象的なレベルまでにおける数学オブジェクトの記述に適合するものであるべき →1と2は必ずしも両立しない。バランスが重要
数式プログラミングの問題 文脈依存 関係と計算 値の格納と参照 数式の記述には文脈が省略され勝ち 数式は関係を宣言するが、プログラムの実行には計算手順が必要 値の格納と参照 数式には値の記憶領域指定がない
文脈依存 例1: 例2:subst(x:=a, x – x) xが実数か虚数かで結果が異なる xをaに置換する前にx-xが0と評価され得る ファイル・ディスクリプタのように減算が定義されていないならばエラーになるべき
文脈依存対策例 例1:文脈付きevalを複数種導入[Maple] 例2:型システムの導入(構成数学的な手法、インターフェースの多重継承、単一継承、型強制)[AXIOM] 例:(+ (modulo 5 3) (* 2 2)) 型評価フェーズで(modulo 5 3)の結果が有限体Z3の値であることがわかるのでその文脈が(* 2 2)にも及ぶ
文脈依存への取り組み AXIOMと同じく型システムを導入 ・・・ただし パラメタ付き型 型推論 等の技術の導入を検討 型システム設計とアルゴリズム設計の並行 分割コンパイルと効率の両立 型推論 型指定の詳細を隠蔽 等の技術の導入を検討
関係と計算 例1:diff(y, t)=f(t) 関係:diff()はyとf(t)の関係を表す記号 計算:diff()は微分を計算する関数 yがtの関数として与えられていない限りdiff(y,t)=0 例2:f(x):=if(x>0) then x else –x のplot(f(t), t, -10, 10)によるプロット 例3:多項式の不定元と変数
関係と計算の識別 例1: 引用 例2: 不活性関数(名詞) 例3: 遅延評価する引数の指定 例:’x [Lisp] 例:Diff(名詞)とdiff(動詞)[Maple] 例3: 遅延評価する引数の指定 例:関数のHoldFirst, HoldRest, HoldAll属性[Mathematica]
関係と計算への取り組み 関係と計算に対して: 関数や演算は通常は計算と見る 必要に応じて評価順序を制御し、必要な未定義変数が処理されるのを防ぐ →調査:評価順序制御 関係はメタ・データとして式から取り出す →調査:メタ・データへのインターフェース
値の格納と参照 データ管理と副作用の問題(配列、ベクトル、行列) 無限列、形式ベキ級数の表現の問題 再帰定義関数と遅延評価等 添え字を利用する再帰定義関数(列と漸化式) →調査:遅延評価に関する手法
方針(優先度順) 書きやすいプログラミング言語 実行効率 プログラミング環境 評価順序の制御 型システムの構成 静的な解析手法 数式の入力と表示
用途 数学的記法に近い記法を利用できる数学ソフトウェア開発・数学実験環境 数値解析ライブラリと計算機代数システムをシームレスに利用できる環境 得意分野の異なるシステムをネットワークで結合して利用するフロントエンド