以下のプログラムを参考にして自分でプログラムを作りたいんですが
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
double f(double x){
returnx;
}
main(){
int m; 発生した乱数の総数
int n; 発生した乱数の個数
int k; 積分図形に落ちた回数
double a; 積分区間の始点
double b; 積分区間の終点
double c; 矩形の高さ
double x; 乱数発生したx
double y; 乱数発生したy
double s; 積分の近似値
printf("");scanf("%d",&m);
printf("");scanf("%lf",&a);
printf("");scanf("%lf",&b);
printf("");scanf("%lf",&c);
k=n=0;
srand((unsigned)time(NULL));
while(++n<m){
x=a+(b-a)*(double)rand()/RAND_MAX;
y=c*(double)rand()/RAND_MAX;
if(y<f(x))_k++;
}
s=(double)k/n*c*(b-a);
printf("s=%f\n",s);
return 0;
}
s=(double)k/n*c*(b-a);
この部分がどういたってこうなったのかがわかりません
説明をお願いします
説明お願いします
Re: 説明お願いします
何をするためのプログラムを作ろうと思っているのですか?
Re: 説明お願いします
上記のプログラム自体がデタラメなんですが...。
いったい何処から持ってきたんですか?
いったい何処から持ってきたんですか?
Re: 説明お願いします
およそ手本にならないプログラムですので、
ネットで他のモンテカルロ法のサンプルを探したほうがいいと思います。
ネットで他のモンテカルロ法のサンプルを探したほうがいいと思います。
-
猿
Re: 説明お願いします
およそ手本にならないプログラムですので、
>>それでOKだったみたいなんですが…
ネットで他のモンテカルロ法のサンプルを探したほうがいいと思います。
>>時間もあまりありませんし、出来たらさっきの部分のみどうしてああなるのか
教えていただきたいのですが…
>>それでOKだったみたいなんですが…
ネットで他のモンテカルロ法のサンプルを探したほうがいいと思います。
>>時間もあまりありませんし、出来たらさっきの部分のみどうしてああなるのか
教えていただきたいのですが…
Re: 説明お願いします
命賭けてもいいですが動きません。猿 さんが書きました: >>それでOKだったみたいなんですが…
その前に、モンテカルロ法は理解されていますか?猿 さんが書きました: >>時間もあまりありませんし、出来たらさっきの部分のみどうしてああなるのか
教えていただきたいのですが…
-
猿
Re: 説明お願いします
命賭けてもいいですが動きません。
>>すいません
上の
return x;
と
if(y<f(x)) k++;
がこうでした
その前に、モンテカルロ法は理解されていますか?
>>完全には理解していません…
>>すいません
上の
return x;
と
if(y<f(x)) k++;
がこうでした
その前に、モンテカルロ法は理解されていますか?
>>完全には理解していません…
Re: 説明お願いします
この前「孫策」さんが質問していたプログラムとほとんど同じですね。
検索したら、きっと前のスレが見つかりますよ。
>s=(double)k/n*c*(b-a);
cは長方形の縦の長さ、(b-a)は横の長さなので、C*(b-a)は長方形の面積。
kはy<f(x)の点の個数で、nは長方形内の点の数なので、k/nは長方形の中で、f(x)より小さい割合。
したがって、sは面積になります。
検索したら、きっと前のスレが見つかりますよ。
>s=(double)k/n*c*(b-a);
cは長方形の縦の長さ、(b-a)は横の長さなので、C*(b-a)は長方形の面積。
kはy<f(x)の点の個数で、nは長方形内の点の数なので、k/nは長方形の中で、f(x)より小さい割合。
したがって、sは面積になります。
non
-
猿
Re: 説明お願いします
この前「孫策」さんが質問していたプログラムとほとんど同じですね。
検索したら、きっと前のスレが見つかりますよ。
>>本当ですか?
探してみます
>s=(double)k/n*c*(b-a);
cは長方形の縦の長さ、(b-a)は横の長さなので、C*(b-a)は長方形の面積。
kはy<f(x)の点の個数で、nは長方形内の点の数なので、k/nは長方形の中で、f(x)より小さい割合。
したがって、sは面積になります。
>>わかりやすい説明ありがとうございます
検索したら、きっと前のスレが見つかりますよ。
>>本当ですか?
探してみます
>s=(double)k/n*c*(b-a);
cは長方形の縦の長さ、(b-a)は横の長さなので、C*(b-a)は長方形の面積。
kはy<f(x)の点の個数で、nは長方形内の点の数なので、k/nは長方形の中で、f(x)より小さい割合。
したがって、sは面積になります。
>>わかりやすい説明ありがとうございます