フリーソフトの小道   

愛用のフリー・ソフト

第18回 Maxima の実力を探る     フリーソフトの数式処理システム (第1部)

展開、因数分解、微分、積分なんでも計算してくれる!

 電卓は計算をするときに良く使うのですが、数学の宿題を教えてくれることはほとんどありません(数値の計算するだけなら使えるのですが)。 例えば数式の展開、因数分解などをといてくれる電卓があればほしくなるのは当然でしょう。 「答えあわせだけでも出来れば助かるのですが...」 と思っている人は多いはずです。 数式を与えるだけでグラフまで書いてくれるなら最高でしょう。そのようなことをしてくれるフリーソフトを紹介しましょう。 

数式処理システムは古くから使われていました

 コンピュータが発明された当初は、数値計算をすばやくしてくれるだけでもありがたい機械でした。 人間の欲望はどこまでも深く、どこまでも広いものです。数値計算をしてくれるのなら、数式計算もして欲しい。 よみがなを入れれば、漢字に直して欲しい。紙に書いた文字を読み取って欲しい。 外国語を翻訳して欲しい。などどこまでも要求はとどまりません。
すべての人間がだれでも出来るのだから、コンピュータにも出来るはずですから...。  このように生活のなかでのいろいろな処理にコンピュータが広く使われてきました。 前述の要求にも次々とコンピュータは答えてくれた結果、ほとんどの事柄は要求どおりに実現できて来ました。

 数式処理については古くから行われており、 LISP(1960年代からある古典的なプログラミング言語)による REDUCE という数式処理システムがありました。 現在のパソコンは当時の大型計算機に匹敵する能力を持つので 「数式処理」 をするくらいは朝飯前です。

Maxima情報を日本語で読めるサイトもあります

 現在のパソコンのWindowsの上で動き、しかもフリーソフトである数式処理システム 「Maxima」 を紹介してみましょう。 このフリーソフトの情報は、Googleなどの検索サイトでキーワードを 「Maxima」と入れて検索すれば、いろいろなサイトが見つかりますが、 愛知教育大学の Maxima解説サイト では日本語の情報が得られます。 このMaximaがどのようなシステムなのかを詳しく説明したサイトとして有名です。

ステップ1  数式処理システム 「Maxima」 を入手する

 このソフトウエアはフリーソフトなので、インターネットを通して無料で入手できます。 上記の日本語解説サイトからでも、入手サイトへリンクで飛べます。 直接行くには このリンク で飛べます。。 このソフトの配布元からダウンロードするのですが、このサイトの画面は全て英語です。 我慢してでも、一応読んでみてください。 読めば、ダウンロードするページが簡単に見つかります。画面の指示にしたがって、ダウンロードしてください。 ブロードバンド(ADSL、光)なら1分以内に終了です。、

ステップ2  数式処理システム 「Maxima」 をインストールする

 今回、筆者(志)が入手したものは、バージョンが 5.9.1 です。歴史を感じるバージョン番号ですね。 先ほど配布元からダウンロードしたMaximaのパッケージはWindowsの実行ファイル形式になっています。 ファイルを自分のパソコンにインストール手順はダウンロードするよりずっと簡単です。 ダウンロードしてきたファイルをダブルクリックすればよいだけです。 インストール画面も英語になりますが、文章は簡単です。 「使用許諾」 の可否の画面にを読んで納得できれば accept(承認)ボタンをクリックしてください。 画面に表示される指示に従って行けばインストールは短時間で終わってしまいます。 デフォルト(既定値)どおりであれば、デスクトップ画面にMaximaの起動アイコンが作られます。 これをダブルクリックすれば、数式処理システム 「Maxima」 が起動されます。

ステップ3  数式処理システム 「Maxima」 を使ってみる

