« デジタル一眼レフカメラ | Main | スランプ »

November 12, 2006

数式処理

E073最近、Debian Linux で数式処理プログラム Maxima を使って居る。これが、なかなか勝手が良い。

「数式処理プログラム」って、どういうことをするプログラムなのか、知らない人は意外と多いんじゃないだろうか?

普通、「コンピュータは計算が得意」とか思って居る人が多いし、Execel 等の表計算ソフトやフライトシミュレーションを、その代表例と思い描く人が多いだろう。
それは決して間違いじゃないのだけれど、これは計算は計算でも「数値演算」の話。有限要素解析や流体シミュレーションなども「数値演算」の類いだ。

「数式処理プログラム」は数値を扱うのではなく、抽象的な数式を扱うプログラムだ。

「抽象的な数式」と聞くと、それだけで嫌になる人も多いかもしれないが、簡単に言えば、中学校の数学の時にならった x とか y とかを使った方程式だ。

例えば「X = 3 + 4」から「X = 7」を計算するのが数値演算。
これに対し、「X + Y = 4」から「X = 4 - Y」を導くのが、数式処理だ。

こんな簡単な式だけじゃなく、「X + Y + Z = 5」と「X - Y - 2 Z = 7」が「同時に成立」から、「X = 6 + Z / 2」かつ「Y= - 1 - 3/2 Z」を導くこともできる。
当然、「X^2 - Y^2 = (X + Y)(X - Y)」もできるし、その他、三角関数やら微分や積分など、思いつく限りのことはできてしまう。間違っても、中学生や高校生の宿題に使わせてはいけないものだ。(練習にならないからね)

コンピュータで数式が扱えるプログラムは、Mathematica を始め、昔から数多くあった。だが、Mathematica は高価で職場で使うのならともかく、個人で簡単に買えるものではない。
フリーの数式処理プログラムも多くある。今まで、MuPad のフリー版を使ったり、yacas を使ったりして居た。特に yacas は、Zaurus に移植されて居るので携帯できて便利なのだが、使い勝手が今一良くなかった。

最近になって、Maxima を知り、インストールしてみた。数式の表示のために TeXmacs を一緒にインストールすると、これがなかなか使いやすい。Maxima も TeXmacs も Debian Linux の標準パッケージに用意されており、apt-get でインストールできたから、もっと早く使い始めれば良かった。

これで、複雑な数式が自由に操れるぞ!
と思ったのだが、一般的には「数式を扱うのは、苦痛であっても楽しい事ではない」らしい。
先日も、ロフトプラスワンで話した時に「数式を扱って居て、面白いですか?」と聞かれてしまった。

もちろん、数式を扱うのは面白い。
とは言え、正確に言えば、面白いのは、数式を扱うことそのものではなくて、数式を通じて見える新たな世界の方なのだが・・

|

« デジタル一眼レフカメラ | Main | スランプ »

Comments

ロフトのイベントお疲れ様でした。
楽しい時間をありがとうございました。

数式の楽しさ、感覚はわかるのですが、数式を扱うのが楽しいかといわれるとNoです。
それは多分、遠隔地に移動するのにマニュアル車を整備し、地図を見ながらルートを検討してから出発するのと、AT車、いっそ列車&タクシーなどで到着できてしまえばよいという感覚なのではないかと思います。
道具を手入れする職人か、道具のメンテは職人に任せるか、といったところでしょうか。

