Maximaでは式を書いて、セミコロンをつけて、改行(wxMaximaではshift-改行)すれば、計算が実行されて、結果が表示されます、ということを2年前の記事で書きました。
そしてその次の記事では、Maximaでは分数や無理数、虚数などを含んだ計算は全て正確に実行されること、もし結果(分数や無理数)を小数に直す場合には、式の後ろに , numerを付ける方法を記載しました。
ところで、このカンマで区切ってnumerとつけるのはどんな文法に従っているのでしょうか。このことはマニュアルの8. Evaluationの項目にはわずかに記載がありますが、1. Introduction to Maximaにも4. Command Lineにも記載がありません。
この記法はとても便利なので、ここで一度おさらいをしておきます。Maximaのコマンド入力では、次のような書式を使います。
expr, arg1, arg2, …, argn;
最後のセミコロンはドルでも構いません。このような入力を受け取るとMaximaはこれを
ev(expr, arg1, arg2, …, argn);
という式に変換してから評価を開始します。ev()はかなり特殊な関数です。大雑把に言えば、arg1〜argnを評価環境としてexprという式を評価する、というのがev()の意味になります。ただしこの評価環境はこのev()の評価の最中だけ有効です。またarg1〜argnには色々な書式で色々なことを評価環境として記述できます。
結局このカンマでつなげる書式はev()関数呼び出しの略記法なのですが、この記法はコマンド入力(トップレベル)でしか使えません。関数定義の中やコマンドの引数の中では必ずev()を正しく使ってください。
以下に例を幾つかお見せします。
変数の一時的な束縛(コロンも等号も使えます)
(%i1) (x+y)^2,x:4;
$$ \tag{%o1} \left(y+4\right)^2 $$
関数の一時的な定義
(%i2) integrate(f(x),x);
$$ \tag{%o2} \int {f\left(x\right)}{\;dx} $$
(%i3) %,f(x):=x^2;
$$ \tag{%o3} \int {x^2}{\;dx} $$
評価方法の変更 名詞形の関数を動詞系に変換して評価する
(%i4) %, nouns;
$$ \tag{%o4} \frac{x^3}{3} $$
評価方法の変更 浮動小数で計算
(%i5) %e*2, numer;
$$ \tag{%o5} 5.43656365691809 $$
評価方法の変更 精度を指定して任意精度小数で計算
(%i6) %pi*2, fpprec:50, bfloat;
$$ \tag{%o6} 6.2831853071795864769252867665590057683943387987502B0 $$
追加の計算を指定 式の展開, 式の因数分解
(%i7) (x+y+z)^2, expand;
$$ \tag{%o7} z^2+2\,y\,z+2\,x\,z+y^2+2\,x\,y+x^2 $$
(%i8) %, factor;
$$ \tag{%o8} \left(z+y+x\right)^2 $$
他にも便利な環境指定方法があります。マニュアル8. Evaluation の中のev()関数の説明を読んで試してみてください。
小さな応用を一つ。方程式を解いて、その解を別の式に代入して計算する、というのはよくあることです。Maximaではこんな風にやるのがお洒落でしょう。
(%i9) solve(x^2+2*x-2=0,x);
$$ \tag{%o9} \left[ x=-\sqrt{3}-1 , x=\sqrt{3}-1 \right] $$
(%i10) x^2,first(%);
$$ \tag{%o10} \left(-\sqrt{3}-1\right)^2 $$
first(%)は \( x=-\sqrt{3}-1 \) となるので、これをxの束縛としてx^2を計算する、ということになります。