Mapleは、記号計算と数値計算を行う環境であると同時に、マルチパラダイムのプログラミング言語でもあります。記号数学、数値解析、データ処理、可視化など、技術計算の様々な分野を網羅しています。ツールボックスであるMapleSimは、マルチドメインの物理モデリングとコード生成のための機能を追加します。
Mapleの記号計算能力は、汎用コンピュータ代数システム(GPAS)の能力に匹敵する。例えば、数式を操作したり、常微分方程式や偏微分方程式などから生じる特定の問題に対する記号解を求めることができる。
Mapleは、カナダのソフトウェア会社Maplesoftによって商業的に開発されています。「Maple」という名前は、このソフトウェアがカナダで開発されたことに由来しています。
ユーザーは、従来の数式表記法で数式を入力できます。カスタムユーザーインターフェースを作成することも可能です。数値計算(任意精度)に加え、記号計算および視覚化にも対応しています。記号計算の例を以下に示します。
Maple は動的に型付けされた命令型プログラミング言語( Pascalに似ている) を採用しており、レキシカルスコープの変数を許可しています。[ 4 ]また、他の言語 ( C、C#、Fortran、Java、MATLAB、Visual Basic ) やMicrosoft Excelへのインターフェースも備えています。
Mapleは、Webページでの表示を含め、数式を表現および解釈するためのW3CフォーマットであるMathML 2.0をサポートしています。 [ 5 ]また、従来の数式表記から組版システムLaTeXに適したマークアップに変換する機能もあります。
Mapleは、 C言語で記述された小さなカーネルをベースとしており、このカーネルがMaple言語を提供します。機能の大部分は、さまざまなソースから提供されるライブラリによって提供されます。ライブラリのほとんどはMaple言語で記述されており、ソースコードを閲覧できます。多くの数値計算は、NAG数値ライブラリ、ATLASライブラリ、またはGMPライブラリによって実行されます。
Mapleのさまざまな機能では、異なる形式の数値データが必要となります。記号式は、有向非巡回グラフとしてメモリに格納されます。標準インターフェースと計算機インターフェースはJavaで記述されています。
Maple の最初のコンセプトは、1980 年後半にウォータールー大学で行われた会議から生まれました。[ 6 ]大学の研究者たちは、 Lisp ベースのコンピュータ代数システムMacsymaを実行できるほど強力なコンピュータを購入したいと考えていました。しかし、代わりに、より低価格のコンピュータで動作する独自のコンピュータ代数システム Maple を開発することにしました。移植性を目指して、BCPLファミリーのプログラミング言語 (最初はBとCのサブセットを使用し、後に C のみを使用) で Maple を書き始めました。[ 6 ]最初の限定版は 3 週間後に登場し、より完全なバージョンは 1982 年頃から主流になりました。[ 7 ] 1983 年末までに、50 を超える大学がマシンに Maple のコピーをインストールしました。
1984年、研究グループはWatcom Products Inc.と契約し、最初の商用版であるMaple 3.3のライセンスを取得して配布しました。[ 7 ] 1988年にはWaterloo Maple Inc.(Maplesoft)が設立されました。同社の当初の目標はソフトウェアの配布を管理することでしたが、最終的には独自の研究開発部門を持つまでに成長し、現在ではMapleの開発のほとんどがそこで行われています(残りはさまざまな大学の研究室で行われています[ 8 ])。
1989年、Mapleの最初のグラフィカルユーザーインターフェースが開発され、Macintosh版4.3に搭載されました。新しいインターフェースのX11版とWindows版は、1990年にMaple Vでリリースされました。1992年、Maple Vリリース2では、テキスト、グラフィック、入力と組版出力を組み合わせたMapleの「ワークシート」が導入されました。[ 9 ] 1994年には、Maple開発者によって作成されたニュースレター「MapleTech」の特別号が発行されました。[ 10 ]
1999年、Maple 6のリリースに伴い、MapleにはNAG数値ライブラリの一部が組み込まれました。[ 11 ] 2003年には、現在の「標準」インターフェースがMaple 9で導入されました。このインターフェースは主にJavaで記述されています(ただし、数式の組版ルールなど、一部はMaple言語で記述されています)。Javaインターフェースは動作が遅いと批判されました。[ 12 ]後のバージョンでは改善されていますが、Maple 11のドキュメント[ 13 ]では、物理メモリが500MB未満のユーザーには以前の(「クラシック」)インターフェースの使用を推奨しています 。
1995年から2005年の間に、Mapleはユーザーインターフェースの弱さから競合他社に市場シェアを大きく奪われた。[ 14 ] 2005年のMaple 10では、Mapleは新しい「ドキュメントモード」インターフェースを導入し、その後、いくつかのリリースでさらに開発が進められた。
2009年9月、MapleとMaplesoftは日本のソフトウェア販売会社であるサイバーネットシステムズに買収された。[ 15 ]
Maple の特徴は次のとおりです。[ 31 ]
以下のコードは、非負整数の階乗を計算するもので、Mapleにおける命令型プログラミングの構成要素の一例です。
myfac := proc ( n :: nonnegint ) local out , i ; out := 1 ; for i from 2 to n do out := out * i end do ; out end proc ;単純な関数は、「~にマッピングする」という矢印表記を使用して定義することもできます。
myfac := n -> product ( i , i = 1 .. n );探す
int ( cos ( x / a ) , x );出力:
行列の行列式を計算する。
M := Matrix ([[ 1 , 2 , 3 ] , [ a , b , c ] , [ x , y , z ]]); # 例:行列線形代数:-行列式(M);
シリーズ( tanh ( x ) 、x = 0 、15 )以下のコードは、高次多項式の根を数値的に計算します。
f := x ^ 53 - 88 * x ^ 5 - 3 * x - 5 = 0fsolve ( f )- 1.097486315 、-. 5226535640 、1.099074017同じコマンドで連立方程式を解くこともできます。
f := ( cos ( x + y ))^ 2 + exp ( x ) * y + cot ( x - y ) + cosh ( z + x ) = 0 :g := x ^ 5 - 8 * y = 2 :h := x + 3 * y - 77 * z = 55 ; fsolve ( { f , g , h } );{ x = - 2.080507182 , y = - 5.122547821 , z = - 0.9408850733 }プロットxは-10から10の範囲で:
plot ( x * sin ( x ) , x = -10..10 ) ;プロットxとyは-1から1の範囲をとる。
Lot3d ( x ^ 2 + y ^ 2 , x = - 1 .. 1 , y = - 1 .. 1 );
plots :- animate ( subs ( k = 0.5 , f ) , x =- 30 .. 30 , t =- 10 .. 10 , numpoints = 200 , frames = 50 , color = red , thickness = 3 );
plots :- animate3d ( cos ( t * x ) * sin ( 3 * t * y ) , x =- Pi .. Pi , y =- Pi .. Pi , t = 1 .. 2 );
M := Matrix ([[ 400 , 400 , 200 ] , [ 100 , 100 ,- 400 ] , [ 1 , 1 , 1 ]] , datatype = float [ 8 ]) : plot3d ( 1 , x = 0 .. 2 * Pi , y = 0 .. Pi , axes = none , coords = spherical , viewpoint = [ path = M ]);
f := ( 1 + A * t + B * t ^ 2 ) * exp ( c * t );inttrans :- laplace ( f , t , s );inttrans :- invlaplace ( 1 / ( s - a ) , s , x );inttrans :- fourier ( sin ( x ) , x , w )積分方程式を満たす関数fを求めよ
eqn := f ( x ) - 3 * Int (( x * y + x ^ 2 * y ^ 2 ) * f ( y ) , y =- 1 .. 1 ) = h ( x ) : intsolve ( eqn , f ( x ));Mapleエンジンは、Maplesoft社の他のいくつかの製品でも使用されています。
以下は、Mapleエンジンを使用しなくなったサードパーティ製の商用製品の一覧です。