数式処理システム

数式処理システムは、コンピュータを用いて数式を記号的に処理するソフトウェアである。

例えば式の展開としてを求めたり、微分としてに対してを求める操作を取り扱う。取扱い可能な数式と演算はソフトウエア製品により異なる。

英文別称にはComputer algebra system}}、Symbolic Computation Systemがある。 数式処理機能以外に数値計算機能、グラフ表示機能等も統合した数学ソフトとして存在する製品もある。 また，数式処理システムに向けた計算アルゴリズムを研究する分野の名称も数式処理と呼ぶ。

具体的な数式処理システムの製品については数式処理システムの一覧を参照されたい。

1. 取扱可能な数・数式
------------

数式処理システムは、一般に次のような数・数式を表現、保持や演算処理できる。

数
自然数、整数
有理数、無理数
複素数
論理代数式
複数の変数を含む多項式
複数の変数を含む有理式
三角関数、指数関数、対数関数、冪根などの初等関数を含む数式
極限
総和、級数
漸化式を伴う級数
数式の微分
不定積分/定積分
ベクトル、行列を使った式、内積、外積、テンソル
複素関数
ガンマ関数、ゼータ関数、ベッセル関数、誤差関数、超幾何関数などの特殊関数を含む数式数値計算としては次のものがある。

整数や有理数、特殊定数、浮動小数点数、区間数、複素数、代数的数，有限体。

2. 記号的操作
--------

記号的操作には、次のようなものがある。

式の変換
数式内の函数や数値を記号的に置換する。
単変数あるいは多変数の多項式の因数分解。
式を可能な限り単純な形式に変換したり、何らかの標準形式にする。前提条件や制約条件を考慮した自動的な簡約化も行う。但し、この操作は常に可能とは限らず、ある程度一般的な二つの数式の等価性の判定はアルゴリズム的には決定不能なことが示されている。
数式の形式を変更する。三角関数を指数函数で置換するなど。代数
単変数の低次あるいは高次の代数方程式を厳密にあるいは近似的に解く。消去法により多変数の線形あるいは非線形の連立代数方程式を解く。
行列に対する各種操作。行列積の計算、逆行列の計算、固有多項式の計算、各種標準形への変換など。
各種領域での線型および非線型の方程式を解く。微分・積分、解析
数列や函数の極限を求める。常に可能なわけではない。
函数の級数への展開、級数の総和や積計算など。※　
微分と偏微分の操作。
一部の不定積分と定積分。多次元積分も含む。
一部の微分方程式や差分方程式を解く。その他
記号的な制約条件に基づいて最適値を与えるための必要条件を数式として導くこと。
限量記号消去法。数値計算
任意の精度の数値の操作。

3. 数式処理システムが扱う数学的操作の例
---------------------

数式の簡約
記号微分
数式中の変数への代入、数式中の指定したパターンに対する置き換え、数式の指定した部分あるいは指定したパターンに合致する部分の抽出
単変数あるいは多変数の多項式のGCDの計算
単変数あるいは多変数の多項式の因数分解
記号積分
極限操作
線形代数
無限級数の和を求める
テイラー展開，漸近展開
代数方程式の解の表示
常微分方程式の閉じた数式による解の表示が可能であればそれを求める
差分方程式の閉じた数式による解の表示が可能ならば求める
偏微分方程式の閉じた数式による解の表示が可能ならば求める
フーリエ変換，ラプラス変換，逆ラプラス変換を求める
グレブナー基底
QE
関数列を用いた関数の近似展開

4. その他の機能
---------

上記以外にも、以下のような機能を持つ数式処理システムがある。

