計算科学☆演習 II プチテスト
樋口さぶろお
1配布
: 2014-05-16 Fri更新
: Time-stamp: ”2014-05-22 Thu 13:20 JST hig”プチテスト参加案内
1.
指定された用紙に解答しよう
.2.
過程も答えよう. 最終的な答えが正しいことがわかるような過程を記そう.
3.
問題文に現れない記号を使うときは
,定義を記そう
.1
以下は
,確率変数
Xのサンプルである
.−2,0,2,2,2,2
1.
標本平均値を求めよう
. 2.標本不偏分散を求めよう.
3.
標本標準偏差を求めよう
.2
以下は
,確率変数
Xのサンプルである
.−2,0,2,2,2,2
1.
標本期待値
X3を求めよう
.2.
条件
X×eX ≤1が成立する確率を推定しよう.
3
確率変数
Rは
•
値
R =−2を確率
25
で
•
値
R = +2を確率
35
で とる
.1.
母平均値
E(R)を求めよう
. 2.母分散
V(R)を求めよう.
3.
母標準偏差
σRを求めよう
.1Copyright c⃝2014 Saburo HIGUCHI. All rights reserved.
, http://hig3.net(講義のページもここからたどれます),
へや
:1号館
5階
5021
4
確率変数
Rは,
•
値
R =−2を確率
25
で
•
値
R = +2を確率
35
で とる
.1.
母期待値
E(R3−R)を求めよう
.2.
条件
R3+R2+ 1 <0が満たされる確率を求めよう.
5
ランダムウォークの時刻
tの座標
X(t)の次の数列を考える.
X(t+ 1) =X(t) +R(t+ 1), X(0) = 0.
ただし,
R(t+ 1)は独立で同じ分布に従う確率変数で,
•
値
R(t+ 1) =−2を確率
13
で
•
値
R(t+ 1) = +4を確率
23
で
の値をとる
.このとき
E(R(t+ 1)) = +2,V(R(t+ 1)) = 8である
. 1.時刻
T = 100における座標
X(T)の母平均値を求めよう
. 2.時刻
T = 100における座標
X(T)の母標準偏差を求めよう.
3.
時刻
T = 2における
(X(T))2の母期待値を求めよう
.6
過程不要
標本抽出と推定について
,正しい文の番号をすべて答えよう
. 1.母平均値は, 標本平均値の推定値である.
2.
標本平均値は
,一般に
,標本抽出のたびに変化する
3.
標本
(不偏
)分散は
,母分散の推定値であり
,両者は必ずしも等しいわけではない
4.標本平均値は, 一般に, 母平均値に等しい
5.
母分布が与えられたとき
,標本のサイズ
(サンプルサイズ
)は定まっている
7
次の
2つのプログラムは
,サイコロを振ったときに目の数
Rが
R2 ≤ 3が成立する確 率を確率シミュレーションで推定するプログラムを書こうとして, 微妙に間違ったもの である
.シードを適当に選んで与えたとき
.2
2.
誤プログラム
2はどのような動作をするか
確率…で
(または
,必ず
),…
(に近い値
)を出力する
,などのように答えよう
.ソースコード
1:誤プログラム
11 # i n c l u d e < s t d i o . h >
2 # i n c l u d e < s t d l i b . h >
3
4 int g e t r a n d o m ();
5
6 int m a i n (){
7 int n ;
8 int n m a x = 6 0 0 0 0 ;
9 int s e e d ;
10 int r ;
11 int c o u n t =0;
12
13 s c a n f ( " % d " ,& s e e d );
14 for ( n =0; n < n m a x ; n + + ) {
15 s r a n d ( s e e d );/∗
位 置 違 う
∗/16 r = g e t r a n d o m ();
17 if ( r * r < = 3 ) {
18 c o u n t ++;
19 }
20 p r i n t f ;/∗
略
c o u n t÷
n m a x出 力
∗/21 }
22 r e t u r n 0;
23 }
24 int g e t r a n d o m ();
25 /∗ r a n d ( )
を 使 っ て
1 , . . , 6を
1 / 6で 返 す
∗/26 r e t u r n
そ れ な り の 定 義
;27 }
ソースコード
2:誤プログラム
21 # i n c l u d e < s t d i o . h >
2 # i n c l u d e < s t d l i b . h >
3
4 int g e t r a n d o m ();
5
6 int m a i n (){
7 int n ;
8 int n m a x = 6 0 0 0 0 ;
9 int s e e d ;
10 int r ;
11 int c o u n t =0;
12
13 s c a n f ( " % d " ,& s e e d );
14 s r a n d ( s e e d ); /∗
位 置 違 う
∗/15 for ( n =0; n < n m a x ; n + + ) {
16 /∗ r=g e t r a n d o m ( ) ; ∗/
17 if ( g e t r a n d o m ()* g e t r a n d o m () <=3){
18 c o u n t ++;
19 }
20 p r i n t f ;/∗
略
c o u n t÷
n m a x出 力
∗/21 }
22 r e t u r n 0;
23 }
24 int g e t r a n d o m ();
25 /∗ r a n d ( )
を 使 っ て
1 , . . , 6を
1 / 6で 返 す
∗/26 r e t u r n
そ れ な り の 定 義
;27 }
8
過程不要
次の数列で定まるランダムウォークの座標
X(t)を考える.
R(t+ 1)は独立同分布に 従う確率変数である
.X(t+ 1) =X(t) +R(t+ 1), X(0) = 5
X(T)
のサイズ
Nのサンプルを出力するプログラムを書きたい. ここで, seed の設定 は省いて書いている
.次の文を入れるべき空欄を
, a – gから選ぼう
.1. x=5;
2. x+=getrandom();
3. printf("%d\n",x);
4. t=0;t<tmax;t++
5. n=0;n<nmax;n++
3
1 d o u b l e g e t r a n d o m ();
2
3 int m a i n (){
4 int n m a x =
そ れ な り
; /∗サ ン プ ル サ イ ズ
N∗/5 int n ;
6 int t m a x =
そ れ な り
; /∗最 終 時 刻
T∗/7 int t ; /∗
時刻
∗/8 int x ; /∗
ランダムウォーカーの座標
∗/9
10 a
11 for ( b ){
12 c
13 for ( d ){
14 e
15 }
16 f
17 }
18 g
19 r e t u r n 0;
20 }
21
22 d o u b l e g e t r a n d o m (){
23 r e t u r n
そ れ な り の 定 義
; /∗確率変数
R∗/24 }
9
過程不要
確率変数
Xが
. X ×e−X > 2を満たす確率をサンプルサイズ
nmaxの標本を抽出し て, 推定された確率を出力するプログラムを完成させよう. 空欄 の中には, 0 行,1 行, ま たは複数行のコードを書くこと
.double getrandom()
が
Xを返す
(ランダムウォークではない
!)なお, seed の設定は省略しており, 空欄に書かなくてよい.
25 d o u b l e g e t r a n d o m ();
26
27 int m a i n (){
28 int n m a x =
そ れ な り
; /∗サ ン プ ル サ イ ズ
∗/29 int n ;
30 1 /∗
必 要 な ら 追 加 の 変 数 宣 言 も こ こ で
. ∗/31 for ( n =0; n < n m a x ; n + + ) {
32 2
33 }
34 3 /∗
推定された確率の出力はここでやって
∗/35 r e t u r n 0;
36 }
37
38 d o u b l e g e t r a n d o m (){
39 r e t u r n
何 か そ れ な り の 定 義
;40 }
4
計算科学☆演習 II プチテスト略解
樋口さぶろお
2配布
: 2014-05-16 Fri更新
: Time-stamp: ”2014-05-22 Thu 13:20 JST hig”これは, 一部の過程のみ記した略解です. プチテストで, 受講者はすべての過程を記す 必要があります
.返却答案で記法
•
×
N:NGワード
/アイデア
•
×ぷ
:過程なし
•
×か:考え方の誤り
•
×き
:記号の誤り
•
×け
:計算ミス
1
1. X = 16(−2 + 0 + 2 + 2 + 2 + 2) = 1.
2. s2X = 6−11((−2−1)2+ (0−1)2+ (2−1)2+ (2−1)2+ (2−1)2 + (2−1)2) = 145. 3. sX =
√14 5.
配点
1,2,3:各
5点
,計
15点
.分散の分母が
5である誤りは
3点
.2
1. X3 = 16((−2)3+ 03+ 03+ 23+ 23+ 23+ 23) = 4.
2. 1条件(X) = 16(1 + 1 + 0 + 0 + 0 + 0) = 13.
配点
1,2:各5点, 計
10点.
3
1. E(R) = 25 2. V(R) = 9625. 3. σR= 4√56.
配点
1,2,3:各
5点
,計
15点
.2Copyright c⃝ 2014 Saburo HIGUCHI. All rights reserved.
, http://hig3.net(講義のページもここからたどれます),
へや
:1号館
5階
502.4
1. E(R3−R) = E(R3)−E(R) = 85 − 25 = 65 2. 25 ·1 + 35 ·0 = 25.
配点
1,2:各5点, 計
10点.
5
1. 100·2 = 200.
2. √
100·8 = 20√ 2.
3. (13)2 ·(−2−2)2+ 2· 1323 ·(−2 + 4)2+ (23)2·(4 + 4)2 = 32.
配点
1,2,3:各
5点
,計
15点
.講評
1で, 母平均値って言ってるのに,
X(T) = · · ·って計算してる答案がけっこうあ りました
. Eの意味わかってる〜
?2
で
,母標準偏差って言ってるのに
V(E(T))求めて終わってる答案がけっこうありま した. 過去問題そんなのりだった〜?
3
で
, 2E(X(1)2)求めてる答案がけっこうありました
.素直に計算しようよ〜 独立同分 布の
Rによるランダムウォークの母平均値と母分散だけは特別にいい性質あるんだよ
. 3で
, (E(X(2)))2求めてる答案がけっこうありました
.素直に計算しようよ〜 もし確 率
1/2ずつで
R=±1だったら
,E(X(2)) = 0だけど
E(X(2))2 >0だからそんなの成り 立たないじゃん
.6
2,3
配点 各
1点, 計
5点.
7
正しくプログラムを書けば
,r= 1のときだけ成立するので
, 1個目の
0または
1/60000からだんだん増加していって,
nmax個目には
1/6 = 0.167に近い値が出力される.
1. for
ループの中で乱数が毎回
seedによってリセットされるので
,入力した
seedに応
じて最初に
1,2,3, . . . ,6のうち
1つが選ばれ
,毎回必ずその
rが使われる
.これが
r= 1だったときに限って条件は成立するので,
•
確率
5/6で
0,0,0, . . . ,0•
確率
1/6で
1/60000,2/60000,· · · ,60000/60000 = 1が出力される
. 6(1,1),(1,2),(1,3),(2,1),(3,1)
のときに限って条件は成立するので
, 5/36 = 0.139に近い値が出力される
.したがって
, 1個目の
0または
1/60000からだんだん増加 していって,
nmax個目には
0.139に近い値が表示される.
配点 各
5点
,計
10点
.出力される値と確率に触れず
,誤りであることのみを説明して いるものは
4点.
講評 授業でよくやっていたプログラムでは
, printfは
nに関する
loopの外において
,このプログラムでいう
nmax回目の出力
,すなわち確率の推定値だけを出力していたので した. 出力のその部分についてだけ述べるなら, 次のような解答になります. これも正解 にしています
.1. for
ループの中で乱数が毎回
seedによってリセットされるので
,入力した
seedに応
じて最初に
1,2,3, . . . ,6のうち
1つが選ばれ, 毎回必ずその
rが使われる. これが
r= 1だったときに限って条件は成立するので
,確率
5/6で
0.0,確率
1/6で
1.0が 出力される
.2.
サンプルのデータ
1つあたり
, getrandom()は
2回呼ばれる
.返り値が
(r1, r2) = (1,1),(1,2),(1,3),(2,1),(3,1)のときに限って条件は成立するので
, 5/36 = 0.139に近い値が出力される
.8
1. c 2. e 3. f 4. d 5. b
配点 各
1点
,計
5点
.9
1. double x; int count=0;
2. x=getrandom();
if(x*exp(-x)>2){ count++;}
3. printf("%f\n",(double)count/nmax);
配点 各
5点
,計
15点
. getrandom()が
doubleを返す場合は
,返り値を
doubleの変数 に記憶しなきゃいけないけど
,そういうケースはまだやってなかったので
,この点の誤り は減点してません.
7