Top Banner
シミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム 宮西 洋太郎 2018/6/261 オペレーションズ・リサーチ (林章浩先生ご担当) 12
70

シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

Oct 15, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

シミュレーション(1)

モンテカルロ法

2018/6/26, 2018/7/4

株式会社アイエスイーエム

宮西 洋太郎

2018/6/26版

1

オペレーションズ・リサーチ

(林章浩先生ご担当)

第12回

Page 2: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

シミュレーション

モンテカルロ法 1.本日の概要

2.本日の到達目標

3.工学的問題(数理的問題)の解き方

4.工学的問題の例

5.シミュレーションとは

6.モンテカルロ法とは

7.乱数とは

8.統計解析向けプログラミング言語R

9.円周率とは

10.円周率の計算

11.定積分の計算

2

4は簡単に

講義は5~11を中心に

Page 3: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

1.本日の概要 本日の概要

世の中には様々な解決を必要とする問題が存在している。

問題には、工学的問題、社会的問題、経済的問題、国際的問題、企業経営的問題など様々な分野の問題が存在している。

それらの問題を分析したり、解決したりする方法が、従来から学問体系として発展してきたり、新しい装置やシステムが発明されている。

本日は、主に工学的問題を取り扱う。

工学的問題の伝統的な手法は、数式モデルによる解法である。すなわち解決すべき対象を数式によって表現し、すなわち数式モデルを構築し、問題を方程式で表現し(対象の多くは時間とともに状態や値が変化する動的な特性をもつので微分方程式で表現)、その方程式を数学的に解く(解析的に解く)ことにより問題解決とする。

ところが、残念ながら、すべての方程式を数学的に解くことはできない。そこで、シミュレーションという手法が用いられる。

シミュレーションは、後述するように、数学的に解けるかどうかという問題以外にも、諸事情によって、用いられる手法である。

特に今回は、乱数を用いるモンテカルロ法について学習する。

3

Page 4: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

2.本日の到達目標 本日の到達目標

(聞いて理解できるかどうか、誰かに説明できるかどうか、自分で使えるかどうか)

・シミュレーションの位置づけ、意義

・乱数についての基礎知識

・モンテカルロ法(モンテカルロシミュレーション)の概要

・統計解析向けプログラミング言語Rのインストール

・統計解析向けプログラミング言語Rの基礎的な使い方

・円周率をモンテカルロ法によって計算

・定積分をモンテカルロ法によって計算

4

Page 5: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

3.工学的問題の解き方

工学的問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションによ

り解く

数式を展開していって数式で解を求め

数値を入れていくことによって解を求め

プログラミング言語で(論理的に)表現

する

・乱数を用いない

・乱数を用いる

シミュレーション

工学的問題

・ある物体の、ある時間tでの運動、位置、方向、速度、加速度、などを求めたい(運動方程式)

・ある電気回路で、入力x(t)に対しての出力y(t)を求めたい

・等々

関連理工学の知見、技法の適用

関連学問の知見、

技法の適用

数学

物理学

電気工学

電子工学

通信工学

制御工学

機械工学

土木工学

建築工学

数理計画

等々

経済学

経営学

心理学

法律

商習慣

等々

工学的問題においては

工学的問題においては

主 5

Page 6: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

3.工学的問題の解き方

問題の定義

数式で表現できる

(数理モデル)

数学的に解ける

(解析的に解ける)

数学的に解く

(解析的に解く)

数式を展開していって数式で解を求める

工学的問題

・ある物体の、ある時間tでの運動、位置、方向、速度、加速度、などを求めたい(運動方程式)

・ある電気回路で、入力x(t)に対しての出力y(t)を求めたい

等々

6

Page 7: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

3.工学的問題の解き方

問題の定義

数式で表現できる

(数理モデル)

数学的に解ける

(解析的に解ける)

数学的に解く

(解析的に解く)

数値計算により解く

数式を展開していって数式で解を求める

数値を入れていくことによって解を求める

工学的問題

・ある物体の、ある時間tでの運動、位置、方向、速度、加速度、などを求めたい(運動方程式)

・ある電気回路で、入力x(t)に対しての出力y(t)を求めたい

等々

7

Page 8: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

3.工学的問題の解き方

問題の定義

数式で表現できる

(数理モデル)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより

解く

数式を展開していって数式で解を求める

数値を入れていくことによって解を求める

・乱数を用いない

・乱数を用いる

シミュレーション

工学的問題

・ある物体の、ある時間tでの運動、位置、方向、速度、加速度、などを求めたい(運動方程式)

・ある電気回路で、入力x(t)に対しての出力y(t)を求めたい

等々

8

Page 9: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

3.工学的問題の解き方

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより

解く

数式を展開していって数式で解を求める

数値を入れていくことによって解を求める

