2008年6月12日木曜日

Mathematica_その1

TA等でわずかばかりの収入があるのを目ざとく大阪市はチェックしとるんですな。市民税を払えという通知が家に来ていてがっくりです。学生をあまりいぢめないでください。払ったところでお偉いがたのタクシー代に(ry

ここんとこMathematicaにぞっこんです。いじりだすと、つかえねーなんて一時期いっててごめん、って感じのハイスペック実感です。使いにくい原因はWeb上の、Excite先生級の直訳らしき理解しづらい説明文+独特の文法。(+使ってるよそさんの借り物サーバーではXWindow使えないから。)なんかそのうち研究室の人間に教えなあかんことになりそうなので、理解したことをぼちぼち書き留めておこうかと。なんかなんでも最初にやり始めるのは損な役回りだと思いつつ。

Mathematicaは関数型プログラミング言語の体裁をとっているらしく(?)、いままで手続き型に慣れきってきた身には違和感ありまくり。全てが式として処理されますってなんじゃそりゃーって感じです。変数宣言ないし、サブルーチンのような単位も「式」としてくくってしまう、なんか若干気持ち悪い。ぜんぶFortranで言うところのfunctionで記述するのねって思って自分を納得させる。

繰り返し
Forが使える。
基本的な文法は
For[i=0,i<10,i++,操作] のように、開始、終了条件、インクリメント、本文。 操作は複数でもよく、その場合、;で手続きを区切る。 Forにかぎらず、基本的に手続きの区切りは;で示す。なので、そのほかのプログラミング言語の体裁に似た形式で記述することができる。

条件分岐

If または Which という関数がある。
IfはCやFortranと同じ様な感じだが、else if に相当する操作がない。
なので分岐が複数の場合はWhichを用いると良い。

If[条件式,Trueの場合の手続き,Falseの場合の手続き]
Which[条件式1、手続き1、条件式2、手続き2]

リスト
Mathematicaでは配列等は全部リストという構造で総称されるぽい。挙動を見た感じ、C++のvectorに似ているかも。リストという名前ではあるが、添え字がついていて、添え字で要素を指定して操作できる。
リストの宣言はとくになんかする必要もなく
{a,b,c}
みたいに書けば、a,b,cの要素をもつリストが生成される。ふつー配列には何か名前をつけて使用するが、そういうときには
l={a,b,c}
のように、代入文で書いてやる。
さて作ったリストに値を付け加えるには
AppendTo[l,x]
のようにする。(似たようなのにAppendがあるが、これは付け加えた先を再構成しないっぽく、For文の中で使うとうまく行かなかったりしたので、AppendToのほうがいいと思う。)
こうするとlは
{a,b,c,x}
のようになっているはず。

ここに挙げた機能を投入してみた例
out=OpenWrite["test.txt"]
l={1,2,3}
AppendTo[l,4]
For[i=1,i<5,i++,
If[Mod[i,2]==0,
AppendTo[l,i]]
]
Write[out,l]

実行すると、test.txtに{1,2,3,4,2,4}ていう出力ができるはず

リスト関係はいろいろややこしい機能てんこ盛りなのでぼちぼちまた書き溜めていこう。

0 コメント: