C言語関係掲示板

過去ログ

No.1032 モンテカルロ法による面積の算出

[戻る] [ホームページ]
No.13203

歯が立ちません。
投稿者---ヘルプ(2004/03/16 15:01:38)


学校の課題で

座標平面を動く点P(x(t),y(t))の時刻tにおける座標が
 x(t)=cos(t+π/4)  (0≦t<2π)
 y(t)=cos(2t) (0≦t<2π)
で与えられているとし、この点の軌跡をCとする。
以下の問に対する解をC言語プログラムにより求めよ。
1)Cの概形を描け。
2)Cが囲む図形の面積を求めよ。(モンテカルロ法)

という問題なんですが、自分では全く歯が立たないため誰か教えてください。


No.13204

Re:歯が立ちません。
投稿者---isshi(2004/03/16 21:42:59)


時刻tといいながら単位がラジアンなのが謎ですが。。

どこまで理解できていて、何が分からないのか書かなければ答えようがありませんよ。
式の意味が理解できないのなら、プログラミング以前に数学の勉強をしましょう。。
モンテカルロ法については過去ログにもあるようです。


No.13207

Re:歯が立ちません。
投稿者---かずま(2004/03/17 02:29:32)


    int i, k;  char a[21][41];

    memset(a, ' ', sizeof a);
    for (i = 0; i < N1; i++) {
        double t = PI*2 * i / N1;
        double x = cos(t + PI/4);
        double y = cos(2 * t);
        a[(int)((y+1)*10+0.5)][(int)((x+1)*20+0.5)] = '*';
    }
    for (i = 20; i >= 0; i--) printf("%.41s\n", a[i]);

    srand(time(0));
    for (k = i = 0; i < N2; i++) {
        double x = rand() / (RAND_MAX + 1.0);
        double y = rand() / (RAND_MAX + 1.0);
        double t = acos(x) - PI/4;
        if (y < fabs(cos(2 * t))) k++;
    }
    printf("%f\n", k * 4.0 / N2);

t の分割数 N1 は、いくつが適当だと思いますか?
モンテカルロ法の試行回数 N2 は、いくつが適当だと思いますか?
このプログラムに必要なヘッダファイルは何だと思いますか?
このプログラムは正しいと思いますか?
このプログラムは参考になりますか?