数値の高精度な近似値を計算する。例えば、21/3 を1万桁以上計算するなど。
計算物理学のための物理学パッケージのように、応用数学的な特定用途に特化したアドオンが提供されているもの。
グラフィック機能。関数を2次元または3次元の図にプロットしたり、アニメーション表示する。
関数値を波形として扱って音を鳴らす。
データベースや表計算システム、プログラミング言語から利用するためのAPI。
文字列探索などの文字列操作機能。
数式をTeXに類似した組版システムを使って綺麗に表示する。あるいはTeX形式でテキストファイルとして出力する。
数式などを、Fortranなど他のプログラミング言語で用いられている表記法との間で相互に変換や入出力する。
統計学的な計算の機能
定理の自動証明や証明検証
画像処理機能
音響合成
有限群論機能
システムに対するプログラミングやユーザーからの入力指示とそれに対する出力結果を保存して、再利用や再度の実行を可能とするユーザーインタフェース。多くの場合に、システムはプログラミング言語としての機能を持ち、ユーザーがアルゴリズムをプログラムとして記述して処理させることができる。言語の様式は様々で、命令型プログラミングや関数型プログラミングもあれば、制約プログラミングや論理プログラミングもあるし、4GL的なものもある。

5. 歴史
-----

初期のシステムとして、ノーベル物理学賞受賞のマルティヌス・フェルトマンが理論素粒子物理学計算のために1963年にCDC計算機のアセンブラで開発したSchoonschip、 同じく理論素粒子物理学計算のためにAnthony.C.Hearnが1963年にLISP上で開発したREDUCE、天体力学計算に特化したケンブリッジ大学のCAMAL、そのほかFORTRANで記述されたFORMACとPL/Iで記述されたPL/I FORMAC、などいろいろな試みがあった。

1960年代には記号処理の側面から人工知能の研究の一環として主にLISPベースでいくつかの数式処理システムが作られた。 その最も典型的な例は、MITのProject-MACの成果であるMACSYMA である。。

数式処理研究は初期の段階では、それまで普通に人間の手計算で行われていた教科書に出てくるような初等的な数式の操作や処理方法を実現するために、実装することであった。 それにより人間の手計算に比べて非常に高速でしかも長大な式の計算が可能となり、特に計算された結果にはミスがないことが利点であった。

しかし次第に、試行錯誤による方法の限界と計算量の観点から、普通の人間が用いている計算法や公式集に出ている規則のあてはめによる処理法だけではなくて、より系統的な数学的アルゴリズムの開発や実装に研究の中心が推移してゆき、今では過去に想定されていたような記号処理、人工知能の技法、ソフトウェア技法の単なる応用分野であるとはいえないものになった。

電子計算機が安価でかつ強力になり、また個人による所有や利用が自由にできるようになり、高度でインタラクティブなプログラム開発環境がありふれたものとなったことなどにより、次第に多くの数学研究者が参入を始めたことで、高度な数学を駆使したアルゴリズムが数式処理に取り入れられる傾向が加速された。

現在、実務であるいは教育で最もよく使われている商業版の数式処理システムはMathematica と Mapleであろう。

日本で開発された数式処理システムとしては、元理化学研究所の佐々木建昭らによるLisp ベースの GAL、元富士通研究所で開発された Risa/Asir、シンプレックス社の開発した数学表記のままで処理が行えるカルキング、などがある。

1987年、ヒューレット・パッカードは世界初の数式処理機能を持った電卓 HP-28 シリーズをリリースした。代数的な数式を入力でき、方程式を解いたり、微積分が可能であった。

1995年、テキサス・インスツルメンツは数式処理システム Derive を搭載した電卓 TI-92 をリリースした。その後も TI-89 などの後継機種をリリースしている。

6. 関連項目
-------

数式処理システムの一覧
数値解析ソフトウェア
計算科学
自動定理証明
人工知能
グラフ電卓
制約論理プログラミング

7. 参考文献
-------

Richard J. Fateman: "Essays in algebraic simplification". Technical report MIT-LCS-TR-095, 1972. [1] - その後の数式処理研究の方向性を示した歴史的に重要な文書.

8. 関連文献
-------

8.1. 書籍
-------

8.1.1. 洋書
---------