プログラミング言語で(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション

工学的問題

・ある物体の、ある時間tでの運動、位置、方向、速度、加速度、などを求めたい(運動方程式)

・ある電気回路で、入力x(t)に対しての出力y(t)を求めたい

等々

9

Page 10: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-1

ボール投げのボール軌跡の計算問題(運動方程式の例)

時間t=0でx=0で水平方向初速度vx0、垂直方向初速度vy0で投げられた質量m

のボールの軌跡を求める(空気抵抗、風の影響はないものとする)

着地するx、時間tも、その結果として求まる

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより

解く

数式を展開していって数式で解を求める

数値を入れていくことによって解を求める

プログラミング言語で(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション 10

Page 11: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-1

ボール投げのボール軌跡の計算問題(運動方程式の例)

時間t=0でx=0で水平方向初速度vx0、垂直方向初速度vy0で投げられた質量mのボールの軌跡を求める(空気抵抗、風の影響はないものとする)

着地するx、時間tも、その結果として求まる

初期条件

・ボール質量m:100gram (この場合、関係しない)

・水平方向初期速度vx0:10.00m/sec (v0初期速度14.142135m/sec、初期角度45度)

・垂直方向初期速度vy0:10.00m/sec (v0初期速度14.142135m/sec、初期角度45度)

・重力加速度g:9.80m/sec2 、水平初期位置x0=0、垂直初期位置y0=0

・初期速度と投球角度

x 水平方向

y 垂直方向

θ 角度

v0初期速度(ベクトル)

vx0=v0cos(θ)

水平方向初期速度

vy0=v0sin(θ)

垂直方向初期速度

11

Page 12: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-1

ボール投げのボール軌跡の計算問題(運動方程式の例)

時間t=0でx=0で水平方向初速度vx0、垂直方向初速度vy0で投げられた質量mのボールの軌跡を求める(空気抵抗、風の影響はないものとする)

着地するx、時間tも、その結果として求まる

初期条件

・ボール質量m:100gram (この場合、関係しない)

・水平方向初期速度vx0:10.00m/sec (v0初期速度14.142135m/sec、角度45度)

・垂直方向初期速度vy0:10.00m/sec (v0初期速度14.142135m/sec、角度45度)

・重力加速度g:9.80m/sec2 、水平初期位置x0=0、垂直初期位置y0=0

)(2

1)(:

:,:

)()(:

:,0:

0

2

0

02

2

000

02

2

positionverticalinitialisywheretgytyposition

tgvydt

dyvelocityg

dt

dyonaccelerati

positionhorizontalinitialisxwheretvxxtxposition

vxdt

dxvelocity

dt

dxonaccelerati

水平方向

垂直方向

12

Page 13: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-1

ボール投げのボール軌跡の計算問題(運動方程式の例)

時間t=0でx=0で水平方向初速度vx0、垂直方向初速度vy0で投げられた質量mのボールの軌跡を求める(空気抵抗、風の影響はないものとする)

着地するx、時間tも、その結果として求まる

初期条件

・ボール質量m:100gram (この場合、関係しない)

・水平方向初期速度vx0:10.00m/sec

・垂直方向初期速度vy0:10.00m/sec

・重力加速度g:9.80m/sec2

y垂直方向位置

(高さm)

x水平方向位置(m)

解析的な解

x(t) = vx0*t

y(t) = vy0*t - (1/2)*g*t2

-1

0

1

2

3

4

5

6

0 5 10 15 20 25

ボール投げのボールの軌跡(解析的計算解)

13

Page 14: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-2

ボール投げのボール軌跡の計算問題(運動方程式の例)

時間t=0でx=0で水平方向初速度vx0、垂直方向初速度vy0で投げられた質量m

のボールの軌跡を求める(空気抵抗、風の影響はないものとする)

着地するx、時間tも、その結果として求まる

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより

解く

数式を展開していって数式で解を求める

数値を入れていくことによって数値解を求める

プログラミング言語で(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション 14

Page 15: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-2

ボール投げのボール軌跡の計算問題(運動方程式の例)

時間t=0でx=0で水平方向初速度vx0、垂直方向初速度vy0で投げられた質量mのボールの軌跡を求める(空気抵抗、風の影響はないものとする)

着地するx、時間tも、その結果として求まる

初期条件

・ボール質量m:100gram (この場合、関係しない)

・水平方向初期速度vx0:10.00m/sec

・垂直方向初期速度vy0:10.00m/sec

・重力加速度g:9.80m/sec2

)(2

1)(:

:,:

)()(:

:,0:

0

2

0

02

2

000

02

2

positionverticalinitialisywheretgytyposition

tgvydt

dyvelocityg

dt

dyonaccelerati

positionhorizontalinitialisxwheretvxxtxposition

vxdt

dxvelocity

dt

dxonaccelerati

水平方向

垂直方向

数値計算で解く

時間tを微小区間t=n・Δに分

割し、微分方程式を差分方程式で近似的に解く

15

Page 16: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-2

ボール投げのボール軌跡の計算問題(運動方程式の例)

時間t=0でx=0で水平方向初速度vx0、垂直方向初速度vy0で投げられた質量mのボールの軌跡を求める(空気抵抗、風の影響はないものとする)

着地するx、時間tも、その結果として求まる

初期条件

・ボール質量m:100gram (この場合、関係しない)

・水平方向初期速度vx0:10.00m/sec (v0初期速度14.142135m/sec、角度45度)

・垂直方向初期速度vy0:10.00m/sec (v0初期速度14.142135m/sec、角度45度)

・重力加速度g:9.80m/sec2 、水平初期位置x0=0、垂直初期位置y0=0

)(:

),(:

,2)()(

:

)(

,0)()(

01

001

2

21

2

211

000

01

01

2

2

2

211

positionverticalinitialisywherevyyposition

vyvelocityverticalinitialisvgvvvelocity

gyyyyyyy

onaccelerati

positionhorizontalinitialisxwherenvxxx

vxxx

vxxxxxxxxx

nnn

nn

nnnnnnn

n

nn

nnnnnnnn

水平方向

垂直方向

16

Page 17: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-2

ボール投げのボール軌跡の計算問題(運動方程式の例)

時間t=0でx=0で水平方向初速度vx0、垂直方向初速度vy0で投げられた質量mのボールの軌跡を求める(空気抵抗、風の影響はないものとする)

着地するx、時間tも、その結果として求まる

初期条件

・ボール質量m:100gram (この場合、関係しない)

・水平方向初期速度vx0:10.00m/sec

・垂直方向初期速度vy0:10.00m/sec

・重力加速度g:9.80m/sec2

垂直方向位置

(高さm)

水平方向位置(m)

数値計算で解く

微分方程式の時間を微小区間に分割し、差分方程式で解く Δ=0.01sec

-1

0

1

2

3

4

5

6

0 5 10 15 20 25

ボール投げのボールの軌跡(数値計算)

17

Page 18: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-1と例-2の比較 → ほぼ同じ

垂直方向位置

(高さm)

-1

0

1

2

3

4

5

6

0 5 10 15 20 25

ボール投げのボールの軌跡(数値計算解)

垂直方向位置

(高さm)

水平方向位置(m)

-1

0

1

2

3

4

5

6

0 5 10 15 20 25

ボール投げのボールの軌跡(解析的計算解)

水平方向位置(m)

18

Page 19: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方(解析的計算) ボール投げ角度の比較

30度、45度、60度のうち45度が一番遠くまで、届く

初期速度14.142135m/secで投球角度のみ変えてみた

垂直方向位置

(高さm)

水平方向位置(m)

-1

0

1

2

3

4

5

6

7

8

9

0 2 4 6 8 10 12 14 16 18 20

角度の比較

-1

0

1

2

3

0 2 4 6 8 10 12 14 16 18 20

-1

0

1

2

3

4

5

6

0 5 10 15 20 25

60度

45度

30度

19

Page 20: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-3、4

電気回路(古典制御理論)の例

(専攻関係や興味がなけれな、スキップ)

予備知識:電気回路理論、ラプラス変換

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより

解く

数式を展開していって数式で解を求める

数値を入れていくことによって数値解を求める

プログラミング言語で(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション 20

Page 21: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-3、4

電気回路(古典制御理論)の例(専攻関係や興味がなけれな、スキップ)

予備知識:電気回路理論、ラプラス変換

ここでのあらすじ

・電気回路への入力x(t)に対して、電気回路をとおした出力y(t)がラプラス変換の形で表現されている。一般にY(s)=G(s)・X(s)という形式で表現される。G(s)は伝達関数といわれる。

電気回路理論では、ラプラス変換の形式で演算を行っていき、出力のY(s)をラプラス逆変換を行い、時間軸での出力y(t)を求めるのが一般的である。ここでは以下の方法でy(t)

を求めることとする。

・ラプラス変換の複素変数sは「微分操作」を意味するので、このラプラス変換での表現形式を微分方程式の形式に書き直す。

(動特性のモデリングは、もともと微分方程式でのモデリングが始まりであり、ここでの方法は本末転倒ということになるが。)

・この微分方程式の形式を、微小時間区間Δを用いて、差分方程式によって近似する。

・あとは、表計算アプリケーションにより、数値計算を行う。

この方式のメリット

ラプラス変換、微分方程式の解き方を詳しく知らなくても、数値解を求めることができる。

21

Page 22: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-3

電気回路の例 1次遅れ系

1次遅れ系関連知識:

CR回路、(ローパス、低域)フィルター回路、時定数、指数平滑法、畳み込み積分、インパルス応答、

・ラプラス変換形式

・微分方程式形式

sT

KsG

1)( )()()( sXsGsY )(sX

)()()(

)(1

)(

sXKsYssYT

sXTs

KsY

)()()(

)()(),()(,)(

)(

tytxKdt

tdyT

txsXtysYdt

tdyssY

G(s):伝達関数、s:ラプラス変数、

T:時定数、K:利得(ゲイン)

22

Page 23: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-3

電気回路の例 1次遅れ系

・微分方程式形式

・差分方程式(時間軸を離散的な番号nとする。関連:Nyquistのサンプリング定理)

t=n・Δ

)()()(

tytxKdt

tdyT

nnn

nnn

nnn

nnnn

nnnn

xKT

yT

Ty

T

xKyTy

xKyT

yT

yxKyy

T

ytyxtxyy

dt

tdy

1

1

1

1

1

)

1

)(,)(,)(

A→B 置き換え

23

Page 24: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-3

電気回路の例 1次遅れ系

・差分方程式(時間軸を離散的な番号nとする。関連:Nyquistのサンプリング定理)

t=n・Δ

・指数平滑法

nnn xKT

yT

Ty

1

nnn xayay

T

TaK

)1(

,1

1

24

Page 25: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

0

0.2

0.4

0.6

0.8

1

1.2

1

48

9

5

14

2

18

9

23

6

28

3

33

0

37

7

42

4

47

1

51

8

56

5

61

2

65

9

70

6

75

3

80

0

84

7

89

4

94

1

98

8

10

35

1

08

2

11

29

1

17

6

12

23

1

27

0

13

17

1

36

4

14

11

1

45

8

1次遅れ系

入力x 出力y

4.工学的問題の例 工学的問題の解き方 例-3

電気回路の例 1次遅れ系

・指数平滑法(1次遅れディジタルフィルタ)

nnn xayay

T

TaK

)1(

,1

1

時間軸 t

0.01sec単位

振幅

無名数

出力

入力

K=1

T=1 sec

Δ=0.01 sec

t=0.1secで、入力値0から1へ 25

Page 26: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-4

電気回路の例 2次遅れ系

2次遅れ系関連知識:

LCR回路、時定数、ダンピングファクタ(減衰係数)、固有角周波数、2次遅れフィルター、オーバーシュート、振動、畳み込み積分、インパルス応答、PID制御、

・ラプラス変換形式

・微分方程式形式

22

2

2)(

nn

n

sssG

)()()( sXsGsY )(sX

)()()(2)(

)(2

)(

222

22

2

sXsYssYsYs

sXss

sY

nnn

nn

n

)()()(

2)(

)()(),()(,)(

)(,)(

)(

22

2

2

2

22

txtydt

tdy

dt

tyd

txsXtysYdt

tdyssY

dt

tydsYs

nnn

G(s):伝達関数、s:ラプラス変数、

ζ:減衰係数、ωn:固有角周波数

26

Page 27: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-4

電気回路の例 2次遅れ系

2次遅れ系関連知識:

LCR回路、時定数、ダンピングファクタ(減衰係数)、固有角周波数、2次遅れフィルター、オーバーシュート、振動、畳み込み積分、インパルス応答、PID制御、

・微分方程式形式

・差分方程式形式(時間軸を離散的な番号nとする。関連:Nyquistのサンプリング定理)

t=n・Δ

)()()(

2)( 22

2

2

txtydt

tdy

dt

tydnnn

bacbawhere

xcybyay

xyyy

xyyyyyy

xtxytyyy

dt

tdy

yyyyyyy

dt

tyd

nnnn

n

nnnn

nnnnn

nnn

nnnnnn

nnnn

nnnn

nnnnnnn

1,21

1,

21

22

112

21

22

)(,)(,)(

,2)()()(

2222

21

2

2212

2

2

221

2

21

1

2

21211

2

2

A→B 置き換え

27

Page 28: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

4.工学的問題の例 工学的問題の解き方 例-3

電気回路の例 2次遅れ系

・差分方程式

bacbawhere

xcybyay

xyyy

nnnn

n

nnnn

nnnnn

nnn

1,21

1,

21

22

1221

2222

21

2

221

2

2

28

Page 29: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

0

0.2

0.4

0.6

0.8

1

1.2

1

48

9

5

14

2

18

9

23

6

28

3

33

0

37

7

42

4

47

1

51

8

56

5

61

2

65

9

70

6

75

3

80

0

84

7

89

4

94

1

98

8

10

35

1

08

2

11

29

1

17

6

12

23

1

27

0

13

17

1

36

4

14

11

1

45

8

2次遅れ系

入力x 出力y

4.工学的問題の例 工学的問題の解き方 例-3

電気回路の例 2次遅れ系

・2次遅れディジタルフィルタ

bacbannnn

n

1,

21

1,

21

222222

時間軸 t

0.01sec単位

振幅

無名数

出力

入力

t=0.1secで、入力値0から1へ

nnnn xbaybyay )1(12

ωn=1 1/sec

ζ=0.5

Δ=0.01 sec

29

Page 30: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

5.シミュレーションとは もともと、シミュレーション(simulation)は、模擬実験ともいわれ

本物による実験が、困難な(費用的にも、時間的にも、リスク的にも)場合に、本物をできるだけ模擬(実験の目的にそって忠実に)し、各種の実験結果を得る目的で行われた。前述の問題の解き方とも共通している。

例えば、

・新型航空機、新型自動車の開発における風洞実験として

・航空機の操縦を練習するための装置(フライトシミュレータ)として

・津波の発生など水理工学的実験装置(水槽実験装置)として

・ゲームとして

昔は、物理的な模型を使ったりした

現在は、コンピュータの発展により、模型にかわってソフトウェアでディジタルモデルが構築され、コンピュータだけで模擬実験(シミュレーション)が可能な時代となっている。

30

Page 31: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

6.モンテカルロシミュレーションとは モンテカルロ法 (Monte Carlo method, MC) とは(Wikipedia)

シミュレーションや数値計算を乱数を用いて行う手法の総称。元々は、中性子が物質中を動き回る様子を探るためにスタニスワフ・ウラムが考案しジョン・フォン・ノイマンにより命名された手法。

カジノで有名な国家モナコ公国の4つの地区(カルティ)の1つであるモンテカルロから名付けられた。ランダム法とも呼ばれる。

モンテカルロ→カジノ→サイコロ→ランダムナンバー(乱数)というわけ。

この講義では、例として

・モンテカルロ法による円周率の計算

・モンテカルロ法による定積分の計算

を示す。

31

Page 32: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

7.乱数とは 乱数 (random number)

乱数とは、サイコロの出目のように規則性がなく、予測不能な数値のこと。何度も生成した時に、すでに分かっている値の列から、次に現れる値を予測できないような数値の列を乱数列と呼び、その中の個々の値を乱数という。

IT辞書http://e-words.jp/w/%E4%B9%B1%E6%95%B0.html

一様乱数 (uniform random number)

ある下限から上限まで、出現する頻度が同じである乱数のこと。例えば0から1

までの間で、おなじ頻度で出現する乱数。(確率分布密度が一定値)

ある確率分布 (probability distribution)をもたせたい乱数の発生

一様乱数に特定の変換処理を行うこと(逆関数法)により、特定の出現の分布(特定の確率分布密度)をもつ乱数を生成することができる(詳細は省略)。逆関数法:https://mathtrain.jp/invsampling

例:正規分布 (normal distribution)をもたせたい乱数の発生

この場合には、逆関数法によらなくても、中心極限定理により、一様乱数を多数平均することにより、正規分布に近づく(詳細は省略)。

https://ja.wikipedia.org/wiki/%E4%B8%AD%E5%BF%83%E6%A5%B5%E

9%99%90%E5%AE%9A%E7%90%86

https://ja.wikipedia.org/wiki/中心極限定理

32

Page 33: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

7.乱数とは 乱数の生成

疑似乱数(アルゴリズムで生成)(pseudo random number)

一例:平方採中法

ある数値を自乗して、中ほどの数値をとりだす。

Excelで模擬的に一様乱数を生成する方法を示す。

シードの有無

シード(種)とは、疑似乱数を発生させるときの、大元となる数(かず)。同じシードをつかえば、同じ乱数、乱数列を発生する。

乱数の検定 http://ebsa.ism.ac.jp/ebooks/sites/default/files/ebook/1223/pdf/ch03.pdf

・出現頻度

一様乱数の場合、例えばサイコロの場合には、1から6まえの数字が出る頻度が同じであること。

・順序性なし

例えば、サイコロの場合、1,2,3,4,5,6,1,2,3,4,5,6と繰り返せば、出現頻度は各数字で同じになりますが、ランダムとはいえない。

順序性がないことを調べる方法を示す。

例えば、1つ前の乱数との散布図、相関係数をみる。

33

Page 34: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

7.乱数とは 乱数の生成

一様乱数をExcelで実験

・Excelが内臓している関数の乱数RAND()(シードなし、毎回別の乱数列を生成)

(乱数値は、シードを指定しないので、再現しない、すなわち試行ごとに異なる)

・Excelを使って、平方採中法、シードありの乱数を生成

この2方式を比較する

ヒストグラムにより、乱数が一様に生成されていることをみる。

1つずらして、散布図、相関係数をみる

2つずらして、散布図、相関係数をみる

・・・・・・

34

Page 35: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

7.乱数とは

35

A B C D E F G H I J K1 疑似乱数(pseudo randum number)2 0から1まで(実数)乱数発生トライ3 平方採中法に似た方法 小数点以下4桁程度を目指す Excel内臓関数4 前回の値を100倍して、その自乗をとり、小数点以下のみ取り出す 実行ごとにことなる5 ケース 1 2 3 4 5 6 参考1 参考26 シード 0.578901234 0.578901235 0.578901236 1.578901236 2.578901236 10.57890124 RAND() RAND()

7 1回目 0.266387267 0.266398845 0.266410423 0.291130423 0.315850423 0.513610423 1回目 0.8191687 0.89306058 2回目 0.621761414 0.683447518 0.745136305 0.569233593 0.614898894 0.956669324 2回目 0.3865262 0.05695679 3回目 0.872555329 0.005092777 0.281128951 0.26883926 0.006499893 0.161954546 3回目 0.5160137 0.9861997

10 4回目 0.528020593 0.259363822 0.334873609 0.745476485 0.422486027 0.292749394 4回目 0.2351772 0.882180411 5回目 0.057466535 0.695924131 0.403339452 0.351903647 0.944428122 0.022075378 5回目 0.7938997 0.491185112 6回目 0.024026568 0.103964258 0.827133749 0.361765323 0.444774928 0.873222981 6回目 0.6156401 0.183575913 7回目 0.77275981 0.085669386 0.502389797 0.741490701 0.247362949 0.183748997 7回目 0.2852633 0.36411914 8回目 0.577235384 0.392437563 0.955084025 0.08460216 0.884283462 0.636938264 8回目 0.7432444 0.007865715 9回目 0.006884988 0.072407649 0.854940621 0.575255122 0.572412093 0.903523837 9回目 0.8079197 0.752933716 10回目 0.474030662 0.428676623 0.234657414 0.184556126 0.556042573 0.553245987 10回目 0.6898249 0.771304417 11回目 0.050680637 0.636470905 0.641019218 0.609634681 0.833431179 0.811217835 11回目 0.4706178 0.918153718 12回目 0.685269456 0.952122796 0.056372896 0.544445207 0.075307788 0.743757959 12回目 0.3745521 0.374736719 13回目 0.942267785 0.378177863 0.779033799 0.205838809 0.712630011 0.759010111 13回目 0.5807266 0.478935620 14回目 0.685777486 0.184964306 0.936600314 0.696153611 0.415327312 0.963484303 14回目 0.6160802 0.976459521 15回目 0.90759823 0.117944961 0.201474887 0.298500073 0.967758968 0.020029421 15回目 0.8309216 0.330599322 16回目 0.345468087 0.110137645 0.921300545 0.022934184 0.574193492 0.011776929 16回目 0.4186707 0.129851823 17回目 0.481992083 0.303007669 0.946945468 0.259767932 0.981661013 0.386960681 17回目 0.6653803 0.867905724 18回目 0.163682189 0.136475566 0.057198105 0.793786251 0.583444516 0.385685683 18回目 0.304553 0.154026625 19回目 0.918590755 0.255801308 0.716232251 0.966114856 0.075028534 0.534460173 19回目 0.1987413 0.92588326 20回目 0.089756692 0.343091744 0.88637898 0.779151752 0.292809243 0.476770266 20回目 0.9148336 0.4757097

=RAND() =(B6*100*B6*100)-INT(B6*100*B6*100)

Page 36: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

7.乱数とは

36

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

参考1(Excel) ケース1

ケース2 ケース3

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

グラフ 横軸:試行番号、縦軸:乱数の値

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Page 37: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

7.乱数とは

37

参考1(Excel) ケース1

ケース2 横軸:

1:0 ≦ x<0.1

2:0.1 ≦x<0.2

3:0.2 ≦x<0.3

4:0.3 ≦x<0.4

5:0.4 ≦x <0.5

6:0.5 ≦x <0.6

7:0.6 ≦ x <0.7

8:0.7 ≦x <0.8

9:0.8 ≦x <0.9

10:0.9 ≦x ≦ 1.0

グラフ ヒストグラム(1000個の乱数)

0

20

40

60

80

100

120

1 2 3 4 5 6 7 8 9 10

0

20

40

60

80

100

120

1 2 3 4 5 6 7 8 9 10

縦軸:

発生回数(頻度)

0

20

40

60

80

100

120

1 2 3 4 5 6 7 8 9 10

Page 38: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

7.乱数とは

38

参考1(Excel) ケース1

ケース2

横軸:1つ前の乱数値

縦軸:現在の乱数値

近似直線y=ax+b

のaは相関係数

グラフ 前後の関連性をみる 1000個の乱数、1つ前との関連性→散布図、相関係数

y = -0.0489x + 0.527

0

0.2

0.4

0.6

0.8

1

1.2

0 0.2 0.4 0.6 0.8 1 1.2

y = -0.041x + 0.5198

0

0.2

0.4

0.6

0.8

1

1.2

0 0.2 0.4 0.6 0.8 1 1.2

y = 0.0066x + 0.4812

0

0.2

0.4

0.6

0.8

1

1.2

0 0.2 0.4 0.6 0.8 1 1.2

Page 39: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

7.乱数とは

39

参考1(Excel) ケース1

ケース2

横軸:1つ前の乱数値

縦軸:現在の乱数値

近似直線y=ax+b

のaは相関係数

グラフ 前後の関連性をみる 1000個の乱数、2つ前との関連性→散布図、相関係数

y = -0.0489x + 0.527

0

0.2

0.4

0.6

0.8

1

1.2

0 0.2 0.4 0.6 0.8 1 1.2

y = -0.041x + 0.5198

0

0.2

0.4

0.6

0.8

1

1.2

0 0.2 0.4 0.6 0.8 1 1.2

y = 0.0066x + 0.4812

0

0.2

0.4

0.6

0.8

1

1.2

0 0.2 0.4 0.6 0.8 1 1.2

Page 41: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

9.円周率とは 意味(Wikipedia)

円周率(えんしゅうりつ)は、円の周長の直径に対する比率として定義される数学定数である。通常、ギリシア文字 π(パイ、ピー、ラテン文字表記: pi 英語発音: [pai])で表される。数学をはじめ、物理学、工学といった様々な科学分野に出現し、最も重要な数学定数とも言われる。

円周率は無理数であり、その小数展開は循環しない。円周率は、無理数であるのみならず、超越数でもある。

円周率の計算において功績のあったルドルフ・ファン・コーレンに因み、ルドルフ数とも呼ばれる。ルドルフは、小数点以下35桁までを計算した。小数点以下35桁までの値は次の通りである。

π = 3.14159265358979323846264338327950288 …

計算式(Wikipedia)

14世紀インドの数学者・天文学者であるサンガマグラーマのマーダヴァは次のような π の級数表示を見いだしている(ライプニッツの公式):

0 12

)1(

11

1

9

1

7

1

5

1

3

11

4

n

n

n

41

・・・

Page 42: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 ・公式(ライプニッツの公式)を使って計算

Excelで計算(収束が遅い→別のアルゴリズムが存在する)

n=1000で3.142591654

n=1001で3/140594650 この平均3.141593152

n=2500で3.141192973

n=2501で3.141992174 この平均3.141592574

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより

解く

数式を展開していって数式で解を求める

数値を入れていくことによって数値解を求める

プログラミング言語で(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション

42

Page 43: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 ・公式を使わず計算

→モンテカルロ法

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより

解く

数式を展開していって数式で解を求める

数値を入れていくことによって数値解を求める

プログラミング言語で(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション 43

Page 44: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 ・円周率パイ π を求めたい(公式を使わずに)

・円の面積は π×r×r を知っている(rは半径)

・半径r=1の円の面積をもとめれば、πが計算できる

・では、半径r=1の円(単位円)の面積を求めよう

・それには、4分の1の円(四分円)の面積を求めよう

図の四分円(扇型の部分)の面積を求めよう

・いよいよ、モンテカルロ法の登場

・でたらめに(ランダムに)点 p(x,y)、(ただし0≦x≦1, 0≦y≦1)

を発生させ、点pが扇型の中に入っているか、入っていないか調べる

・これを多数くりかえし、

【入っている数】対【入っている数+入っていない数】の比率が、

【扇型の面積】対【正方形(0,0),(1,0),(1,1),(0,1)の面積】の比率となる、

・扇型の面積の4倍が円の面積となる、すなわち π となる

扇型の中に入った回数

扇型の中に入った回数+入らなかった回数=全回数 ≒

扇型の面積

正方形の面積=1×1

≒ 扇型の面積

半径=1の円

x軸

y軸

O

1

1

x

y p

44

Page 45: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 参考URL:http://d.hatena.ne.jp/necoffee/20071119/1195478473

単純なプログラム(グラフなし)

Pi <- function(n) { #試行回数n

inR <- 0 #乱数が4分の1円(扇型)に入る個数

for(i in 1:n) { #試行回数くりかえす

xy <- runif(2) #変数xyに一様乱数2個生成する(x成分、y成分)

r <- sqrt(xy[1]^2 + xy[2]^2) #xyのx成分、y成分から原点からの距離計算

if(r <= 1) { #距離が1以下かどうか

inR <- inR + 1 #距離が1より小さいとinRを1増加させる

}

}

return_data <- 4*inR/n #円周率計算(nRのnにたいする割合の4倍)

return(return_data ) #i返答する

}

45

Page 46: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 参考URL:http://essay-mrkessi.blogspot.jp/2013/01/r.html (グラフあり)

Pi <- function(n){ #試行回数n

inR <- 0 #扇型に入った数

cols <- NULL #plot色分け用

range <- c(0,1) #plot時の描画範囲

x <- runif(n,0,1) #一様乱数でx座標を決定、n個

y <- runif(n,0,1) #一様乱数でy座標を決定、n個

r <- sqrt(x^2+y^2) #原点からの各点の距離を計算、n個

for(i in r){ #わかりにくい

if(i<=1){ #もし,原点からの距離が1以下であれば扇型の中

inR <- inR + 1

cols <- c(cols,"red") #扇型内であれば赤色でプロット

}else{

cols <- c(cols,"blue") #扇型外であれば青色でプロット

}

}

return_data <- 4*inR/n #円周率計算

plot(x,y,col=cols,xlim=range,ylim=range,pch=20,main="Estimate pi value with Monte

Carlo method.",sub=sprintf("%s points. pi = %1.6f",n, return_data))

return(return_data)

}

46

Page 47: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 わかりやすいプログラム (グラフあり)

Pi <- function(n) { #試行回数n

inR <- 0 #扇型に入った数

cols <- NULL #plot色分け用

range <- c(0,1) #plot時の描画範囲

x <- runif(n,0,1) #一様乱数でx座標を決定、n個発生

y <- runif(n,0,1) #一様乱数でy座標を決定、n個発生

r <- sqrt(x^2+y^2) #原点から各点がどのくらい離れているか

for(i in 1:n) { #前ページのプログラムよりわかりやすい

if(r[i] < 1) { #半径1より小さいかチェック

inR <- inR + 1

cols[i] <- c("red") #扇型内であれば赤色でプロット

}else{

cols[i] <- c("blue") #扇型外であれば青色でプロット

}

}

return_data <- 4*inR/n #円周率計算

plot(x,y,col=cols,xlim=range,ylim=range,pch=20,main="Estimate pi value with Monte

Carlo method.",sub=sprintf("%s points, pi = %1.6f",n, return_data))

return(return_data)

}

47

Page 48: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 Rプログラム(スクリプト)の実行手順

(1)Rの起動

デスクトップ上のR x64 3.4.4アイコンをクリック

(2)ディレクトリの指定

走らせようとしているプログラムを格納するまたはプログラムが格納されているフォルダを指定する

「ファイル」、「ディレクトリーの変更」

(林先生、work)

(3)プログラム(スクリプト)の作成または読み込み

新規:「新しいスクリプト」、 作成して「別名で保存」 名前をつける

既存:「スクリプトを開く」、 「円周率計算.R」を指定する

(4)同プログラムを一度走らせる

カーソルを同プログラムの先頭にもっていき、

「編集」、「すべて実行」

(5)同プログラムを動作させる

Pi(1000)、Pi(5000)、Pi(10000)、Pi(50000)、各15回

48

Page 49: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 計算結果

モンテカルロ実行の結果

下記のように、実験で得られた円周率は真の値にくらべ、かなり誤差が大きいものとなっている。

試行 1,000回 平均 試行 5,000回 平均 試行 10,000回 平均 試行 50,000回 平均

1 3.128000 1 3.161600 1 3.144000 1 3.142960

2 3.144000 2 3.138400 2 3.138000 2 3.134160

3 3.220000 3 3.122400 3 3.132400 3 3.146400

4 3.168000 4 3.113200 4 3.113200 4 3.138880

5 3.118000 3.155600 5 3.140800 3.135280 5 3.118000 3.129120 5 3.136720 3.139824

6 3.152000 6 3.165600 6 3.134800 6 3.153200

7 3.128000 7 3.172000 7 3.152800 7 3.145120

8 3.228000 8 3.112000 8 3.135600 8 3.147440

9 3.148000 9 3.156000 9 3.166800 9 3.143920

10 3.156000 3.162400 10 3.136800 3.148480 10 3.122000 3.142400 10 3.137360 3.145408

11 3.192000 11 3.116000 11 3.151200 11 3.137520

12 3.156000 12 3.156800 12 3.107600 12 3.150080

13 3.080000 13 3.129600 13 3.149600 13 3.137120

14 3.072000 14 3.100000 14 3.150800 14 3.144000

15 3.176000 3.135200 15 3.126400 3.125760 15 3.132400 3.138320 15 3.144240 3.142592

平均 3.151067 3.151067 平均 3.136507 3.136507 平均 3.136613 3.136613 平均 3.142608 3.142608

標準偏差 0.043771 0.014155

標準偏差 0.022032 0.011410

標準偏差 0.016480 0.006803

標準偏差 0.005490 0.002792

49

Page 50: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 計算結果

モンテカルロ実行の結果

下記のように、実験で得られた円周率は真の値にくらべ、かなり誤差が大きいものとなっている。

2.950000

3.000000

3.050000

3.100000

3.150000

3.200000

3.250000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1000, 5000, 10000, 50000回の比較

1000回 5000回 10000回 50000回

50

Page 51: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 計算結果

モンテカルロ実行の結果

下記のように、実験で得られた円周率は真の値にくらべ、かなり誤差が大きいものとなっている。

棒グラフに比べ、横軸にともなう推移という意味での折れ線グラフの意味はないが、偏差(バラツキ)がわかりやすい。回数が多くなるにしたがって、標準偏差(バラツキ)が小さくなっているのがわかる。

2.950000

3.000000

3.050000

3.100000

3.150000

3.200000

3.250000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1000, 5000, 10000, 50000回の比較

1000回 5000回 10000回 50000回 51

Page 52: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

10.円周率の計算 計算結果

モンテカルロ実行の結果

下記のように、実験で得られた円周率は真の値にくらべ、かなり誤差が大きいものとなっている。

標準偏差(試行回数を1つのまとめとして、それを15回繰り返したときの標準偏差)

試行回数の草加とともに、標準偏差は減少するが、標準偏差自体ばらついている。

試行回数 標準偏差(15回)

1000 0.0437712669

2000 0.0279816266

5000 0.0220319076

10000 0.0164798521

10000 0.0114369493

20000 0.0132639576

20000 0.0166523214

30000 0.00851054052

30000 0.010025

40000 0.00801737993

50000 0.005490172

52

Page 53: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・定積分の数式

変数がx1・・・xnと n変数の場合

ここでは、1変数の場合を扱う

nn

xx

xx

xx

xx

dxdxdxxxxfynn

n

2121 ),,,(max

min1

max11

min11

max

min

)(

xx

xx

dxxfy

dxxfxForxfxFdx

d

where

xFyyxx

xx

)()()()(

)( max

min0

不定積分

53

Page 54: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・定積分の数式(変数が1つの場合の一例)

面積S

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより解く

数式を展開していって数式で解を求める

数値を入れていくことによって数値解を求める

プログラミング言語で

(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション

583333.04

1

3

1

2

11

4

1

3

1

2

1

)1(

0

1

0

432

0

1

0

32

S

xxxxS

dxxxxS

x

x

x

x

S0=0とする

321 xxxy

54

Page 55: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・数値積分(Wiikipedia)

数値積分(すうちせきぶん)とは、狭義には与えられる関数の定積分の値を、解析的にではなく数値的に求めることであり、広義には与えられる導関数から原関数を求めること、また微分方程式を数値的に解くことを含む。数値解析の一つである。

・近似公式

・長方形近似

・台形近似

・シンプソンの公式(2次曲線をあてはめる、本稿では省略)

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより解く

数式を展開していって数式で解を求める

数値を入れていくことによって数値解を求める

プログラミング言語で

(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション

55

Page 56: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・数値積分

・長方形近似 ・台形近似

・・・・・

x0 xn

x

y

)( xfy

Δ

=a

=b

1

0~

)(

)(

n

i

i

b

a

xf

dxxfS面積

・・・・・

x0 xn

x

y

)( xfy

Δ

=a

=b

))()((2

1

)(

)(

0

1

1~

n

n

i

i

b

a

xfxf

xf

dxxfS

面積

iax i iax i

56

Page 57: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・定積分の数式(変数が1つの場合の一例)

x=0からx=1までの定積分(面積の計算)

・長方形近似と台形近似の比較(台形近似のほうがよい)

321 xxxy

Δ 長方形近似面積 台形近似面積0.1 0.6325 0.5825

0.01 0.588325 0.5833250.001 0.58383325 0.58333325

57

Page 58: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・モンテカルロ法による定積分

2つの考え方

・方法-1:多数のx軸での乱数について、計算対象のy軸の値(高さ)の長方形(横軸の値は一定値)の平均値で計算する方法

→円周率の計算にも適用できる。

・方法-2:円周率を計算したときのように、多数のx軸、y軸での乱数が

計算対象の関数で決まるある範囲に入っているかどうかを調べ、その比率から計算する方法

問題の定義

数式で表現できる

(数理モデル)

数式以外の表現

(言葉で表現など)

数学的に解ける

(解析的に解ける)

数学的に解けない

または困難

数学的に解く

(解析的に解く)

数値計算により解く

シミュレーションにより解く

数式を展開していって数式で解を求める

数値を入れていくことによって数値解を求める

プログラミング言語で

(論理的に)表現する

・乱数を用いない

・乱数を用いる

シミュレーション

58

Page 59: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・モンテカルロ法による定積分

・方法-1:多数のx軸での乱数について、計算対象のy軸の値(高さ)の長方形(横軸の値は一定値)の平均値で計算する方法→円周率の計算にも適用できる。

下図は一例で、xの範囲は、0≦x≦1としている

x 59

Page 60: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・モンテカルロ法による定積分(方法-1)

#Montecalro法-1

Area <- function(n) { #n:モンテカルロで乱数を用いる回数

area <- 0 #area:面積計算結果、初期化

cols<-NULL #cols:色付けの領域確保

x <- NULL #x:x軸の領域確保

y <- NULL #y:y軸の領域確保

for(i in 1:n) { #i:1からnまで繰り返す

x[i]<- runif(1) #x[i]:i番目のxの値に一様乱数[0,1]をいれる

y[i]<- (1-x[i]+x[i]^2-x[i]^3) #面積計算対象の関数、y高さ、幅は1(固定)

cols[i] <- "red" #i番目の色を赤にする

}

area <- mean(y) #繰り返しが終わって、平均をとる

return_data <- area #戻り値をセットする

plot(x,y,col=cols,pch=20) #グラフをプロットする

return(return_data)

}

使用例

>Area(1000)

60

Page 61: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分(面積)の計算 計算結果

モンテカルロ(方法-1)実行の結果

試行 1,000回 平均 試行 5,000回 平均 試行 10,000回 平均 試行 50,000回 平均

1 0.5861849 1 0.5911876 1 0.5885665 1 0.5816823

2 0.5964476 2 0.5824233 2 0.5855050 2 0.5817478

3 0.5791023 3 0.5830512 3 0.5805846 3 0.5831899

4 0.5918264 4 0.5826754 4 0.5831275 4 0.5849750

5 0.5899859 0.5887094 5 0.5928361 0.5864347 5 0.5831622 0.5841892 5 0.5813758 0.5825942

6 0.5800391 6 0.5881337 6 0.5823544 6 0.5833849

7 0.5771167 7 0.5914547 7 0.5807947 7 0.5857820

8 0.5749209 8 0.5770442 8 0.5796573 8 0.5827809

9 0.5940043 9 0.5810333 9 0.5809246 9 0.5826159

10 0.5757990 0.5803760 10 0.5871954 0.5849723 10 0.5830813 0.5813625 10 0.5851023 0.5839332

11 0.5786909 11 0.5822601 11 0.5898798 11 0.5832763

12 0.5882231 12 0.5835375 12 0.5808433 12 0.5826262

13 0.5825786 13 0.5799758 13 0.5871573 13 0.5824843

14 0.6001052 14 0.5842499 14 0.5830654 14 0.5831595

15 0.5899781 0.5879152 15 0.5834700 0.5826987 15 0.5817513 0.5845394 15 0.5826966 0.5828486

平均 0.5856669 0.5856669 平均 0.5847019 0.5847019 平均 0.5833637 0.5833637 平均 0.5831253 0.5831253

標準偏差

0.0079960 0.0045992 標準偏差

0.0045302 0.0018826 標準偏差

0.0030793 0.0017419 標準偏差

0.0012746 0.0007111

61

Page 62: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・モンテカルロ法による定積分

・方法-2:円周率を計算したときのように、多数のx軸、y軸での乱数(それぞれが0から1の一様乱数)が計算対象の関数で決まるある範囲に入っているかどうかを調べ、その比率から面積を計算する方法

下図は一例で、x、yの範囲はともに、0≦x≦1、0≦y≦1としている

x 62

Page 63: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・モンテカルロ法による定積分(方法-2) #Montecalro法-2

Area <- function(n) { #n:モンテカルロで乱数を用いる回数

count <- 0 #count:発生させた2次元乱数が面積計算に該当する個数

area <- 0 #area:面積計算結果

cols<-NULL #cols:2次元乱数の色付け

x <- NULL #x:乱数のx要素格納領域確保

y <- NULL #y:乱数のy要素格納領域確保

for(i in 1:n) { #i:1からnまで繰り返す

x[i]<- runif(1) #x[i]:i番目のx要素の一様乱数

y[i]<- runif(1) #y[i]:i番目のy要素の一様乱数

if(y[i]< (1-x[i]+x[i]^2-x[i]^3)){ #2次元乱数が面積計算の該当範囲内かどうかチェック

count <- count + 1 #該当範囲内ならcountを1増加させる

cols[i] <- "red" #その点を赤色にする

}

else{

cols[i] <-"blue" #そうでなければ、その点を青色にする

}

} #繰り返しを終わる

area <- count/n #count対nの比率を面積とし、areaに格納する

return_data <- area #戻り値をセットする

plot(x,y,col=cols,pch=20) #グラフをプロットする

return(return_data)

}

63

Page 64: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分(面積)の計算 計算結果

モンテカルロ(方法-2)実行の結果

試行 1,000回 平均 試行 5,000回 平均 試行 10,000回 平均 試行 50,000回 平均

1 0.5900000 1 0.5892000 1 0.5836000 1 0.5827000

2 0.5860000 2 0.5794000 2 0.5886000 2 0.5800600

3 0.5900000 3 0.5960000 3 0.5874000 3 0.5849000

4 0.5900000 4 0.5830000 4 0.5782000 4 0.5868800

5 0.5620000 0.5836000 5 0.5848000 0.5864800 5 0.5829000 0.5841400 5 0.5850400 0.5839160

6 0.5740000 6 0.5824000 6 0.5844000 6 0.5866000

7 0.6070000 7 0.5880000 7 0.5914000 7 0.5848000

8 0.5790000 8 0.5882000 8 0.5818000 8 0.5802600

9 0.5530000 9 0.5946000 9 0.5910000 9 0.5855600

10 0.5820000 0.5790000 10 0.5904000 0.5887200 10 0.5869000 0.5871000 10 0.5819000 0.5838240

11 0.5570000 11 0.5750000 11 0.5845000 11 0.5835600

12 0.5620000 12 0.5672000 12 0.5924000 12 0.5840600

13 0.5780000 13 0.5792000 13 0.5855000 13 0.5830000

14 0.5890000 14 0.5800000 14 0.5889000 14 0.5821600

15 0.6050000 0.5782000 15 0.5878000 0.5778400 15 0.5855000 0.5873600 15 0.5848000 0.5835160

平均 0.5802667 0.5802667 平均 0.5843467 0.5843467 平均 0.5862000 0.5862000 平均 0.5837520 0.5837520

標準偏差

0.0163028 0.0029143 標準偏差

0.0075511 0.0057452 標準偏差

0.0038879 0.0017887 標準偏差

0.0020690 0.0002095

64

Page 65: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・定積分の数式

変数がx1・・・xnと n変数の場合

モンテカルロ法を用いれば、積分不可能な多次元関数でも、定積分の計算(多重積分)が可能となる。(前述の方法-1)

参考URL:

www.xqw.okayama-u.ac.jp/files/5314/5464/0557/20152_15-2.pdf

nn

xx

xx

xx

xx

dxdxdxxxxfynn

n

2121 ),,,(max

min1

max11

min11

65

Page 66: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・定積分の数式

www.xqw.okayama-u.ac.jp/files/5314/5464/0557/20152_15-2.pdf

平均値の定理(モンテカルロ法、前述の方法-1)

2次元の場合

n次元の場合

66

N

i

i

b

a

xfN

f

fabdxxfI

1

)(1

)()(

N

i

ii

b

a

b

a

xxfN

f

fabdxdxxxfI

1

21

2

2121

),(1

)(),(

N

i

niii

n

n

b

a

b

an

xxxfN

f

fabdxdxdxxxxfI

1

21

2121

),...,,(1

)(...),...,,(...

Page 67: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・定積分の数式

www.xqw.okayama-u.ac.jp/files/5314/5464/0557/20152_15-2.pdf

n次元の場合

10次元の例題

67

N

i

niii

n

n

b

a

b

an

xxxfN

f

fabdxdxdxxxxfI

1

21

2121

),...,,(1

)(...),...,,(...

N

i

n

n

nn

nn

xxxN

f

fdxdxdxxxxfI

xxxxxxf

1

2

21

1

02

1

0121

2

2121

)...(1

)01(...),...,,(...

)...(),...,,(

答え 155/6≒25.83333

Page 68: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 前ページ10次元の例題(Rのソースコード)

#Montecalro法-1 多次元積分の例

Area <- function(n) {

area <- 0

cols<-NULL

x1 <- NULL

x2 <- NULL

x3 <- NULL

x4 <- NULL

x5 <- NULL

x6 <- NULL

x7 <- NULL

x8 <- NULL

x9 <- NULL

x10 <- NULL

y <- NULL

68

for(i in 1:n) {

x1[i]<- runif(1)

x2[i]<- runif(1)

x3[i]<- runif(1)

x4[i]<- runif(1)

x5[i]<- runif(1)

x6[i]<- runif(1)

x7[i]<- runif(1)

x8[i]<- runif(1)

x9[i]<- runif(1)

x10[i]<- runif(1)

y[i]<-

(x1[i]+x2[i]+x3[i]+x4[i]+x5[i]+x6[i]+x7[i]+x8[i]+x9[i]

+x10[i])^2

}

area <- mean(y)

return_data <- area

)

return(return_data)

}

Page 69: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

11.定積分の計算 ・モンテカルロシミュレーションの結果(10次元の例題)

69

試行回数 n=1,000 n=10,000 n=100,000 n=1,000,0001 25.6248600 25.6748600 25.8425100 25.82949002 26.0405800 25.8597100 25.8686100 25.84223003 25.8321100 25.8918300 25.7867700 25.81765004 25.8335800 25.7459100 25.7735100 25.82570005 25.6376200 25.9322800 25.8169600 25.84170006 25.2788100 25.8532500 25.8511800 25.84033007 25.7658700 25.8971200 25.8778300 25.83851008 25.7890600 25.9021900 25.8073900 25.84187009 25.6495800 25.8345900 25.8965400 25.822830010 25.5349300 25.9168500 25.8355600 25.834190011 25.7766800 25.6810300 25.7899800 25.847990012 26.1795900 25.7811100 25.8860000 25.846960013 26.1250300 25.7766800 25.8365700 25.837350014 25.7803700 25.7469800 25.7858900 25.827490015 26.0479400 25.8463300 25.8264400 25.8304900

平均 25.7931073 25.8227147 25.8321160 25.8349853標準偏差 0.2381948 0.0836300 0.0389644 0.0090466

Page 70: シミュレーション モンテカルロ法 (検討中) - ISEMシミュレーション(1) モンテカルロ法 2018/6/26, 2018/7/4 株式会社アイエスイーエム

シミュレーション

モンテカルロ法 1.本日の概要

2.本日の到達目標

3.工学的問題(数理的問題)の解き方

4.工学的問題の例

5.シミュレーションとは

6.モンテカルロ法とは

7.乱数とは

8.シミュレーション用言語R

9.円周率とは

10.円周率の計算、 Rの使い方(基本)

11.定積分の計算

70

終わり