Slides(Powerpoint 2000 file)

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