Maximaでの添え字あり変数の和の微分

数式処理システムの Maxima で添え字つきの変数の和の微分などをしようとしたが、単純にはできなかった。調べるのに時間がかかったので、備忘録として残しておく。

調べたところ、stackoverflow の「Derivatives using indexed variables」に方法が書いてあった。

Kroneckerのdeltaの和を計算する sum_kron_delta.mac (https://pastebin.com/MmYJRqCq) と添え字付きの変数での和の微分を行う diff_sum.mac (https://pastebin.com/UGCPgvAn) を利用することで、添え字付きの変数の微分ができるようになる。

Windows10 の wxMaxima 20.06.6 で実行した例を次に示す。

マクロのロード

上述のファイルをダウンロードして、ファイル名を sum_kron_delta.mac、diff_sum.mac としたとする。また、sum_kron_delta.mac、diff_sum.mac があるフォルダーを D:\Maxima\macro として説明する。

メニューからのロード

ファイルを読み込むためには、wxMaxima なら、メニューの「ファイル」→「パッケージ読み込み(L)…」をクリックして、ファイルを指定して読み込む。

sum_kron_delta.mac、diff_sum.mac の両方を読み込む。

コマンドでのロード

検索するディレクトリを追加

ちなみに、ロードするファイルのパスを設定するのは、wxMaxima なら、メニューの「Maxima」→「検索するディレクトリを追加」をクリックして、フォルダを指定しても良い。

ロード

sum_kron_delta.mac、diff_sum.mac をロードするためには、次を実行する。

微分の例

ここでは、「Derivatives using indexed variables」に書いてある例であるが、 \( \sum_{i=1}^n  {x_i}^2 \) を \( x_j \) で微分して \( 2 x_j \) を得ることを考える。

微分

微分のためには、次を実行する。ここで、評価を抑制するために、diff や sumの前の ' (single quoate)が必要である。x[i] が \( x_i \) を表す。

これで、\( \sum_{i=1}^n  {x_i}^2 \) を \( x_j \) を \( x_j \) で微分した結果が得られる。ただし、結果には、条件が含まれている。

条件

含まれている条件が取り除かれるように条件などを加える。

\( j \le 1, n \le j\) で、jが整数であることを次のように加える。

単純化

追加の評価を行う " (double single quote) を使って単純化する。微分を行った式番号がたとえば5であったなら、"%o5 で式5の出力(o5)を単純化する。

直前の結果を単純化する場合には、"% を実行する。

微分のまとめ

以下のようにすれば、期待する結果 \( 2 x_j \) を得ることができる。以下の例では条件を先に加えている。