コンピュータ代数システム( CAS ) または記号代数システム( SAS ) は、数学者や科学者による従来の手作業による計算と同様の方法で数式を操作する機能を備えた数学ソフトウェアです。20 世紀後半のコンピュータ代数システムの開発は、「コンピュータ代数」または「記号計算」の分野の一部であり、多項式などの数学的オブジェクトに対するアルゴリズムの研究を促進しました。
コンピュータ代数システムは、専門型と汎用型の 2 つのクラスに分けられます。専門型は、数論、群論、初等数学の教育など、数学の特定の部分に専念しています。
汎用コンピュータ代数システムは、数式の操作を必要とするあらゆる科学分野で作業するユーザーに役立つことを目指しています。 汎用コンピュータ代数システムが役立つためには、次のようなさまざまな機能を備えている必要があります。
- ユーザーが通常はキーボード、メニュー選択、マウス、またはスタイラスから数式を入力し、表示できるようにするユーザーインターフェイス。
- プログラミング言語とインタープリタ(計算結果は通常、予測できない形式とサイズを持つため、ユーザーの介入が頻繁に必要になります)、
- 数式を簡略化するための書き換えシステムである簡略化器。
- 計算中に発生する可能性のある中間データの巨大なサイズに対応するために必要となる、ガベージコレクターを含むメモリマネージャ。
- 発生する可能性のある整数の巨大なサイズによって必要となる任意精度の演算。
- 数学アルゴリズムと特殊関数の大規模なライブラリ。
ライブラリは、ユーザーのニーズだけでなく、簡略化者のニーズも満たす必要があります。たとえば、分数を含む式の簡略化には、 多項式の最大公約数の計算が体系的に使用されます。
必要とされるコンピュータの能力が膨大なため、汎用コンピュータ代数システムの数が少ないのです。重要なシステムとしては、Axiom、GAP、Maxima、Magma、Maple、Mathematica、SageMathなどがあります。
歴史

