...

講義のPDFファイル

by user

on
Category: Documents
3

views

Report

Comments

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
Fly UP