本音は、数式の先に見える世界は覗いてみたいですが、面倒な部分はわかる人にお任せで。(^^;;

Posted by: みーや★ | November 13, 2006 at 05:01 PM

初めまして、ロフトのイベント、大変楽しゅうございました。
毎年SF大会に出ているのに、ディーラーズの店番で野田司令の話は滅多に聞けないので嬉しかったっです。
あたしは、解析学の講義を何度も落としたりして、決して数式をいじるのが得意というわけでは無いんですけれど、「数式を扱って居て、面白いですか?」を聞いた時に
「貴様は数式に込められたロマンが解らないのかー!」と思わず心の中で叫んでしまいました。
数式って、短歌とか俳句みたいに、短い(いや、長いのもあるけど)中に色々な世界観がつまっていて、面白いと思うんですけどねぇ。
次にお話聞ける機会を楽しみにしています。

Posted by: HAL.T | November 13, 2006 at 05:35 PM

みーや★さん、HAL.T さん、よろしくお願いします。
ロフトプラスワンに来ていただいて、有難うございます。

まだ、Maxima になれる段階で、比較的簡単な問題を例題に解いて居るところです。今までなら、途中で近似したところを厳密解が求まるところが凄いです。そして簡単な問題でも、意外な程、厳密解が複雑になるのが驚きです。

まだまだ、本当に難しい問題を解くところまでいってませんが、Maxima で新しい世界を見い出せることができたらよいな、と思っています。

Posted by: 野田篤司 | November 15, 2006 at 07:42 AM

 なるほど、Maximaというソフトウェアがあるのですね。
 私もちょうど数式処理ソフトウェアが必要になってきた(ノートに書いたメモじゃ追いつかなくなってきた)ところでしたので、早速使ってみたいと思います。私もDebianユーザですので、apt-getで簡単にインストールできますし。

|数式を通じて見える新たな世界の方なのだが・・
 学生時代にFEMで流体を扱ったときに目から鱗がおちるように感じたのがこのことでした。
 それまで微分方程式はなんのことか解らない別世界のものでしたが、FEMを使うことで数式とリアルな世界が結びついたことが当時の私には衝撃的でしたね。
 まあ解析的手法を扱われている方からみると、数値シミュレーションは”邪道”とのことですけど(^^; 私にとってはどちらもレンチと同じ”道具”なので、時と場合で優れている方を使っています。
 ということでMaximaもどのくらい使える道具なのか見極めてみたいと思います。

Posted by: KZ Makino | November 17, 2006 at 06:30 PM

KZ Makino さん、よろしく。

別に「数値シミュレーション」と「解析手法」の優劣とか邪道とか言う事は無いと思います。
もちろん、「解析手法」で解ける問題は「解析手法」の方が良いに決まっていますが、必ずしも全ての問題が解ける訳でもありません。
解析手法で解けない問題は「数値シミュレーション」で解くことになります。変に近似して解析手法で解くなら、「数値シミュレーション」の方が、ずっと良くなる事もある訳です。

私の場合も、大概が解析手法で解けない問題を「数値シミュレーション」で解析するのですが、「数値シミュレーション」を作るときには数式の処理が必要になります。そんな時に Maxima のような数式処理プログラムが有効になっています。

なお、Debian に Maxima をインストールするときは、
# apt-get install maxima maxima-share texmacs
とやると良いようです。

Posted by: 野田篤司 | November 18, 2006 at 12:02 AM

野田さん、こちらこそよろしくです。

|# apt-get install maxima maxima-share texmacs
 私はいまだにdselectを使ってることが多いので、maximaを選んだら残り二つをリコメンドされて無事インストールできました。とはいえまだ入れただけですけど。

 数値シミュレーション邪道論はですね、某学会発表時の質疑でその学会のお偉いさんが言い放った言葉で、学生時代によく冗談で使ってましたが私の本意ではないです(^^)。
 私も解析的手法と数値シミュレーションを使い分けています。使い分けているいうよりは組み合わせているという感じですね。解析的にとけるところまで解いて、私の腕じゃ近似するとヤバそうなところから先を数値シミュレーションしたりとか。なのでFDMではなく”解が補完関数の誤差範囲内であることが保証される”ガラーキン法ベースのFEMを使ってます。
 そういう意味でも教えていただいたMaximaはとても役に立ちそうです。とっくの昔にベッセル関数なんて忘れている私にはちょうどいい助け舟だ!とぬか喜びしつつ色々Maximaで遊んでみることにしようと思います。面白い結果がでたらご報告しますね。

Posted by: KZ Makino | November 18, 2006 at 11:30 PM

yacasでの素因数分解はリストで例えば
60=[82,2),(3,1),(5,1)]と表示される。これから
逆数が60進法で有限な数を簡単に判定できる。
有名なPlimpton322という楔型文書でピタゴラス数を
用いた逆正弦関数表で原理は
(p^2+q^2)^2-(p^2-q^2)^2=(2pq)^2
により45度までほぼ5度おきに生成してるが一箇所非常に大きい整数を使っている。これが必然的か
誤って小さい整数をみおとしてないか計算してみた
ところ、正しかった。約5000年昔のことだでえ

Posted by: okubok1934 | March 28, 2007 at 02:09 PM

要するに因数分解の式から最大因数が7以下で
ある条件を書ければ逆数の60進展開が有限に
なる整数がどれだけあるかわかる。たとえば
yacasのFactor関数は因数とべきのリストを返し
octaveの場合は重複をいとわず小さい順に因数をべきの数だけならべていく。どちらも
maxfactorという関数を自作して64以下の全部のp、qの組み合わせで三角比計算、次に125以下のすべてで行う。yacasではリストから重複を除く操作、octaceでは膨大なデータを
sort data | uniq > newdata
と外側でパイプを使う。

Posted by: 大久保謙二郎 | July 14, 2007 at 10:58 AM

フォローしてませんで、すいませんでした。
yacasなど使っていませんので、よう判りませんが、何やら難しい話が進んでいるようで・・・

Posted by: 野田篤司 | July 15, 2007 at 03:49 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/94422/12661039

Listed below are links to weblogs that reference 数式処理:

« デジタル一眼レフカメラ | Main | スランプ »