アクチュアリー採用問題の解答案(1)
前回
http://d.hatena.ne.jp/actuary_math/20100113
予告したとおり、アクチュアリー採用問題の解答案をつけていきます。
題材は id:actuary2 さんが、「アクチュアリー志望者のための就職活動攻略」
http://d.hatena.ne.jp/actuary2/
として纏められたものを使います。
問題用紙が回収される中ご自分の記憶を頼りにここまでのサイトを作り上げた id:actuary2 さんには本当に頭が下がります。
(注意点)
(a)問題文については、 id:actuary2 さんのサイトをご確認ください。こちらでは問題を転記しません。
(b)当然ですが、問題も解答案も公式なものではないので、自己責任でご利用ください。
(c)前も申し上げましたが上から(日付の最近のものから)解いていくつもりですが、「○○会社のを先に」というリクエストがあれば可能な限り対応いたします。
今回は
東京海上日動火災保険の試験問題
http://d.hatena.ne.jp/actuary2/20090501/1241205220
です。
概ね標準的な問題(問題文のなかった3番はそれなりの知識が必要なようなので難問かも知れませんが)だと思います。
ただ、この問題の2番は、次の理由から私が一連の問題の中で一番素晴らしいと思ったものです。
(a)(このブログの読者の大半の方には何の問題もないとは思いますが、)システム部門でなくても、簡単なプログラミングやSQL等は当然のごとく求められます。そういうメッセージを明確に打ち出している点
(b)この問題を出題するためには、それぞれのプログラム言語(ここでは4種類)を理解し、かつ他人の(手書きの)プログラムの正誤を判断するのですから、採点者に相当の力量が求められる点(私は、VBA(BASIC)はよく使いますが、その他のプログラミング言語としては、CとPascal(Delphi)とを昔少しかじった程度ですので採点者は務まりません。)
上記の理由で以下の答えはVB(A)とCでの解答例に止まっていることをご容赦下さい。
(解答案)
問題1
(1)
とおく。
なので、
また、
なので、
∴求める全微分は、
…(答)
(2)
被積分関数は領域内で非負なので、積分の順序を交換することが可能。
したがって、の順で積分
このとき領域はとなる。
求める積分値は、
ここで、
(は積分定数)
なので、
()
…(答)
(3)
(は単位行列)
は上記の解なので、
…(答)
(4)
サイクロイド
http://junko-k.com/jyoho/simulation/flash-cycloid.htm
の長さの導出問題
最初の接点をとし、を円が転がる方向の座標(転がる方向を正)、をそれとは垂直な向きの座標(最初中心がある方向を正)、を回転角とすると
とパラメーター(媒介変数)表示ができる。
求める長さは、
(∵半角の公式)
(∵で)
…(答)
(5)
まず、
(は定数)型の特解(特殊解)を求める。
つまり
より、
つまり
次にの一般解を求める。
特性方程式は、
での重根なので、
(は定数)
と書ける。
以上のことから元の方程式の一般解は、
(は定数)…(答)
(6)
(i)個が全て1,3,7,9のいずれか
…(答)
(ii)余事象は個の中に0,5を全く含まないことでその確率は
∴求める確率は、
…(答)
(iii)上記(i)(ii)が起こらない確率なので
…(答)
(iv)奇数になる確率は、個が全て奇数の確率で
∴5になる確率は
求める確率はからこれを引いて
…(答)
(7)
と変数変換するとであり、
の同時確率密度関数は、
の同時確率密度関数は、
つまり、
(a)のとき、
であり、
(b)のとき、
であり、
つまり、
…(答)
なお、独立な2つの一様分布の合成が三角分布
http://actuary.upthx.net/pukiwiki/index.php?1.1.1.3.7.%BB%B0%B3%D1%CA%AC%C9%DB%A4%C8%A5%B3%A1%BC%A5%B7%A1%BC%CA%AC%C9%DB#i9fe43c0
であることが分かっていれば、「結果からお出迎え」が可能
つまり、
の積率母関数は
∴
の積率母関数は、
一方
の確率密度関数とする確率変数の積率母関数は、
したがって、とは積率母関数が一致するので、同じ確率変数なので、
問題2
この問題のポイントはの高次の項から計算、つまり
とすれば効率的であるという点。
(例えば、
http://d.hatena.ne.jp/actuary_math/20080702
の3番参照)
それを踏まえて、
(1) VB(A)による解答例(ExcelのVBAでテスト済み)
Function T(x As Double, n As Integer) As Double Dim i As Integer T = 0 For i = n To 1 Step -1 T = (T + x) / i Next i T = T + 1 End Function
(2) Cによる解答例(Digital Mars C http://www.digitalmars.com/ でテスト済み)
double T(double x,int n){ int i; double tmp = 0.0; for (i = n; i >= 1 ; i--){ tmp = (tmp + x) / i; } return tmp + 1.0; }