H. Strubbe: "Manual for SCHOONSCHIP a CDC 6000/7000 Program for Symbolic Evaluation of Algebraic Expressions", Comp. Phys. Commu., v.8 , pp.1--30.
Edited by B. Buchberger, G.E.Collins, and R. Loos in cooperaion with R. Albrecht: "Computer Algebra: Symbolic and Algebraic Computation",,Springer-Verlag, ISBN 0-387-81776-X, .
J.H.Davenport, Y. Siret and E. Tournier:"Computer algebra: systems and algorithms for algebraic computation",ISBN 0-12-204230-1, .
R. E. Zippel: "Computer Algebra and Parallelism",  ,LNCS 584, Springer-Verlag, ISBN 0-387-55328-2, .
K.O.Geddes, S.R.Czapar, G.Labahn: "Algorithms for Computer Algebra", Kluwer Academic Publ., .
Evelyne Tournier: "Computer Algebra and Differential Equations",Cambridge University Press, London Mathematical Society Lecture Note Series,ISBN 9780521447577, .
Tan Kiat Shi and Willi-Hans Steeb:"SymbolicC++: An Introduction to Computer Algebra Using Object-Oriented Programming",Springer-Verlag, ISBN 981-3083-55-7, .
Edited by Michael J. Wester: "Computer algebra systems: a practical guide",John Wiley & Sons, ISBN 0-471-98353-5, .
Robert P. Gilbert, Joji Kajiwara and Yongzhi S. Xu: "Recent Developments in Complex Analysis and Computer Algebra", Springer, 978-0-7923-5999-9}} .
Marko Petkovsek, Herbert Wilf and Doron Zeilberger: "A=B", A K Peters, Ltd., . url=<https://www.math.upenn.edu/~wilf/AeqB.html>.
Tan Kiat Shi, Willi-Hans Steeb and Yorick Hardy:　"SymbolicC++: an introduction to computer algebra using object-oriented programming",, Springer-Verlag, London, ISBN 1-85233-260-3, .
A. Schinzel:"Polynomials with Special Regard to Reducibility",Cambridge Univ. Press, Encyclopedia of Mathematics and its Applications,ISBN 9780521662253, .
David Eisenbud, Daniel R. Grayson, Mike Stillman, Bernd Sturmfels:"Computations in Algebraic Geometry with Macaulay 2", ,Springer-Verlag, ISBN 978-3540422303, .
Gert-Martin Greuel and Gerhard Pfister: "A Singular Introduction to Commutative Algebra", Springer, ISBN 978-3-540-42897-8 .
Joel S. Cohen: "Computer algebra and symbolic computation : elementary algorithms", A. K. Peters, Ltd., Canada, ISBN 1-56881-158-6, .
Joel S. Cohen: "Computer algebra and symbolic computation : mathematical methods", A. K. Peters, Ltd., Canada, ISBN 1-56881-159-4, .
Johannes Grabmeier, Erich Kaltofen and Volker Weispfenning: "Computer Algebra Handbook: Foundations · Applications · Systems", Springer, 978-3-642-62988-4}} .
Hal Schenck:"Computational Algebraic Geometry",  , Cambridge University Press, ISBN 978-0521536509, .
Gert-Martin Greuel, Gerhard Pfister: "A Singular Introduction to Commutative Algebra", 2nd Ed., Springer-Verlag, ISBN 978-3540735410, .
Yorick Hardy, Kiat Shi Tan and Willi-Hans Steeb:　"Computer algebra with SymbolicC++", World Scientific, ISBN 978-981-283-360-0, .
Joachim von zur Gathen,"Modern Computer Algebra", ,Cambridge Univ. Press, ISBN 978-1107039032, .　※ 2nd Ed. は ISBN 978-0521826464 .
Wolfram Decker and Gerhard Pfister:"A First Course in Computational Algebraic Geometry", Cambridge University Press , ISBN 978-1107612532, .
Carsten Schneider and Johannes Bluemlein: "Computer Algebra in Quantum Field Theory: Integration, Summation and Special Functions", , Springer, ISBN 978-3709116159, ,
Wolfram Koepf: "Computer Algebra - An Algorithm-Oriented Introduction", Springer, ISBN 978-3-030-78016-6 .
Gregory V. Bard: "Sage for Undergraduates: Compatible With Python 3", 2nd Ed., AMS, ISBN 978-1470461553 .

8.1.2. 和書
---------

