参考文献: [1] 河西朝雄, 改訂C言語によるはじめてのアルゴリズム入門, 技術評論社, 1992.
01 \varepsilon=0. 01 )以内にしたい場合, 1 − 2 exp ( − π N ⋅ 0. 0 1 2 12) ≥ 0. 9 1-2\exp\left(-\frac{\pi N\cdot 0. モンテカルロ法 円周率 考え方. 01^2}{12}\right)\geq 0. 9 ならよいので, N ≒ 1. 1 × 1 0 5 N\fallingdotseq 1. 1\times 10^5 回くらい必要になります。 誤差 %におさえるために10万個も点を打つなんてやってられないですね。 ※Chernoffの不等式については, Chernoff bounds, and some applications が詳しいです。ここでは,上記の文献の Corollary 5 を使いました。 「多分うまくいくけど失敗する可能性もあるよ〜」というアルゴリズムで納得しないといけないのは少し気持ち悪いですが,そのぶん応用範囲が広いです。 ◎ 確率・統計分野の記事一覧
5 y <- rnorm(100000, 0, 0. 5 for(i in 1:length(x)){ sahen[i] <- x[i]^2 + y[i]^2 # 左辺値の算出 return(myCount)} と、ただ関数化しただけに過ぎません。コピペです。 これを、例えば10回やりますと… > for(i in 1:10) print(myPaiFunc() * 4 / 100000) [1] 3. 13628 [1] 3. 15008 [1] 3. 14324 [1] 3. 12944 [1] 3. 14888 [1] 3. 13476 [1] 3. 14156 [1] 3. 14692 [1] 3. 14652 [1] 3. 1384 さて、100回ループさせてベクトルに放り込んで平均値出しますか。 myPaiVec <- c() for(i in 1:100) myPaiVec[i] <- myPaiFunc() * 4 / 100000 mean(myPaiVec) で、結果は… > mean(myPaiVec) [1] 3. 141426 うーん、イマイチですね…。 あ。 アルゴリズムがタコだった(やっぱり…)。 の、 if(sahen[i] < 0. 25) myCount <- myCount + 1 # 判定とカウント ここです。 これだと、円周上の点は弾かれてしまいます。ですので、 if(sahen[i] <= 0. 25) myCount <- myCount + 1 # 判定とカウント と直します。 [1] 3. モンテカルロ法による円周率の計算など. 141119 また誤差が大きくなってしまった…。 …あんまり関係ありませんでしたね…。 といっても、誤差値 |3. 141593 - 3. 141119| = 0. 000474 と、かなり小さい(と思いたい…)ので、まあこんなものとしましょう。 当然ですけど、ここまでに書いたコードは、実行するたび計算結果は異なります。 最後に、今回のコードの最終形を貼り付けておきます。 --ここから-- x <- seq(-0. 5, length=1000) par(new=T); plot(x, yP, xlim=c(-0. 5)) myCount * 4 / length(xRect) if(sahen[i] <= 0. 25) myCount <- myCount + 1 # 判定とカウント} for(i in 1:10) print(myPaiFunc() * 4 / 100000) pi --ここまで-- うわ…きったねえコーディング…。 でもまあ、このコードを延々とCtrl+R 押下で図形の描画とπの計算、両方やってくれます。 各種パラメータは適宜変えて下さい。 以上!
5なので、 (0. 5)^2π = 0. 25π この値を、4倍すればπになります。 以上が、戦略となります。 実はこれがちょっと面倒くさかったりするので、章立てしました。 円の関数は x^2 + y^2 = r^2 (ピタゴラスの定理より) これをyについて変形すると、 y^2 = r^2 - x^2 y = ±√(r^2 - x^2) となります。 直径は1とする、と2. で述べました。 ですので、半径は0. 5です。 つまり、上式は y = ±√(0. 25 - x^2) これをRで書くと myCircleFuncPlus <- function(x) return(sqrt(0. 25 - x^2)) myCircleFuncMinus <- function(x) return(-sqrt(0. 25 - x^2)) という2つの関数になります。 論より証拠、実際に走らせてみます。 実際のコードは、まず x <- c(-0. 5, -0. 4, -0. 3, -0. 2, -0. 1, 0. 0, 0. 2, 0. 3, 0. 4, 0. 5) yP <- myCircleFuncPlus(x) yM <- myCircleFuncMinus(x) plot(x, yP, xlim=c(-0. 5, 0. 5), ylim=c(-0. モンテカルロ法 円周率 python. 5)); par(new=T); plot(x, yM, xlim=c(-0. 5)) とやってみます。結果は以下のようになります。 …まあ、11点程度じゃあこんなもんですね。 そこで、点数を増やします。 単に、xの要素数を増やすだけです。以下のようなベクトルにします。 x <- seq(-0. 5, length=10000) 大分円らしくなってきましたね。 (つなぎ目が気になる、という方は、plot関数のオプションに、type="l" を加えて下さい) これで、円が描けたもの、とします。 4. Rによる実装 さて、次はモンテカルロ法を実装します。 実装に当たって、細かいコーディングの話もしていきます。 まず、乱数を発生させます。 といっても、何でも良い、という訳ではなく、 ・一様分布であること ・0. 5 > |x, y| であること この2つの条件を満たさなければなりません。 (絶対値については、剰余を取れば良いでしょう) そのために、 xRect <- rnorm(1000, 0, 0.
新年、あけましておめでとうございます。 今年も「りょうとのITブログ」をよろしくお願いします。 さて、新年1回目のエントリは、「プログラミングについて」です。 久々ですね。 しかも言語はR! 果たしてどれだけの需要があるのか?そんなものはガン無視です。 能書きはこれくらいにして、本題に入ります。 やることは、タイトルにありますように、 「モンテカルロ法で円周率を計算」 です。 「モンテカルロ法とは?」「どうやって円周率を計算するのか?」 といった事にも触れます。 本エントリの大筋は、 1. モンテカルロ法とは 2. モンテカルロ法で円周率を計算するアルゴリズムについて 3. Rで円を描画 4. Rによる実装及び計算結果 5.
モンテカルロ法は、乱数を使う計算手法の一つです。ここでは、円周率の近似値をモンテカルロ法で求めてみます。 一辺\(2r\)の正方形の中にぴったり入る半径\(r\)の円を考えます (下図)。この正方形の中に、ランダムに点を打っていきます。 とてもたくさんの点を打つと 、ある領域に入った点の数は、その領域の面積に比例するはずなので、 \[ \frac{円の中に入った点の数}{打った点の総数} \approx \frac{\pi r^2}{(2r)^2} = \frac{\pi}{4} \] が成り立ちます。つまり、左辺の分子・分母に示した点の数を数えて4倍すれば、円周率の近似値が計算できるのです。 以下のシミュレーションをやってみましょう。そのとき次のことを確認してみてください: 点の数を増やすと円周率の正しい値 (3. 14159... ) に近づいていく 同じ点の数でも、円周率の近似値がばらつく
本記事は旧「楽天モバイル(MVNO)」に関する記事であり、2020年4月8日スタートのキャリアサービス「楽天モバイル(MNO)」では提供されません。 楽天モバイル加入時にスマホを同時に購入した場合、「端末補償オプション」という端末交換(リフレッシュ品)サービスがあります。 では、楽天モバイルから購入せずに、今使っているスマホや自分で調達したスマホを使いたい場合、端末の保証サービスはあるのでしょうか?製品の保証期間(ほぼ1年間)が切れた場合は?
利用回数や負担金額などが変わったよ! 現サービス「端末補償」と新サービス「スマホ交換保証」の比較表 7月31日までの既存サービス(※2) 8月1日以降の新サービス サービス名 スマホ交換保証 加入条件 回線契約+端末購入時 端末購入時(機種変更含む) サービスご利用可能回数 2回/年 3回/年 サービス内容 修理可能 修理金額24, 000円まで無償で対応 上限を超えた場合は同一機種・同一カラーの新品同等端末に交換 同一機種・同一カラーの新品同等端末に交換 (負担金:4, 000円~7, 000円) 同一機種・同一カラーの新品同等端末に交換 (負担金:6, 000円) 修理不可 故障端末と同価格帯の新機種を、機種変更価格の20%で購入可能 受付窓口 楽天モバイルショップ(※4)、Web 電話 楽天モバイルショップ(※4)、Web、電話 所要時間目安 2~3週間で修理完了 1~2日で交換機お届け 0~1日で交換機お届け 「スマホ交換保証」サービスの特徴と申込手順 新サービスの「スマホ交換保証」について紹介していくよ!
楽天モバイル加入時 楽天モバイルのSIMカードを利用し通話・通信を行っている端末が自然故障、破損・全損、水没した際に、無償修理または低価格にて有償交換いたします。(※ 保証対象となる端末や保証の内容の詳細はこちら でご確認ください) iPhone、iPad は、弊社指定の正規修理サービス店舗に持ち込んで修理が可能です。 SIMのみをお申し込みの際にご加入いただけます。 ※ SIMと端末を同時にご購入・お申し込みの方は「 スマホ交換保証 」をご利用ください。 万が一のトラブルでも安心! メーカーによる補償では対象外となることが多い「自損」や「水濡れ」による故障もカバー! 故障 急に電源が入らなくなった! 画面がフリーズしてしまった! 水濡れ トイレに落としてしまった! 台所の流しに落としてしまった! 落下・破損 机から落としてしまった! 衝突した拍子に落としてしまった!