05. 数式処理ソフトMaxima


 
(1) はじめに
 数式をコンピュータを用い記号的に代数的に処理するソフトウェアの総称して数式処理システムComputer algebra systemCAS)といいます。一般的なコンピュータの計算が数値として処理するのに対して、数式処理システムでは、代数的処理が可能な範囲内で、代数的に処理します。最近のシステムでは、数値的な演算が可能なものも多く、統合計算システムと呼ぶに相応しいものも存在します。
Maxima(マキシマ)は、プログラム言語Lispで記述されたフリーの数式処理システムの一つです。現在も活発に開発が続けられており、商用のMathematica と比べても劣らない機能や性能を持っています。このMaxima はマサチューセッツ工科大学のプロジェクトによって開発され、米国エネルギー省によって配布されていた Macsyma の1982年のバージョンに基づいています。 

(2) Maxima の機能
Maxima は文法的にはALGOL に、意味的にはLisp にそれぞれ類似のプログラム言語を備えており、プログラミングや計算機代数の教育用としても使えるようになっています。他の数式処理システムと同様にMaxima も高度な記号処理機能を備えており、有理数や倍長整数や多倍長浮動小数点の演算を可能にしています。また、浮動小数点数や配列の処理をより効率の良いFORTRAN などで処理するためのプログラム書き出しもサポートされています。
 
(3) Maxima の表記法
 Maxima の表記法について、その概要を示します。
 コメント  コメント
 実行  結果を表示する場合は式の最後に ; を入れて改行する。  式;
 結果を非表示にする場合は$を入れて改行する。  式$
 代入  変数:代入式;  関数(変数):=代入式;  ev(式,変数=数式);
 n次解 (リストで表示)  [解[1],解[2],...]
 演算(加減乗除・関数)  + 加算  - 減算  * 乗算  / 除算  ^ べき乗  () 括弧内の処理を優先させる。
 sin()  cos()  tan()  …他にも様々な関数があります。
 
抽出

 分数
  ratsimp(有理式); 通分する。num(分子/分母); 分子を取り出す。
  denom(分子/分母); 分母を取り出す。
 右辺、左辺
     rhs(左辺=右辺); 右辺を取り出す。  lhs(左辺=右辺); 左辺を取り出す。

 多項式  expand(多項式); 展開  factor(多項式); 因数分解 
 taylor(関数,変数,展開中心,近似次数); テーラー展開
 解法  solve([方程式リスト],[変数リスト]); 方程式を解く。
 limit(関数,変数,近づける値); 極限値
 diff(関数,変数,階数); 微分
 integrate(関数,変数,開始値,終了値); 積分
 sum(関数,添え字変数,初期値,終値); 総和を求める。 ∑Ai = A0+A1+...+An
 product(関数,添え字変数,初期値,終値); 総積を求める。 ΠAi = A0*A1*...*An
 微分方程式  atvalue(関数,独立変数=値,関数値);  初期値を代入。
 desolve(微分方程式,求める関数); 微分方程式を解く。
 グラフ表示(2D,3D)  plot2d([関数,...],[変数,始値,終値]); 2次元グラフ
 plot3d([関数,...],[変数1,始値1,終値1],[変数2,始値2,終値2]); 3次元グラフ

 プログラム

 条件式  =  等しい  #  等しくない  <, >, >=, <=  実数として、大小関係を問う。
 条件式1 and 条件式2 and ...  条件式1 or 条件式2 or ...
 分岐   if 条件式then 真の場合の処理 else 偽の場合の処理;
 ループ  for カウンタ名:初期値 step 増分 thru 終了値 do(反復実行手続き);
         for カウンタ名:初期値step 増分 while 条件式 do(反復実行手続き);
 関数化(リスト化)  block([局所変数のリスト], 一連の手続き,return(計算結果));

 ファイル入出力  ファイルデータをエディタを使って編集することも可能です。
  書き出し save("ファイル名",all);  読み込み loadfile("ファイル名");
  実行結果表示 playback(all);

 【注1】 記号% は、それぞれ、つぎのことを表します。
             %: 直前の出力を引用  %in: 計算セクションのn番目の入力 %on: 計算セクションのn番目の出力  %pi: 円周率 π
 【注2】 Maxima で用いられるれコマンドの詳細ついては、次節の (4)Maximaのコマンド をご覧ください。
 
(4) Maxima のコマンド
 Maxima で用いられる各種のコマンドの概略をコンピューター代数の分野ごとに説明します。
 
 *1. 基本コマンド   
  定数・精度・四則演算・数学関数・複素数関連の関数などについて、基本的なコマンド概略を説明します。
   
 *2. 微分と積分  
  微分と積分は数学およびコンピュータ代数の中心課題です。
 
 *3. 行列  
  行列は線形代数で用いられる概念です。また、ベクトルは行列の特別な場合です。なお、連立方程式や固有値は、さまざまな分野で利用されます。
 
 *4. 多項式処理  
  多項式処理の操作は、コンピューター代数のもっとも基本的な分野です。多項式処理としては、式の展開・因数分解や、有理数の部分分数展開などがあります。
 
 *5. グラフィックス  
  Maxima は、2D と 3D のグラフィックスの機能を備えています。このグラフィックスによって、関数のグラフやデータのプロットができて、科学技術計算の視覚化が可能です。  
 
  高度な代数計算を行うために、ユーザーは自前で関数を定義することができます。また、構造化プログラミングの機能もあって、Maxima をプログラミング言語としても利用できます。
 
 *7. データ構造  
  Maxima には、さまざまなデータ構造をサポートしています。以下では、リスト集合配列について紹介します。 
 
(5) おわりに
 このサイトで使用している数式処理ソフト Maxima は、下記の参考図書①付録CD-ROMから無償で入手してインストールしたものです。みなさんも、この機会に試してみてはいかがでしょうか。そして、プログラミングの醍醐味を味わってみてください。
 
【参考図書】
 ① 「はじめての数式処理ソフト_Maximaで楽しむ数式計算と物理グラフィック」(BBLUE BACKS) 竹内 薫(著) 講談社
      【注】 この図書には、maxima-5.12.0 が収録されているCD-ROMが付いています。
 ② 「Maximaで学ぶコンピュータ代数」 赤間 世紀(著) 工学社
      【注】 この図書の「付録CD-ROM」には、本書のサンプル・プログラムが収録されています。
  ③ 「はじめてのMaxima」 横田 博史(著) 工学社
 

 
プログラミング・数学教育・旅行アルバム・国際交流の記録・クラウドコンピューティング.など、多彩な内容がそろっています。
  あなたがご覧になりたい記事を見つけてください。
  

【お願い】 私のホームページについて あなたのご感想をお寄せください。⇒ 【ご感想記入のページ】 (ここをクリックしてください。)