ベクトルの外積を定義してみる。
関数名をcrossとして
(%iXX) define(cross(u,v), [u[2]*v[3]-u[3]*v[2], u[3]*v[1]-u[1]*v[3], u[1]*v[2]-u[2]*v[1]]); (%oXX) cross(u,v):=[u[2]*v[3]-v[2]*u[3],v[1]*u[3]-u[1]*v[3],u[1]*v[2]-v[1]*u[2]]
定義内容の表示
(%iXX) fundef(cross); (%oXX) cross(u,v):=[u[2]*v[3]-v[2]*u[3],v[1]*u[3]-u[1]*v[3],u[1]*v[2]-v[1]*u[2]]
保存はサーチパスの通っているディレクトリ(maxima_userdir)下にしておけば読み込み時、ディレクトリ名が省略できる。
save()を使ってlispプログラムとして保存
save(sconcat(maxima_userdir,"/","cross_product.lisp"), cross)
あるいはmaximaプログラム(ただのテキストファイル)として保存
stringout(sconcat(maxima_userdir,"/","cross_product.wxm"), fundef(cross))
上記どちらでもload(ファイル名)で読み込める。
ファイル名の拡張子は何でも良いが、"lisp", "lsp", "mac", "mc", "wxm"のいずれかであれば読み込み時に省略できる。