トップへ
田村研究室

コンピュータリテラシー2

Computer Literacy 2

2011
12/21

第13回

目標

  • 数式処理ソフトの使い方

数式処理システムとは

Excelなどでは,これまで学んできたように,数式を入力してその式に従った計算処理をさせることができ,小数で表現された計算結果の数値を表示させることができる.式を記号のまま代数的に処理するソフトウェアが数式処理システムである.

具体例でいえば,分数を分数のまま約分したり,方程式で左辺と右辺の項を移項させたりして,数式を数式のまま整理したり,解を求める処理などを行うことができる.

現在,代表的な数式処理システムとしてはMathmaticaやMapleなどの商用ソフトウェアがある.また,初期の数式処理システムとして開発されていたMacsymaの後継であるMaximaは,現在でも開発が続けられており機能的にはMathmaticaやMapleにもひけをとらない.このMaximaはフリーソフトとして公開されている.

Maximaは,数式などを入力して定義し,それに対する操作コマンドを使って変形させたり,解を求めたりする.数式や操作の記述には,プログラム的な内容も記述することができる.グラフの描画なども可能である.Maximaは,キーボードから数式やコマンドを入力して使用するが,マウスによる操作補助を行うためのGUI環境としてwxMaximaがある.

これら数式処理ソフトではあるが,このような式の変形などの代数的に処理できない場合には,数値計算処理まで行い,数値計算処理と数式処理を統合したようなソフトウェアも存在する.

授業で使用するソフトウェア

数値計算ソフトと数式処理ソフトともよく似たソフトではあり,ソフトによっては互いの機能を持ち合って統合ソフトのように見えるものもある.それぞれの特徴は,数式があった場合に,計算をして結果(数値)を得るのか(数値計算ソフト),数式を整理して解の方程式を得るのか(数式処理ソフト)の違いはである.例えばロボットの動作をさせるために力学的な微分方程式を立てた場合,それを解いて解の方程式を導く場合には数式処理ソフト,その方程式の数値的な振る舞いをグラフで確認したければ数値計算ソフトを使用することが適している.

Ubuntu Linuxでは,「アプリケーション」→「Ubuntuソフトウェアセンター」を開いて,簡単にScilabとwxMaximaが導入可能である.それぞれのソフト名を検索して「インストール」ボタンをクリックするだけでよい.

Windowsでは,sourceforge.netのMaxima-Windowsから最新版をダウンロードすることができる.インストール方法などは,中部大学の「コンピュータ入門」のwxMaximaのインストールなどに紹介されている.

簡単なwxMaximaの使い方

wxMaximaの簡単な使い方は次のようなものである.

起動方法

Ubuntu Linuxの場合には,「アプリケーション」→「科学」→「wxMaxima」

通常の数字だけの計算式の計算
例えば1/3+1/2を行うためには,次のように入力する.

1/3+1/2;

そして「セル」→「セルの評価」によって実行する.または,数式入力する最後に,ShiftキーとEnterキーを同時に押して入力すると即時にセル評価される.

(%i1)1/3+1/2;
($o1)5/6

ここで(%i1)は入力行,(%o1)は出力行を表す.数式処理ソフトでは,数値計算ソフトと異なり,ちゃんと分数での計算結果が分数で表示されている.結果を小数で表示したい場合には,

(%i2)float(1/3+1/2),numer;
(%o2)0.833333333333

Maximaでは,計算するための関数やコマンドが用意されており,キーボードから直接入力してもよいし,wxMaximaのメニューから選択してもよい.先ほどの小数での計算の場合には

1/3+1/2

先ほどと違い「;」がない点に注意して入力し,それからメニューの「数式処理」→「小数点で出力」を選択すると自動的に上記のfloatコマンドが入力され実行される.

定数や関数の扱い
自然対数の低e %e
π %pi
複素数i %i

その他,三角関数や対数も使用できる.sin,cos,tanなど.ただし,角度はラジアン表記を前提とする.また対数logは自然対数であり,底はeである.例えばlog10を計算したいときには,底の変換が必要となる.

log10(x):=log(x)/log(10)
数式の扱い

Maximaでは,xやyといった変数を使った一般の方程式を扱う.Maximaに入力する方程式は,Excelなどの表計算ソフトで入力した数式に似ており,例えば乗算の演算子*を省略できない点に注意すること.2×yの意味で2yとは入力できず,必ず2*yと入力する必要がある.その他,分数の入力時など,括弧を適宜使用して誤解のないようにすること.1/x*yとすると,1/xとyの掛け算となる.1/(x*y)あるいは1/x/yとしないとxとyを分母にできない.

式の変形

簡単なところでは,中学の時に習ったはずの括弧のある式,例えば(x+y)2などを展開するには,「式の変形」→「展開」を使用する.

(%i3) expand( (x+y)^2 );

逆に,因数分解するためには,「式の変形」→「因数分解」

(%i4) factor ( 式 );

式の変形には,その他に対数や三角関数の展開や結合,簡単化などもあるので適宜利用する.

方程式の解き方

方程式も解くことができる.メニューから選択する場合には「方程式」→「方程式を解く」で方程式と何の変数について解くのかを指定する.

(%i1)solve([4*x^2+12*x+8=0],[x]);
($o1)[x=-2,x=-1]

ちなみに,複素数を示すiは「%i」として表記される.

連立方程式も解ける.

(%i1)solve([x+2*y = 1, 2*x+y = 3],[x,y]);
($o1)[x=-2,x=-1]
微分,積分

微分は,「微積分」→「微分」で行うことができる.何の式を,何の変数について,何階微分するのか,を指定する.

(%i1) diff(x^k,x,1)

不定積分と定積分は,「微積分」→「積分」で行う.

(%i1) integrate(x^k,x)
微分方程式

2階までの常微分方程式も解くことができる.一般の方程式と操作は似ているが,「方程式」→「微分方程式を解く」

入力する際には,微分項の入力には,微分関数diffに'をつけてそのまま利用する点に注意する.

(%i1) ode2('diff(y,x,2)+'diff(y,x)+y=0, y, x)

出力された一般解に対して,初期条件を与えるには続いて「方程式」→「特殊解を求める(2階微分方程式)」として2階微分方程式の場合にはic2を利用する.

(%i2) ic2(%,x=0, y=0, 'diff(y,x)=1)

連立微分方程式を解く場合には,「方程式」→「連立微分方程式を解く」

ラプラス変換・逆変換

ラプラス変換も「方程式」→「ラプラス変換」逆変換は「ラプラス逆変換」で可能である.

その他

総和や階乗,また行列式などその他の機能をある.Maximaは少なくとも高校数学程度で学んだ程度のことはすべてできるし,使いこなせれば工学系大学での研究活動に必要な数式処理をほとんどまかなうことも可能である.

ワープロ文書への数式の貼り付け

wxMaximaでは分数や指数などきれいな整った数式を表示できる.これをそのまま文書にコピーするには,コピーしたい数式をマウスで選択して右クリック「画像としてコピー」を選択する.そのごワープロなどで貼り付ければよい.ただし,UbuntuのOpenOfficeにはなぜか貼り付けられないが,いったんGIMPに新規画像として貼り付けた後,あらためてGIMP画像をコピー&ペーストすればOfficeに貼り付けられる.

数式処理システムの実例

練習問題

Maximaを使って次を解いてみよ.

練習問題