Comments
Description
Transcript
講義のPDFファイル
Mathematica 2 㻫㼌㼕㼒㼖㼋㼌㻃㻷㼒㼜㼒㼌㼝㼘㼐 㼌 㻸㼑㼌㼙㻑㻃㼒㼉㻃㻤㼌㼝㼘 㼗㼒㼜㼒㻣 㼘㻐㼄㼌㼝㼘㻑 㼄㼆㻑㼍㼓 1 Literacy 2 Mathematica 今日の内容 » 名前、関数の定義と使い方 » リスト » 複雑な関数 » 演習:ランダムウォーク 2 Literacy 2 Mathematica Mathematicaの基本 » なるべく組み込み関数を使う。 自前のアルゴリズムより計算効率が良い バグチェック等の必要なしで、作業効率も 良い » 組み込み関数がなければ、自分で関数 を定義する。 3 Literacy 2 Mathematica Function Browser » Help/Built-in Functionsで、 Mathematicaに組み込まれている関数 の使い方を検索することができる。 4 Literacy 2 Mathematica Function Browserの画面 5 Literacy 2 Mathematica 値を表す名前 » 値を書く代わりに、その値に名前を付ける。 name = expr » 左辺のnameはシンボルであり、 文字 と 文字に続 く数字 で作る。 name » 一度登録した名前は、定義式の右辺が評価された値が 返ってくる Clear:名前の定義のクリア » 注意:上の定義はMathematicaのカーネルが動いているときに、有 効。カーネルを終了させたときには、もう一度定義の部分を再評価さ せる必要がある。 6 Literacy 2 Mathematica 名前の定義例 7 Literacy 2 Mathematica リストの定義と生成 Mathematicaでデータを扱う時の基本 » List[arg1, arg2,・・・]:リスト関数 任意の数、シンボル、関数、文字列、別のリスト を要素として取れる。 » Range[imin,imax,di]:レンジ関数 iminを最小値、diずつ増加し、imaxを上限とする 数列を作る » Table[式, {i, imin, imax, di}]:テーブル関数 式を繰り返し評価し、リストを作る。 8 Literacy 2 Mathematica リストの定義例 9 Literacy 2 Mathematica リストの操作 » Position:特定の要素の位置の探索 » Part:リスト内の決まった位置の要素 の取り出し リスト[[位置]]でも同じ出力 » Take、Drop:取り出し方を指定した要 素の取り出しと削除 » Sort:数値は増加の順、文字はアルファ ベット順に並べ替え 10 Literacy 2 Mathematica リスト操作の例 11 Literacy 2 Mathematica ベクトル リストに対しては、ベクトルとしての演 算を行うことができる。 +:和 −:差 . :内積 12 Literacy 2 Mathematica ベクトルの例 13 Literacy 2 Mathematica 行列 » 行列はTableを使って、「リスト」のリスト として作ることが出来る。 作成方法1: » Table[i+j, {i,1,4},{j,1,4}] » 但しこの方法の場合は、順序に注意 作成方法2 » メニューのFile/Palette/Basicinputの中から指定 Transpose: 行と列の入れ替え 14 Literacy 2 Mathematica 行列の例 15 Literacy 2 Mathematica 関数のネストと高次の関数 » F[G[ ]]:G[]を評価した結果をFで評価する。 » 組み込み関数:他の関数を引数として取る高 次の関数 » Map:関数をリストの個々の要素に当てはめ る。 » MapThread:2つ以上のリストから要素を一 つずつ取り出して、関数の引数にする。 » 多くの関数は、リストを引数に持つときに は、自動的にマップ関数が適用される。 16 Literacy 2 Mathematica 関数の例 17 Literacy 2 Mathematica 関数の繰り返し適用 » 関数に引数を当てはめ、その結果をまた関数 に当てはめるということが出来る。 Nest[関数,初期値,回数]:回数分だけ、関数を当て はめた結果を出力する NestList[]:実行する途中の結果を含めて表示す る。 Fold[関数,初期値,リスト] :関数の適用結果と与え られたリストを逐次作用させる。 FoldList[]:Foldの途中経過も表示させる。 18 Literacy 2 Mathematica 関数の繰り返しの例 19 Literacy 2 Mathematica 関数の定義 ユーザーの関数の定義の仕方 Name[arg1_,arg2_,…,argn_]:= body » 左辺:関数名(シンボル) » []内:引数と呼ばれ、_で終わる » 右辺:本体と呼ばれ、引数が与えられたとき に評価ができる一つまたは複数の式が集まっ てできている。引数は、_無しで現れる。 20 Literacy 2 Mathematica 関数の定義の例 21 Literacy 2 Mathematica 複合式 » Name[arg1_,arg2_,…]:= (expr1; expr2; …;expr n) 一つの関数の中に値を埋め込んだり、式 をいくつか評価させたりすることが出 来る。この関数を評価すると、最後の 式の結果が返される。 22 Literacy 2 Mathematica 複合式の例 23 Literacy 2 Mathematica 演習問題 (1)講義で説明した入力を実際に行っ て、mathematicaの動作を確かめよ。 (2)次の演習問題をmathematicaを 用いて解き、解答(実行結果のプリン トアウト)を提出しなさい。 24 Literacy 2 Mathematica ランダムウォーク 2次元の座標平面を考える。時刻0で、粒子が原点(0,0)に存在 し、時刻t(t=0,1,2,…)において、ランダムに1単位だけ動く ものとする。このような粒子の動きを2次元上のランダム ウォークと呼ぶ。 ランダムウォークは、気体中の粒子の動きや株価の動きな ど様々な物理現象をモデル化するのに盛んに使われている 25 Literacy 2 Mathematica Exercise 1 ランダムウォーク 平方和が1になるようなx成分、y成分を持つ乱数を発生させよ。ま た、発生させたx成分、y成分の平方和が1となることを確かめよ。 (ヒント:単位円上に一様に値を持つ乱数を考えよ。) 1で作った乱数の100回分のリストを2次元平面上にプロットし、ラ ンダムな動きを実現していることを確かめよ。 (これがランダム ウォークの動く方向と大きさを表示している。) FoldList、Plusなどの関数を用いて乱数の値を順に加え、時刻1000 までのランダムウォークの粒子の動きの軌跡を2次元の図に表せ。 発展問題(時間がある人へ) 1.3次元ランダムウォークを作って動きを図示せよ。 2.空間にゆがみ(例えば、x軸方向に流れがある)のある場合のラン ダムウォークを図示せよ。 26 Literacy 2 Mathematica Exercise 1 Random Walk Generate a random number whose square sum of xcoordinate and y-coordinate equals to 1. Check your random number satisfies the assumption. (Hint: generate random number on the unit circle.) Make list of the 10 random numbers, which is generated as in 1. (This will be the direction and size of random walk movement.) Derive the position of the random walk up to time 10. (Hint: Use functions like FoldList and Plus.) Show the movement of random walk in 2-dimensional graph. (Up to time 100.) Option: Make 3-dimensional random walk and show it on the graph. 27