Top > Mathematica > プログラム


制御構造

Do 文

一般のプログラム言語でも存在する Do ループ文である。構文は以下の通りです。

Do[式, {繰り返し範囲のリスト}, ...] 

例えば、式中に変数を2つ使用すれば、その後に続くリストは2つ必要になります。

loop_do.jpg

While 文

While[条件, 処理1; 処理2; ...] 

条件が成立している間、後ろに続く処理を実行します。 条件の判定は後で行われるため、下記の例のように "5未満" の条件でも、 5 の場合が実行されます。

loop_while.jpg

For 文

For[初期値, 条件, STEP, 処理1; ...]
loop_for.jpg

Table 文

Table[式, {範囲のリスト}, ...]
loop_table.jpg

事後に結果が利用できる点で、リストには利点があります。

応用

上記の制御構造(繰り返し文)を使用して、 1から100間での総和を計算する例を紹介します。

loop_func_use.jpg

上記 In[18], In[19] からも分かるように、総和が格納されている変数 sum には、 初期化処理が 必要なことが分かります。Mathematica は、一度宣言した関数や、 格納されている変数の値を 記憶しており、カーネルを終了しない限り、 または故意にクリアしない限り消えることはありません。次の評価に使用するためです。

関数型プログラム

自己再起型

再起アルゴリズムを利用して、先に紹介した1から100までの総和を計算するプログラムを関数型で記述すると以下のようになる。

func_souwa.jpg

Mathematica の再起型プログラムでは、手続きを記述する必要がないことが分かる。 関係を記述したのみで、再起プログラムを書くことができる。

最大値

再起プログラムの場合、引数の最大値、つまり再帰的にコールできるネストの深さに 限界がある。以下がそれを証明したサンプルである。

saiki_max.jpg

新しい Version の Mathematica では解消されているかもしれないが、 v5.0 では、256 未満が限界のようです。


添付ファイル: fileloop_while.jpg 1355件 [詳細] filesaiki_max.jpg 1189件 [詳細] fileloop_table.jpg 1222件 [詳細] fileloop_func_use.jpg 1221件 [詳細] fileloop_do.jpg 961件 [詳細] fileloop_for.jpg 1239件 [詳細] filefunc_souwa.jpg 955件 [詳細]

リロード   凍結解除 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Mon, 03 Jun 2019 14:37:49 UTC (2087d)