★★ Java の宿題ここで答えます Part 64 ★★
at TECH
803:デフォルトの名無しさん
08/05/07 03:58:39
>>801
> y=sinx の (0,0)から(1,2/π)までの面積を求めよ
ってのはy=sin(x)とy=0に挟まれた面積を求めよってことだよね?
sin(1)≠2/πだけれど積分範囲は0から1でいいの?
もしかして、(1,2/π)は(π/2,1)のつもりで積分範囲は0からπ/2かもと思って、
コメントアウトしている部分にその場合のコードも入れておいた。
import java.util.Random;
public class MonteCarlo {
public static void main(String[] args) {
Random r = new Random();
int N = 1000000;
int n = 0;
// 積分範囲が[0,1]の時 解析解=1-cos(1)
for (int i = N; i > 0; i--) if (Math.sin(r.nextDouble()) > r.nextDouble()) n++;
System.out.println((double)n / N); // モンテカルロ法
System.out.println(1 - Math.cos(1)); // 解析解
// 積分範囲が[0,π/2]の時 解析解=1
/*double p2 = Math.PI / 2;
n = 0;
for (int i = N; i > 0; i--) if (Math.sin(r.nextDouble() * p2) > r.nextDouble()) n++;
System.out.println((double)n / N * p2);*/
}
}
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4341日前に更新/380 KB
担当:undef