[第5回] Maxima入門 enter

May 7, 2015
[p.1/4]
2015 年度 数式処理実習 [第 5 回] Maxima 入門
1
Maxima とは?
Maxima とは数式処理システムである.例えば,次のようなことができます.
• π の近似値を 100 桁見たい
• 1000 番目の素数を見たい
• (x + 1)8 を展開したい
• 方程式の解を求めたい
• ある関数の微分や積分をしたい
• 2 変数関数 z = f (x, y) のグラフをいろんな角度から見てみたい
• データをプロットしてみたい
大まかに言うと,Maxima では,次のようなことができます.
• 数値計算
• 記号計算
• グラフィックス
Maxima を使う理由を簡単に言うならば,計算とかグラフ描画など,機械作業でできるところは,全部コンピュータ
に任せ,人間は一番面白い理論のところだけを考えましょう,ということです.では,使ってみましょう.
2
Maxima の起動と終了
Linux にログインして端末を立ち上げます.いつも通り,cd⊔ ˜/su-shiki と打ち込んで su-shiki ディレクトリに移動し
ます.では,Maxima を起動してみましょう.
端末 [kawakubo@pe5-(~/su-shiki)-112] maxima
で,Maxima が立ち上がります.
maxima
% maxima
Maxima 5.20.1 http://maxima.sourceforge.net
using Lisp SBCL 1.0.38
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)
大体こんな感じの画面が立ち上がったと思います.(%i1) に続けて,計算したい数式を入力します.
9+5 を計算してみます.
maxima
(%i1) 9+5;
(%o1)
14
となりましたね? ちゃんと「14」と,答えを返してくれました.
このように,計算したい式の末尾に ; (セミコロン) を付けて,enter キーを押すと,答え
を返してくれます.単に enter キーを押すだけでは,改行されるだけで,答えは出ませんので,注意して下さい.
maxima (%i2) 10!;
10! = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 でしたね.
←セミコロンを忘れないこと
2015 年度 数式処理実習 [第 5 回] Maxima 入門
May 7, 2015
終了するには quit(); とタイプします.
[p.2/4]
maxima
(%i2) quit();
[kawakubo@pe5-(~/su-shiki)-113]
と,端末に戻ります.
また,挙動がおかしくなったり,すごく長い計算を中断したりするときには,ctrl +c を入力します.
maxima
← (コマンドを間違えたので,ctrl+c を入力した.)
(%i3) plot33d^C
Maxima encountered a Lisp error:
Ctrl-C: User break
Automatically continuing.
To enable the Lisp debugger set *debugger-hook* to nil.
(%i3)
このように,元に戻ります.
数と式
3
Maxima では次のようなコマンドで計算ができます.
LATEX と似たコマンドも多いですが,括弧の種類が違うことに注
√
意しましょう.例えば a は,LATEX では \sqrt{a}と入力しましたが,Maxima では sqrt(a) としなければなりません.
Maxima のコマンド
a+b;
a-b;
a*b;
a/b;
a^b;
sqrt(a);
cabs(a);
exp(a);
log(a);
cos(a);
やりたい計算
a + b (足し算)
a − b (引き算)
a · b (掛け算)
a/b (分数)
b
a
√ (べき乗)
a (平方根)
|a| (絶対値)
ea (指数関数)
log(a) (対数関数)
cos(a) (三角関数)
また,つぎの数値が予約されています.
Maxima のコマンド
%e
%pi
%i
定数
e = 2.718281828459045 · · ·
π =√
3.141592653589793
i = −1
(4 ∗ 5 + 2)/7 を計算してみます.
maxima
←セミコロンを忘れない
(%i4) (4*5+2)/7;
(%o4)
22
-7
22
と読みます.なお,既に気づいた人も多いと思いますが,(%i4) は「4 番目の input」,(%o4) は「4 番目の
7
output」を表しています.
これで,
2015 年度 数式処理実習 [第 5 回] Maxima 入門
May 7, 2015
[p.3/4]
通常,コンピュータによる計算は数値計算 (つまり近似計算) です.例えば上の計算では,(4*5+2)/7=3.1428571 と
いう答が返ってきます.ところが,Maxima では,分数は分数のまま扱うことによって,可能な限り数学的に厳密な扱い
をしようとします.一言でいうと
数値には直さず,数式のままで計算する
ことができるわけです.これが Maxima をはじめとする数式処理システムの特徴です.
さて,分数を分数のまま扱うのが Maxima の特徴ですが,もちろん小数で答えを出したいこともあると思います.そ
のような場合には,float というコマンドを用います.
maxima (%i5) float((4*5+2)/7);
(%o5)
分数ではなく,小数で答えが得られました.
3.142857142857143
float では,有効桁 16 桁で表示されましたが,任意の精度(桁数)で表示するには,精度を
fpprec:桁数;
で指定した後,
bfloat(数値評価する式);
を実行します.
maxima
←有効桁を 50 桁に.
(%i6) fpprec:50;
50
← π を計算.
(%i7) bfloat(%pi);
3.1415926535897932384626433832795028841971693993751b0
maxima
←有効桁を 3 桁に.
(%i8) fpprec:3;
3
← 1000! を計算.
(%i9) bfloat(1000!);
4.02b2567
bfloat の答えでは,必ず末尾に b に続いて指数が表示されます.例えば,
3.14b0 は 3.14 × 100 = 3.14 を意味し,1.2345678b2 は 1.2345678 × 102 = 123.45678
を意味しています.つまり,上の枠内の後者の例であれば,1000! = 4.02 × 102567 ということを意味します.
なお,ここで求めている値はあくまで近似値なので,数学的には 1000! ≒ 4.02 × 102567 などと書くのが正しいですが,
この実習では ≒ は使わず,= を使って書くことにします.
では,次の計算をしてみましょう.
例題
• 1-5
• 9·2
• 5/8+9/7
• 323
• (4 + 6) · 2 − (6 − 4)
2015 年度 数式処理実習 [第 5 回] Maxima 入門
May 7, 2015
[p.4/4]
レポート課題
4
• 講義のページ http://www.cis.fukuoka-u.ac.jp/˜kawakubo/ の今日の所の sm140000 05.pdf の設問に答えよ.
• sm140000 05.tex (sm140000 05.pdf の原稿ファイル) をダウンロードし,˜/su-shiki ディレクトリに保存せよ.
• ファイル名「sm140000 05.tex」の「sm140000」の部分は各自の学籍番号に変更すること.また,Emacs でファイ
ルの中身を編集し,上段の氏名欄に自分の学籍番号と氏名を書くこと.
• Maxima を用いて問題を解け.解答は,原稿ファイルを編集して LATEX で記入せよ.
• PDF ファイルを作成し,印刷したものを提出すること.締切は 5 月 14 日.
• 疑問点等があれば,書いて下さい.
今立ち上げている端末は maxima 用に使っているので,PDF ファイル作成用に,端末をもう一つ立ち上げておくと便
利です.PDF ファイル作成用のコマンドは以下の通り.
LATEX タイプセットなど [kawakubo@pe5-(~/su-shiki)-113] emacs⊔ &
[kawakubo@pe5-(~/su-shiki)-114] platex⊔ sm140000_05.tex
[kawakubo@pe5-(~/su-shiki)-116] dvipdfmx⊔ sm140000_05.dvi
← emacs をバックグラウンドで起動
← sm140000 05.tex を platex でタイプセット
← sm140000 05.dvi から sm140000 05.pdf を作成