1950 年代、コンピュータは主に数値計算に使用されていましたが、記号操作に使用する研究プロジェクトもいくつかありました。コンピュータ代数システムは 1960 年代に登場し始め、理論物理学者の要件と人工知能の研究という 2 つのまったく異なる源から発展しました。
最初の開発の代表的な例は、後にノーベル物理学賞を受賞したマルチヌス・フェルトマンが行った先駆的な研究です。フェルトマンは 1963 年に、記号数学、特に高エネルギー物理学のためのSchoonschip (オランダ語で「きれいな船」)というプログラムを設計しました。その他の初期のシステムにはFORMACがあります。
カール・エンゲルマンは、Lisp をプログラミングの基礎として、1964年にMITREの人工知能研究環境内でMATHLAB を作成しました。後に MATHLAB は、大学の TOPS-10 または TENEX を実行する PDP-6 および PDP-10 システムのユーザーが利用できるようになりました。現在でも、PDP-10 のSIMHエミュレーションで使用できます。MATHLAB (「 math ematical lab oratory」) をMATLAB (「mat rix lab oratory」)と混同しないでください。MATLAB は、15 年後にニューメキシコ大学で構築された数値計算システムです。
1987年、ヒューレット・パッカードはHP-28シリーズで初の携帯型計算機CASを発表しました。[1]数式処理機能を備えた他の初期の携帯型計算機には、テキサス・インスツルメンツの TI-89シリーズとTI-92計算機、カシオの CFX-9970Gなどがあります。[2]
最初に普及したコンピュータ代数システムは、muMATH、Reduce、Derive(muMATH ベース)、Macsymaでした。Macsyma のコピーレフト版はMaximaと呼ばれています。Reduce は2008 年にフリーソフトウェアになりました。 [3]商用システムにはMathematica [4]やMapleがあり、研究数学者、科学者、エンジニアによく使用されています。 無料で利用できる代替システムにはSageMath (他のいくつかの無料および非無料の CAS のフロントエンドとして機能できます)があります。 その他の重要なシステムには、 Axiom、GAP、Maxima、Magmaなどがあります。
2000年代初頭のウェブベースのアプリケーションへの移行により、オンライン検索エンジンであるWolframAlphaと、 Mathematicaの機能を備えたCASがリリースされました。[5]
最近では、人工ニューラルネットワークを使用したコンピュータ代数システムが実装されていますが、2020年時点では市販されていません。[6]
象徴的な操作
通常サポートされている記号操作には次のものが含まれます。
- 仮定による自動簡略化や制約による簡略化を含む、より小さな表現または何らかの標準形式への簡略化
- 特定の表現に対する記号または数値の置換
- 表現形式の変更: 積と累乗の展開、部分因数分解と完全因数分解、部分分数としての書き換え、制約充足、三角関数の指数関数としての書き換え、論理式の変換など。
- 部分微分と全微分
- 多次元積分を含む不定積分と定積分(記号積分を参照)
- 記号的制約付きおよび制約なしグローバル最適化
- さまざまな領域における線形方程式およびいくつかの非線形方程式の解
- いくつかの微分方程式と差分方程式の解
- 制限を設ける
- 積分変換
- 展開、加算、積などの級数演算
- 積、逆行列などの行列演算。
- 統計計算
- 実験数学の分野で非常に有用な定理の証明と検証
- 最適化されたコード生成
上記の「some」という単語は、操作が常に実行できるわけではないことを示しています。
追加機能
多くには以下のものも含まれます:
- ユーザーが独自のアルゴリズムを実装できるようにするプログラミング言語
- 任意精度の数値演算
- 正確な整数演算と数論機能
- 2次元形式での数式の編集
- 2次元および3次元の関数のグラフやパラメトリックプロットを描画し、アニメーション化する
- チャートや図表を描く
- データベースなどの外部プログラムにリンクしたり、プログラミング言語でコンピュータ代数システムを使用するためのAPI
- マッチングや検索などの文字列操作
- 物理学、バイオインフォマティクス、計算化学、物理計算用パッケージなどの応用数学で使用するためのアドオン[7]
- 微分方程式の解法[8] [9] [10] [11]
いくつか例を挙げると:
一部のコンピュータ代数システムは専門分野に焦点を当てており、通常は学術界で開発され、無料です。数値システムと比較すると、数値演算には非効率的である可能性があります。
表現の種類
CAS によって操作される式には、通常、複数の変数の多項式、式の標準関数 (正弦関数、指数関数など)、さまざまな特殊関数 ( Γ、ζ、erf、ベッセル関数など)、式の任意関数、最適化、式の導関数、積分、簡略化、和、積、式を係数とする切り捨てられた級数、式の行列などが含まれます。サポートされる数値領域には、通常、実数の浮動小数点表現、整数(無制限のサイズ)、複素数(浮動小数点表現)、実数の区間表現、有理数(正確な表現)、代数的数が含まれます。
教育での使用
小中学校の授業でコンピュータ代数システムの使用を増やすことを提唱する人は多い。このような提唱の主な理由は、コンピュータ代数システムは紙と鉛筆や手持ちの計算機を使った数学よりも現実世界の数学を反映するからである。[12] 数学の授業でコンピュータの使用を増やすというこの推進は、一部の教育委員会によって支持されている。一部の地域ではカリキュラムに義務付けられている。[13]
コンピュータ代数システムは高等教育で広く利用されている。[14] [15]多くの大学では、コンピュータ代数システムの使用方法を習得するための特別なコースを提供しているか、学生がコースワークでコンピュータ代数システムを使用することを暗黙的に期待しています。コンピュータ代数システムを開発している企業は、大学やカレッジのプログラムでコンピュータ代数システムの普及を推進してきました。[16] [17]
CAS搭載の電卓はACT、PLAN、および一部の教室では使用が許可されていません[18]が、 SAT、一部のSAT科目試験、AP微積分、化学、物理学、統計学の試験など、カレッジボードの電卓使用が許可されているすべてのテストでは許可される場合があります。[19]
コンピュータ代数システムで使用される数学
- クヌース・ベンディックス補完アルゴリズム[20]
- 根探索アルゴリズム[20]
- Risch アルゴリズムまたはRisch-Norman アルゴリズムなどによるシンボリック統合
- 例えばゴスパーのアルゴリズムによる超幾何和
- 例えばGruntzのアルゴリズムによる限界計算
- 例えば有限体上の多項式因数分解、 [21] ベルレカンプのアルゴリズムやカンター・ザッセンハウスのアルゴリズムなど。
- ユークリッドの互除法などによる最大公約数
- ガウス消去法[22]
- 例えばブッフベルガーのアルゴリズムによるグレブナー基底、ユークリッドの互除法とガウスの消去法の一般化
- パデ近似値
- シュワルツ・ジッペル補題と多項式恒等式の検定
- 中国剰余定理
- ディオファントス方程式
- ランダウのアルゴリズム(ネストされた根号)
- 基本関数と特殊関数の導関数。(例:不完全ガンマ関数の導関数を参照。)
- 円筒代数分解
- 円筒代数分解による実数上の量指定子除去
参照
参考文献
- ^ リチャード・ネルソン、「ヒューレット・パッカード電卓の初登場」。ヒューレット・パッカード。2010年7月3日時点のオリジナルよりアーカイブ。
- ^ クーン、アルバート(1999年10月)、「記号数学システム入門:生産性ツール」、テクノロジーヒント、数学教師、92(7):620–622、doi:10.5951/mt.92.7.0620、JSTOR 27971125
- ^ 「SourceForge の REDUCE Computer Algebra System」。reduce -algebra.sourceforge.net 。2015年 9 月 28 日閲覧。
- ^ Maple の共同作成者である Gaston Gonnet 氏へのインタビュー、Wayback Machineに 2007-12-29 にアーカイブ、SIAM History of Numerical Analysis and Computing、2005 年 3 月 16 日。
- ^ Bhattacharya, Jyotirmoy (2022-05-12). 「Wolfram|Alpha: 無料のオンラインコンピュータ代数システム」. The Hindu . ISSN 0971-751X . 2023-04-26閲覧。
- ^ オーンズ、スティーブン。「記号数学はついにニューラルネットワークに屈する」。Quanta Magazine 。 2020年11月4日閲覧。
- ^ Dana-Picard, Thierry Noah. 「数学教育におけるコンピュータ支援証明と自動化手法」. arxiv.org . 2024年6月23日閲覧。
- ^ 「dsolve - Mapleプログラミングヘルプ」www.maplesoft.com . 2020年5月9日閲覧。
- ^ 「DSolve - Wolfram言語ドキュメント」www.wolfram.com . 2020年6月28日閲覧。
- ^ 「基本的な代数と微積分 — Sage チュートリアル v9.0」。doc.sagemath.org 。2020 年 5 月 9 日閲覧。
- ^ 「Xcas による記号代数と数学」(PDF)。
- ^ 「コンピューターを使って子供たちに本当の数学を教える」Ted.com 。 2017年8月12日閲覧。
- ^ 「数学 - マニトバ州教育」Edu.gov.mb.ca . 2017年8月12日閲覧。
- ^ 「教職員および学生のためのMathematica:情報技術 - ノースウェスタン大学」。It.northwestern.edu 。 2017年8月12日閲覧。
- ^ 「学生のためのMathematica - コロンビア大学情報技術」cuit.columbia.edu 。 2017年8月12日閲覧。
- ^ 「高等教育のためのMathematica: 大学および専門学校のコースでの使用」Wolfram.com 。 2017年8月12日閲覧。
- ^ 「MathWorks - Academia - MATLAB & Simulink」。Mathworks.com 。 2017年8月12日閲覧。
- ^ ACT の CAAP テスト: CAAP 数学テストでの計算機の使用 2009 年 8 月 31 日アーカイブ、Wayback Machineで
- ^ 「AP 試験計算機ポリシー」。AP 学生。カレッジボード。2024年 5 月 24 日閲覧。
- ^ ab B. Buchberger; GE Collins; R. Loos (2013-06-29). コンピュータ代数 :記号計算と代数計算。Springer Science & Business Media。ISBN 978-3-7091-3406-1。
- ^ ヨアヒム・フォン・ツア・ガテン;ユルゲン・ゲルハルト (2013-04-25)。現代のコンピューター代数。ケンブリッジ大学出版局。ISBN 978-1-107-03903-2。
- ^ Keith O. Geddes、Stephen R. Czapor、George Labahn (2007-06-30)。コンピュータ代数のためのアルゴリズム。Springer Science & Business Media。ISBN 978-0-585-33247-5。
外部リンク
- コンピュータ代数システムの時代におけるカリキュラムと評価、Wayback Machineに 2009-12-01 にアーカイブ -オハイオ州コロンバスの科学、数学、環境教育のための教育リソース情報センタークリアリングハウスより。
- Richard J. Fateman。「代数的簡略化に関するエッセイ」技術レポート MIT-LCS-TR-095、1972 年。(コンピュータ代数の研究の方向性を示す歴史的に興味深い。MIT LCS の Web サイト: [1])
