Maxima で数式計算

Maxima で数式計算

数式処理ソフト MAXIMA についてのメモ
  1. 最低限知っておくこと

           
       :                     は代入
       ;                     は各関数を実行するときに、その区切れ目として一番最後につける。
       %                     直前の計算結果
       %o7                   (%o7) というラベルのついた計算結果
           

  2. 変数の型

           
        リスト        [] でかこまれるもの, eg. [a, b, c]
        配列          変数名の後の[]内に添字をあたえることで指定できるデータ
        行列          いわゆる行列
        ※ ただし、どれも共通の参照の仕方があったりする。
           

  3. 演算・関数
    1. 四則演算など

      	      
          四則演算        普通に+ - * /, * を省略することはできない。
          関数          f(x) 等とする。
      	      

    2. 微分積分

      	      
          diff( sinh(x), x);
          integrate(1/sqrt(1 + x^2), x, 1, L);
      	      
      ※ 積分するときに、L の正負を聞かれる。正ならば p 負ならば n と入力すればよい。

    3. ベクトルの内積

      
      	      [2,3].[x,y];
      	      

    4. ベクトルの外積(もちろん、3次元の場合のみ, Maxima 入門ノートより)

      
      	      v1:[a,b,c];
      	      v2:[x,y,z];
      	      transpose(adjoint(matrix(v1,v2,[1,1,1])))[3];
      	      

    5. 行列のかけ算

      
      	      M1: matrix( [a, b, c], [e, f, g]);
      	      M2: matrix( [1, 2], [0, 0], [3, 4]);
      	      M1.M2;
      	      

    6. 行列式

      	      
          A: matrix( [a, b, c, d], [e, f, g, h], [h, g, f, e], [d, c, b, a ] );
          determinant(A);
      	      

  4. 式の操作
    1. 展開する

      	      
          expand( (x+y)^6 );
      	      

    2. 式を因数分解する。例えば、先の行列式を因数分解する。

      	      
          factor( determinant(A) );
      	      

    3. 式を簡単にする。例えば、先の行列式を簡単にする。

      	      
          ratsimp( determinant(A) );
      	      

    4. 式を簡単にする。例えば、sin^2 + cos^2 = 1 というような関係を適用する。

      	      
          trigsimp( determinant(A) );
      	      

    5. 文字式をひとつの変数に置き換えて整理する。

      	      
          integrate( rho * x^2, x, -L/2, L/2 );
          ratsubst( M, rho * L, %);
      	      
      ここでは、計算結果の中に rho * L を探しだし、それを M に置き換えている。

    6. 項を集める。

      メーリグンリストでの議論を参照のこと
      しかし、結局よくわからない。

  5. その他
    1. TeX の出力

      	      
          tex(cos(x),"/tmp/tmp.tex");
      	      

    2. 作業環境の保存・復元

      	      
          save("test.lsp",ALL);
      	      

      	      
          load("test.lsp");
      	      

    3. コマンドを書いておいてバッチ処理

      	      
          batch("fname");
      	      

    4. グラフ(2D)

      	      
          plot2d(sinh(x), [x, -3,3], [y,-10,10]);
      	      

    5. 無限大

      	      
          INF