渡辺隼郎：「常微分方程式の数式処理」、シリーズ新しい応用の数学4、教育出版、ISBN 978-4316375502、。
佐々木建昭：「数式処理」、情報処理叢書7、情報処理学会、オーム社、。
伊理正夫、一松信、山本純恭、内野正弘、佐々木 建昭、長尾 真、田丸 啓吉：「数と式と文の処理」、岩波講座情報科学23，岩波書店、。
後藤英一：「記号処理の基礎と応用」、情報処理学会、 。
数式処理若手の会：「数式処理通信」、Vol.1、no.1 -Vol.7、no.4、、サイエンティスト社、0288-4046}}。
後藤英一・一松信・広田良吾：「計算機による数式処理のすすめ」、共立出版bit別冊、。
「大特集：数式処理」、情報処理、Vol.27、No.4 、情報処理学会、。
佐々木建昭、元吉文男、渡辺隼郎：「数式処理システム」、ソフトウェア講座36、昭晃堂、ISBN 978-4785635367、 。
山下倫範・友永昌治・野海正俊：「MS-DOSと事務・統計・数式 COBOL/SAS/muMATH活用法」,共立出版,ISBN 978-4-320-02298-0、 。
古川昭夫：「muMATH入門：マイコン用数式処理システム」、現代数学社、ISBN 978-4768701386、 。
A. C. ハーン：「REDUCEユーザーズ　マニュアル」、マグロウヒル、。
広田良吾、伊藤雅明：「REDUCE入門：パソコンによる数式処理活用法」、サイエンス社、ISBN 978-4781905464、 。
大河内茂美：「数式処理ソフトREDUCEで数学を」、森北出版、ISBN 978-4627832602、 。
落合豊行、永友清和：「REDUCEによる線形代数  」、近代科学社、ISBN 978-4844372936、 。
牧野潔夫：「整数論の数式処理」、サイエンティスト社、。
下地貞夫：「数式処理」、森北出版、ISBN 978-4627806306、 。
渡辺隼郎：「数式処理について」、数学、第44巻第1号、日本数学会 、頁79-84、0039-470X}}、 。
佐々木建昭：「計算代数と計算幾何」、岩波講座応用数学、第五回配本、岩波書店、。
マーコ・ペトコブセク、ハーバート S. ウィルフ、ドロン ザイルバーガー：「A＝B 等式証明とコンピュータ」、トッパン、ISBN 4-8101-8972-4、。
斎藤友克、平野照比古、竹島卓：「日本で生まれた数式処理ソフト：リサアジールガイドブック」、SEG出版、ISBN 978-4872430769、。
臼田昭司、東野勝治、葭谷安正：「最適OSで使いこなす　数式処理/数値計算」、ISBN 4-274-07866-3、オーム社、。
河野実彦：「微分方程式と数式処理」、森北出版、ISBN 978-4627038110、 。
藤重悟、佐々木建昭、今井浩、浅野孝夫、杉原厚吉：「計算代数と計算幾何」、岩波講座 応用数学10、岩波書店、ISBN 978-4000108003、。※ 1993年9月のものの第二次発行分。
赤間世紀:「はやわかり Maple」、共立出版、ISBN 4-320-02986-0、 。
赤間世紀:「はじめてのMuPAD MuPAD Pro2.0 for Windows」、シュプリンガー・フェアラーク東京、ISBN 978-4431709466、。
小国力、小割健一：「MATLAB数式処理による数学基礎」、朝倉書店、ISBN 4-254-11101-0。
赤間世紀、山口喜博:「MuPADで学ぶ基礎数学」、丸善、ISBN 978-4621074657、 。
生越茂樹:「基礎からのMuPAD―安価で人気の「数式処理システム」を使いこなす!」、工学社、ISBN 978-4777510849　、。
J.フォン ツァ ガテン:「コンピュータ代数ハンドブック」、朝倉書店、ISBN 978-4254111064、 。# 原書 "Modern Computer Algebra" の邦訳。
横田博史:「はじめてのMaxima」、工学社、ISBN 978-4777512010、 。
[2]
竹内薫：「はじめての数式処理ソフト：Maximaで楽しむ数式計算と物理グラフィック」、講談社 、ISBN 978-4062575607、 。
山田直記、田中尚人：「理工系のための実践的微分方程式」、学術図書出版社、ISBN 978-4-7806-0074-2、。
日本Mathematicaユーザー会：「入門 Mathematica」、東京電機大学出版局、ISBN 978-4-501-54620-5、 (2009年6月20日）