1. 「数式の展開ができる?」

 数式を表現するには、キーボードから決められた約束にしたがって、数式を入力します。 入力は全て(全て半角英数文字)です。 変数はアルファベットで始まる単語(長くても良い)です。たとえば x 、y 、cat 、 dog などです。 演算子は 足し算記号 +、引き算記号 − はそのままですが、掛け算記号 × は *、 割り算記号 ÷ は / です。 かっこは、大・中・小ともに ( と ) だけを使います。 累乗記号は ^ または ** を使います。 原則として、変数、演算子などは空白(スペース)で区切ることになります。 特殊関数については、平方根は sqrt(16) は 16 の平方根のことです。三角関数は sin(x)、cos(x)、tan(x) などです。

 一例を挙げると 「 x+1 の10乗 」 は次のように表されます。

(x+1)^10   または、  (x+1)**10 

この数式を展開するには、数式の展開を行う命令語 expand コマンドを使えばよいだけです。 コンピュータがあなたに代わって数式の展開をしてくれます (注)行頭の%i10 は入力10番目というマークです。

(%i10)    expand((x+1)^10);  

コマンド文の最後はセミコロン ; が必要です。セミコロンがなければ、まだ命令が続いていると解釈してなにもしてくれません。 リターンキーを押せば、数式を展開してくれます。 結果は次のようになりました。 (注)行頭の%o10 は出力10番目というマークです。

           10       9       8        7        6        5        4        3       2
(%o10) x + 10 x + 45 x + 120 x + 210 x + 252 x + 210 x + 120 x + 45 x + 10 x + 1

 100乗でもコンピュータはへこたれません! 一途にコンピュータは命令どおりの計算をしてくれます。  でも、さすがに1000乗せよと命じたときは、900乗のあたりでエラーを表示して止まってしまいましたが(笑)

2. 「数式の因数分解ができる?」

 因数分解は出来るのでしょうか。 因数分解させる命令語は FACTOR コマンドです。 では先ほどの10乗の展開を行った結果を因数分解させて元の数式に戻して見ましょう。

(%i11)    factor( x^10 + 10*x^9 + 45*x^8 + 120*x^7 + 210*x^6 + 252*x^5 + 210*x^4 + 120*x^3 + 45*x^2 + 10*x + 1);




10
(%o11) (x + 1)

 改行キーを押すと同時に、見事に因数分解が出来て、元の数式に戻りました。 複雑なものでもあっという間に計算してくれます。さすが、コンピュータです。では、こんなのはどうでしょうか?

(%i12)    factor( 20*y^3 - 32*x*y^2 - x^2*y + 6*x^3 );




(%o12) (2 y - 3 x) (2 y - x) (5 y + 2 x)

 複雑なものでもあっという間の早業でした。見事なものですね。 (注)expand コマンドで展開して、元の式に戻ることを確かめました!(信用していない?)

3. 「分数式の計算が出来る?」

 分数計算ができる? こんなことを聞く人がいるかもしれませんね。小学校級の分数計算ができることをを紹介してもつまらないですから、 分数式の計算をさせて見ましょう。因数分解までしてくれていますね。

(%i13)  factor( (2/x  - x/(x+3))^2 + 2*x^2);




2 4 3
(2 x + 4 x + 3) (x + 4 x - 8 x + 12)
(%o13) ---------------------------------------
2 2
x (x + 3)

 今回はページの都合で、これくらいで終わりましょう。第一部は低レベルの数式処理でしたが、 第二部からはハイレベルな数式処理を行ってみましょう。 連立方程式を解く、行列計算(和、差、積など)、三角関数計算、極限値を求める、微分する、積分するなどの、 より複雑な数式処理も紹介しましょう。 また、グラフを描かせることなどもできるのです。まだまだ奥が深い数式処理システム 「Maxima」 です。 それらについては次回以降に紹介しましょう。 なお、数式処理に興味ある人は、上記のサイトからダウンロードして、自分のパソコンにインストールして使ってみてください。 マニュアル(英文)も全てダウンロードしたパッケージに圧縮された状態で含まれています。日本語の解説サイトもありますから安心ですね。



2005/02/04  管理人(志)


感想・意見は、掲示板、または メールでどうぞ! --- 管理人(志)