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 を作成
© Copyright 2024 ExpyDoc