書評
「精度保証付き数値計算の基礎」
2020年04月24日
松江 要
まつえ かなめ
九州大学マス・フォア・インダストリ研究所
本書は「精度保証付き数値計算」の基礎的事項と数学の問題への応用について、この分野で日本をリードしている早稲田大学の研究グループによりまとめられたものである。
精度保証付き数値計算は現在日本を含めた世界の応用数学分野の一翼を担っているが、これに関する基礎事項をまとめた文献は驚くほど少ない。特に日本語で書かれた書籍は、よく知られている物として中尾充宏、山本野人、渡部善隆各氏により執筆されたものがあるが、これらは常・偏微分方程式への応用に特化したものであり、数値計算分野のあらゆる研究者に向いているかと言われると議論の余地が残るものである。それより前は、本書の編者の大石進一氏によるものがあるくらいである。あとは洋書に頼るのみであり、このような状況の中で日本語による基礎的事項がまとめられた精度保証付き数値計算の本は、この技術に関心を持ち、習得・応用したいと考える日本人研究者にとっては待望の書と言える。
本書は精度保証付き数値計算の基礎原理から始まり、その技術を支える「区間演算」に関する数学議論、線型代数や数学関数、積分、非線型問題、微分方程式を中心に議論が展開され、線型計画法や幾何学の問題への応用も掲載されている。本分野の研究に携わっている多くの研究者により執筆されている本書は、その多岐にわたる内容が他の精度保証付き数値計算に関連する書籍と一線を画する。序論は、数値計算のあらゆるユーザーに特に一読を勧めたい。
しかし多くの研究者による執筆という性質上、議論の展開の統一性が若干不足している点が否めない。例えばアルゴリズムの掲載、数学的議論で言えば証明の有無である。精度保証付き数値計算を独自の問題に応用しようとすると「計算可能な誤差の厳密評価」が必須であり、そのエッセンスは証明にこそある。多くの先行研究によるところもあるためか、一部証明を他の文献に任せている部分もあり、実際の学習・適用にあたってのハードルを少し上げてしまっている。また、精度保証付き数値計算は「数値解析」に属する分野のため、前提知識はかなりのものとなる。例えば前半、特に1章と2章は数値計算の原理に関する話題で、細部はかなり難解である。後半(特に5章以降)は複素関数論、関数解析の基礎知識が前提となる部分が少なくない。必要な前提知識について時折言及がない箇所があるので、初学者は注意が必要である。そのため、これ1冊「のみ」で細部を含めて理解しようとするのは困難であり、知識あるいは証明を補完するために該当する分野の書籍と同時進行で読み進めるのが良いと考える。とはいえ幅広い前提知識の必要性は「数値解析」という分野にはつきものであり、基礎・応用含めてここまで幅広い内容を網羅している本は例を見ないので、精度保証付き数値計算の基礎及び研究動向を概観し、自身で詳細や展開を補完する努力を厭わなければ、非常に魅力的な一冊である。
最後に実際の応用について述べる。一般に数値計算にまつわる技術は原理を理解しただけで習得したとは言えない。「実際にプログラムを書いて、使ってみる」事を経ずして理解を得られないのは精度保証付き数値計算でも同様である。しかし精度保証付き数値計算の場合は、手軽に使おうとすると区間演算などを実装したライブラリが必要となる。「数値解析」の本には実際のプログラミングに全く言及していない物もあり応用の際のハードルを上げている。対してこの本ではMATLABをベースに、INTLABという著者の一人であるRump氏が開発した区間演算ライブラリに基づいたサンプルプログラムもある程度掲載されている(サポートページも紹介されている)。本書には9.5節にINTLABの詳しい解説もあり、MATLABユーザーは簡単に本書のプログラムや練習問題を通して精度保証付き数値計算を実装・実践できるだろう。しかしMATLAB・INTLABは有料で、ある程度資金に余裕がないと実装すらできない。MATLABはOctaveに置き換えることも可能ではあるが、それでもINTLABに別途お金がかかる。
そのため、本書では強く言及されていないが無償で利用できる区間演算ライブラリとして、著者の一人である柏木雅英氏が開発した「kv」がある事をここで改めて言及する。URLは本書6章の参考文献にある。これはC++ベースで書かれており、使い方も非常にシンプルである。豊富なテストプログラムも同ライブラリのパッケージにあり、C++を使えるユーザーならば気軽に試す事が可能である。開発者の意向に大きく依存するこの手のソフトウェアを利用する際、国産のものがある事は日本人にとって朗報というべきである。これに限らず使い込んだソフトウェアほど、開発者が同じ国にいるというメリットは思いの外大きい事を実感する。
精度保証付き数値計算に触れてみたい、使ってみたいという人にとって、本書を手に取りソフトウェア(MATLAB、kvなど)を手に入れることで、勉強しながらすぐに試すという環境が今整ったと言える。また既にユーザーとして使用している者にとっては、改めて1章・2章を読み進めると計算原理の奥深さを再確認できる。
その意味で、初学者から既に応用している研究者にも必携の一冊と言って差し支えない。