数式・条件式などを与え具体的な数字を返す関数の定義方法である。
関数名(変数1,変数2):=(式)は、視覚的にもわかりやすい関数定義法である。
 (%i1) f(x,y):=(x^2+x*y)/y;
                                           2
                                          x  + x y
 (%o1)                         f(x, y) := --------
                                             y
 (%i2) f(0,1);
 (%o2)                                  0
 (%i3) f(a,1);
                                      2
 (%o3)                               a  + a
 (%i4) f(a,2);
                                     2
                                    a  + 2 a
 (%o4)                              --------
                                       2
しかし、式の中に出てくる変数は、何もかも置き換えられてしまうので、時折不都合が出てくる。
 (%i1) f(x):=diff(sin(x),x);
 (%o1)                       f(x) := diff(sin(x), x)
 (%i2) f(x);
 (%o2)                               cos(x)
 (%i3) f(%pi);
 (%o3)                                  0
 (%i4) cos(%pi);
 (%o4)                                - 1
 (%i5) diff(sin(%pi),%pi);
 (%o5)                                 0
(%i3)のコマンドの答えは、通常なら(%o4)の結果を期待するであろうが、実際は(%i5)のようなコマンドと解釈されている。
先のような問題を回避するためには、define(f(x),diff(sin(x),x))で関数の定義を行う。
 (%i1) define(f(x),diff(sin(x),x));
 (%o1)                          f(x) := cos(x)
 (%i2) f(%pi);
 (%o2)                                - 1
また置き換え割り当てでは、f(x):=%;のような関数定義はできないのだが、define(f(x),%);ならできる。
 (%i1) (x+2*y)^2;
                                           2
 (%o1)                            (2 y + x)
 (%i2) f(x):=%;
 (%o2)                             f(x) := %
 (%i3) f(1);
 (%o3)                             f(x) := %
 (%i4) define(f(x),%o1);
                                               2
 (%o4)                        f(x) := (2 y + x)
 (%i5) f(1);
                                           2
 (%o5)                            (2 y + 1)
関数の定義をプログラム言語のように長くなると、その関数の内部処理だけに使う変数がほしくなってくる。たとえ、その関数の外側で同名の変数があったとしても、関数内部ではまったく独立した変数として扱われる変数をプログラム言語ではローカル変数と言うが、Maximaでもローカル変数を用いることができる。
block([変数1,変数2,...], 処理1, 処理2, ...)の変数1,2は、blockの(と)の間だけで有効なローカル変数となる。blockの返値は、カンマで区切られた処理の一番最後の式の値である。
数式ではなく、性質だけを与える関数の定義法である。
まだ、解けてない関数や数式を特定しない一般的な関数を与える場合に使う。
declare(関数1,属性1,関数2,属性2,...)は関数に属性を与える。
commutative, symmetric(対称)
antisymmetric(非対称)
lassociative
rassociative
posfun
integervaled
incleasing
decleasing
oddfun
evenfun
線形性
liner,outative,additive
積算性
multiplicative
depends(y,x)