1IntroductiontoMaxima

Last-modified: 2025-04-16 (水) 20:58:41

1 Introduction to Maxima

maxima」コマンドでMaximaを起動します。Maximaはバージョン情報とプロンプトを表示します。各Maximaコマンドはセミコロンで終了します。セッションは「quit();」コマンドで終了します。セッションの例を以下に示します。

$ maxima
Maxima 5.45.1 https://maxima.sourceforge.io
using Lisp SBCL 2.0.1.debian
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) factor(10!);
                                  8  4  2
(%o1)                             2  3  5  7
(%i2) expand ((x + y)^6);
          6        5       2  4       3  3       4  2      5      6
(%o2)     y  + 6 x y  + 15 x  y  + 20 x  y  + 15 x  y  + 6 x  y + x
(%i3) factor (x^6 - 1);
                                    2            2
(%o3)              (x - 1) (x + 1) (x  - x + 1) (x  + x + 1)
(%i4) quit();
$

Maximaは情報ページを検索できます。describeコマンドを使用すると、コマンドに関する情報、または文字列を含むすべてのコマンドと変数が表示されます。疑問符?(完全一致検索)と二重疑問符?? (不完全一致検索)は、以下の略語ですdescribe。

(%i1) ?? integ
0: Functions and Variables for Elliptic Integrals
1: Functions and Variables for Integration
2: Introduction to Elliptic Functions and Integrals
3: Introduction to Integration
4: askinteger  (Functions and Variables for Simplification)
5: integerp  (Functions and Variables for Miscellaneous Options)
6: integer_partitions  (Functions and Variables for Sets)
7: integrate  (Functions and Variables for Integration)
8: integrate_use_rootsof  (Functions and Variables for Integration)
9: integration_constant_counter  (Functions and Variables for
   Integration)
10: nonnegintegerp  (Functions and Variables for linearalgebra)
Enter space-separated numbers, `all' or `none': 5 4
-- Function: integerp (<expr>)
    Returns `true' if <expr> is a literal numeric integer, otherwise
    `false'.
    `integerp' returns false if its argument is a symbol, even if the
    argument is declared integer.
    Examples:
         (%i1) integerp (0);
         (%o1)                         true
         (%i2) integerp (1);
         (%o2)                         true
         (%i3) integerp (-17);
         (%o3)                         true
         (%i4) integerp (0.0);
         (%o4)                         false
         (%i5) integerp (1.0);
         (%o5)                         false
         (%i6) integerp (%pi);
         (%o6)                         false
         (%i7) integerp (n);
         (%o7)                         false
         (%i8) declare (n, integer);
         (%o8)                         done
         (%i9) integerp (n);
         (%o9)                         false
-- Function: askinteger (<expr>, integer)
-- Function: askinteger (<expr>)
-- Function: askinteger (<expr>, even)
-- Function: askinteger (<expr>, odd)
    `askinteger (<expr>, integer)' attempts to determine from the
    `assume' database whether <expr> is an integer.  `askinteger'
    prompts the user if it cannot tell otherwise, and attempt to
    install the information in the database if possible.  `askinteger
    (<expr>)' is equivalent to `askinteger (<expr>, integer)'.
    `askinteger (<expr>, even)' and `askinteger (<expr>, odd)'
    likewise attempt to determine if <expr> is an even integer or odd
    integer, respectively.
(%o1)                                true

結果を後の計算で使用するには、変数に代入するか、自動的に付与されるラベルで参照します。また、 は% 最新の計算結果を参照します。

(%i1) u: expand ((x + y)^6);
      6        5       2  4       3  3       4  2      5      6
(%o1) y  + 6 x y  + 15 x  y  + 20 x  y  + 15 x  y  + 6 x  y + x
(%i2) diff (u, x);
        5         4       2  3       3  2       4        5
(%o2) 6 y  + 30 x y  + 60 x  y  + 60 x  y  + 30 x  y + 6 x
(%i3) factor (%o2);
                                   5
(%o3)                      6 (y + x)

MMaxima は複素数と数値定数を認識します。

(%i1) cos(%pi);
(%o1)                          - 1
(%i2) exp(%i*%pi);
(%o2)                          - 1

Maxima は微分積分計算を実行できます。

(%i1) u: expand ((x + y)^6);
      6        5       2  4       3  3       4  2      5      6
(%o1) y  + 6 x y  + 15 x  y  + 20 x  y  + 15 x  y  + 6 x  y + x
(%i2) diff (%, x);
        5         4       2  3       3  2       4        5
(%o2) 6 y  + 30 x y  + 60 x  y  + 60 x  y  + 30 x  y + 6 x
(%i3) integrate (1/(1 + x^3), x);
                                 2 x - 1
               2            atan(-------)
          log(x  - x + 1)        sqrt(3)    log(x + 1)
(%o3)    - --------------- + ------------- + ----------
                 6             sqrt(3)          3

Maxima は線形システムと 3 次方程式を解くことができます。

(%i1) linsolve ([3*x + 4*y = 7, 2*x + a*y = 13], [x, y]);
                       7 a - 52        25
(%o1)              [x = --------, y = -------]
                       3 a - 8       3 a - 8
(%i2) solve (x^3 - 3*x^2 + 5*x = 15, x);
(%o2)       [x = - sqrt(5) %i, x = sqrt(5) %i, x = 3]

Maximaは非線形方程式を解くことができます。結果を出力したくない場合は、$の代わりにをコマンドの最後に付けてください;。

(%i1) eq_1: x^2 + 3*x*y + y^2 = 0$
(%i2) eq_2: 3*x + y = 1$
(%i3) solve ([eq_1, eq_2]);
             3 sqrt(5) + 7      sqrt(5) + 3
(%o3) [[y = - -------------, x = -----------],
                   2                 2
                              3 sqrt(5) - 7        sqrt(5) - 3
                         [y = -------------, x = - -----------]]
                                    2                   2

Maxima は 1 つ以上の関数のプロットを生成できます。

(%i1) plot2d (sin(x)/x, [x, -20, 20])$
figures/introduction1
(%i2) plot2d ([atan(x), erf(x), tanh(x)], [x, -5, 5], [y, -1.5, 2])$
figures/introduction2
(%i3) plot3d (sin(sqrt(x^2 + y^2))/sqrt(x^2 + y^2),
        [x, -12, 12], [y, -12, 12])$
figures/introduction3

Categories: Help ·