Maple

代数演算

代数演算とは加減乗除および階乗（平方根等を含む）及びはそれらを組み合わせることで作られる演算の総称である。以下、主な代数演算について説明する。

関数の定義

関数の定義は以下のように行う。例えば関数fをと定義したい場合には、
f:=x->x*exp(-x^2); 
と入力すればよい。2変数以上の関数もほぼ同様で、例えば関数fをと定義したい場合には、
g:=(x,y)->y*exp(-x^2);
と入力すればよい。一般に関数には変数が存在する。人間は関数を見せられた場合に『何が変数であるか』を理解できるが、機械はそうではない。したがって、変数が何なのかを明示する必要がある。上記のコマンドにおいて、変数が何なのかを明示する役割を果たしている記号がそれぞれ『x->』『(x,y)->』である。もちろん
f:=x*exp(-x^2);
のように変数を明示しない定義の仕方もあるが、これだと、後々別のコマンドと組み合わせる際に何らかの不都合が生じる可能性がある。

代入

代入に関するコマンド、つまり、文字式や関数に、文字や数字を代入するためのコマンドとしては、evalとsubsが代表的である。

evalによる代入

evalコマンドを用いると、文字式や関数に、文字や数字を代入できる。
> eval(x^2+x+1 , x=1);
f:=(x,y,z)->y*exp(-x^2)+z;
> eval(poly,[x=2,y=3,z=t]);

subsによる代入

同様にsubsコマンドを使えば、文字式や関数に、文字や数字を代入できる。ただし、代入する側の位置と代入する側の位置が、evalとは逆になっている。
subs( x=2, x^2+x+1 );
subs( x=A, x^2+x+1 );
h:=x*exp(-x^2);
subs( x=A, f );
（駄目）
f:=x->x*exp(-x^2):
subs( x=A, f );
f
(次のように書く)
f:=x->x*exp(-x^2):
subs( x=A, f(x) );

evalとsubsの違い

evalコマンドとsubsコマンドの違いは、次の例において顕著である。
expr := sin(x)/cos(x);
subs(x=0,expr);
eval(expr,x=0);

> der := diff(f(x),x) + f(x);
                          / d      \       
                   der := |--- f(x)| + f(x)
                          \ dx     /       
> eval(der,x=0);
               /    / d               \\       
               |eval|--- f(x), {x = 0}|| + f(0)
               \    \ dx              //       
> subs(x=0,der);
                    (diff(f(0), 0)) + f(0)
subsは評価(evaluation)をせずに代入するのみ。evalは評価したあとに代入する。

整式の整理

多項式等を降冪の順や昇冪の順にならべることができる。ただし、Sinの次数について並べ替えるのは難しい。

グラフ描画に関するコマンド

基本コマンド plot , plot3d および描画パッケージ plots(パッケージ内に描画用のコマンド群が含まれています。)

曲線

基本コマンド plot は、一変数の方程式を曲線で描画します。
例：x^2+3

曲面

基本コマンド plot3d は、二変数の方程式を曲面で描画します。
例：x+y

基本構文

曲線を描画する plot コマンドの基本形は、以下となります
plot(曲線の定義式、x=a..b,options);
曲面を描画する plot3d コマンドの基本形は、以下となります
plot3d(曲面の定義式, x=a..b, y=c..d, options) ;
x,y,z で、陰関数で定義されたグラフの場合は
plots[implicitplot3d](陰関数による曲面の定義式, x=a..b, y=c..d,z=e..f, options) 

である。その他に媒介変数表示等も可能だが、それは下の表に纏めます。
　ただし、曲面を描画する場合には、
with(plots): 
を予め読み込んでおかねばならない。具体的には、
with(plots):
implicitplot3d(x^2+y^2=1, x=-1..1, y=-1..1) 
のようにすればよい。ただし、この場合はzの定義域や、曲面の色やグリッドを指定するためのoptionは省略した（省略しても問題ない）。

また、with(plots):は同じシェルの上で作業する限り一度読み込めば、あとはそのシェルを終了するまで有効なので、
　

plot3d(x+y, x=1..2, y=1..2); 

別の作業with(plots):

implicitplot3d(x^2+y^2=1, x=-1..1, y=-1..1);

のように、一度だけ読み込んでその後は読み込む必要がないが、

plot3d(x+y, x=1..2, y=1..2); 

別の作業

with(plots):

implicitplot3d(x^2+y^2=1, x=-1..1, y=-1..1);

のように、曲面を描くたびに読み込んでも別段問題がない。

一般性を持った曲面描画のプログラム

基本はこれでよいのだが、現実には『複数の曲面や曲線を同じエリアに描く』あるいは
『予め定義しておいた関数に関するグラフを書く』あるいはその両方を行うことが
単独のグラフを書くことに比べ多いだろう。
そのため、比較的応用範囲が広いプログラムを一つ挙げておこう。以下のプログラムは、
『ｇ（x,y）の定義を行ったうえでそれのグラフとg(x,y)=1についての陰関数を、表示色を変えて同時に表示させる』ものである。
with(plots): 

g:=(x,y)->y*exp(-x^2); 

p1:=plot3d(g(x,y),x=-3..4,y=-2..4,axes=boxed):

p2:=implicitplot3d(g(x,y)=1,x=-3..4,y=-2..4,z=-2..4,axes=boxed,grid= [15,15,15],style=patchnogrid):

display(p1,p2);
表示するグラフを3つ以上に増やすこともできる
with(plots):

g:=(x,y)->y*exp(-x^2);

p1:=plot3d(g(x,y),x=-3..4,y=-2..4,axes=boxed):

p2:=implicitplot3d(g(x,y)=1,x=-3..4,y=-2..4,z=-2..4,axes=boxed,grid=[15,15,15],style=patchnogrid):

p3:=plot3d(x*y ,x=-3..4,y=-2..4,axes=boxed):

display(p1,p2,p3);　
もちろん、1種類の曲面のみを表すことも、可能である。
with(plots):　

g:=(x,y)->y*exp(-x^2);
p1:=plot3d(g(x,y),x=-3..4,y=-2..4,axes=boxed):
display(p1);

尚、g,p1,p2　等の変数名は好きなように変えてよい。（変更で影響を受ける部分、例えば『display(p1,p2);』等も同時に正しく変更すれば）問題ない。例えば
with(plots): 

f:=(x,y)->y*exp(-x^2); 

p:=plot3d(g(x,y),x=-3..4,y=-2..4,axes=boxed):

q:=implicitplot3d(f(x,y)=1,x=-3..4,y=-2..4,z=-2..4,axes=boxed,grid= [15,15,15],style=patchnogrid):

display(p,q);

のようにしても何も問題ない。

曲面描画の主なオプション

曲面の形式としては、グラフ（plot3d）、陰関数のグラフ(implicitplot3d)等がある。
その他のものは以下の表に纏める。

微分、積分に関するコマンド

微分
diff(f(x),x);
不定積分
int(f(x),x);
定積分
int(f(x),x=0..100);
f(x)を定義しなかった場合は、直接x^2などを代わりに入力できる。