• 締切済み

面積計算のC言語のプログラムについてです。

 課題として以下の問いがでているのですが、わかりません。プログラムできる方教えてください。 「y=cos(x) : -π/2 < x < π/2 , pi=3.14159 の分布に従う乱数を生成し、その面積を計算せよ。」

みんなの回答

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.2

モンテカルロ法でしょ ? -π/2<x<π/2に従う乱数を発生させ、xiとする。 0<y<1.0に従う乱数を発生させ、yiとする。 sin(xi)<=yiの回数を全回数で割る。

hacchi-oshi
質問者

補足

はい、課題文を理解していただきありがとうございます。 大変図々しいのですが、コードなど詳しく教えていただきたいです。

  • CC_T
  • ベストアンサー率47% (1038/2201)
回答No.1

課題の文章が意味不明です。 y=cos(x): -π/2 < x < π/2 ってのは、COS曲線の山形の線部分ですよね。 この分布に従う「乱数」の面積? 乱数に面積なんてないですよね。 これは当該課題の全文なんですか?

関連するQ&A

  • プログラムを教えてください!

    レポートの質問です。 以下の問題のプログラムを作らなければいけないのですが、いろいろと調べてみてもまったくわかりません。 わかる方プログラム教えてください! 課題1 合同式法を用いて,区間[0,1] (区間[0,1)でも良い) の 一様乱数を100 万個生成し,以下を報告せよ.ただし,一様乱数の生成にはC 言語で自作したプログラムを用いること. (1a) 平均の数値計算結果 (1b) 標準偏差の数値計算結果 (1c) 一様乱数のヒストグラム.ヒストグラムは区間[0,1] を100 分割して 作成すること. 課題2 中心極限定理に基づく「間便法」を用いて,区間[0,1] (区 間[0,1)でも良い) の一様乱数から標準正規分布N(0,1)に従う正規乱数を100 万 個生成し,以下を報告せよ.ただし,正規乱数の生成にはC言語で自作したプ ログラムを用いること. (2a) 平均の数値計算結果 (2b) 標準偏差の数値計算結果 (2c) 正規乱数のヒストグラム.ヒストグラムは区間[-5, 5] を100 分割して 作成すること.

  • 任意の標準偏差で正規分布の乱数を発生させたい

    2次元の正規分布の乱数を発生させたいんですが、 調べたところ、 平均0、分散1の正規分布の乱数の発生方法アルゴリズムが以下のものになることがわかりました。 「Box-Maller法:区間(0,1)の2個の一様乱数x1,x2と2個の量y1,y2との間の変換 y1=sqrt(-2*ln(x1))*cos(2*Pi*x2) y2=sqrt(-2*ln(x1))*sin(2*Pi*x2)」 ここで、平均0、分散0.2の正規分布の乱数を発生させたいのですが、どうすればよいでしょうか? 単純にy1,y2に0.2を掛けるだけでもできますが、これは数学的に正しいのでしょうか?

  • 面積計算

    xy平面上の曲線C:y=sinx(0≦x≦π/2)上の点(θ、sinθ)における接線l、法線をmとする。ただし、0<x<π/2をみたすものとする。 Cとlおよびx軸とで囲まれる図形の面積をS1とし、Cとmおよびx軸とで囲まれる図形の面積をS2とする。S2-S1の取りえる値の範囲を求めよ。 計算したら、 S1:-(cosθ-1)^2/2cosθ  S2:θsinθ-θ^2/2cosθ S2-S1θ=(2sinθcosθ-θ^2cos^2θ+cos^2θ-2cosθ+1)/2cosθ というきたない感じになってしまったんですが、計算間違いでしょうか。もし、合ってるならこのあと、どう計算したらいいのでしょうか…。

  • C++言語について

    大学で研究室に配属された友達に勉強の相談をされました。 下の課題なのですが、どのようにプログラムすれば良いのでしょうか? 来年は、留年している僕の番なのでとても気になります。 丸投げで申し訳ないのですが、どなたかよろしくお願いいたします。 (1) 0から20の間の一様乱数を1000個作り、それをヒストグラムにする。 出来上がった分布の平均が10、分散が20÷√12になることを確認する。 (2) 平均値が10の指数関数分布exp(-ax)(0<x)になるように乱数を1000個作り、それをヒストグラムにする。 出来上がった分布の平均値が10に近いことを確認する。 (3) 平均値が5のpoisson分布になるように乱数を1000個作り、それをヒストグラムにする。 そのヒストグラムをpoisson分布関数、及びgauss分布でfitする。 (4) 平均値が10の指数関数分布exp(-ax)(0<x)になるように乱数からサンプルを1000個選び出し、その和を取りヒストグラムにする。 この操作を10000回繰り返す。 出来たヒストグラムをgauss分布関数でfitする。 僕にはもうサッパリ分かりません。。。

  • 簡単な乗除の計算のプログラムなのですが・・・

    簡単なプログラムなのですが学校の課題で出て分からなかったので質問します。 整数x,yがx=10、y=4の時、x*y/4とx/4*yの計算結果が異なる理由を述べなさい。 という問題です。 x/4*yのx/4の計算で2.5の小数点以下が切り捨てられて2となりそこにyを乗算したからという予想を立てましたがだめでした。 どうしてなのか教えてください。お願いします。 私は今年から大学でプログラミングを習い始めた初心者です。

  • C言語の最大値のプログラムが分かりません。

    y=x^3-9*x^2+15*x+10 の関数の最大値を求めるプログラム。 計算するxの範囲を0~6まで0.1間隔で計算しなさい。 このプログラムが分かりません。教えてください。

  • c言語

    c言語で写真の課題を出されたのですが自分のプログラムでは上手くいきません。どこが間違っているのか教えて欲しいです。 自分のプログラム #include<stdio.h> #include<math.h> int main(){ int i,j; double c,d,x,y,z; for(i=0;i<=360;i++){ c=10*cos(i*M_PI/180); d=10*sin(i*M_PI/180); if(c>=0 && d>=0){ for(j=0;j<=1000;j++){ x=0.001*j; y =x*d/c; z=1-x*x-(sqrt(x)+y)*(sqrt(x)+y); if(z<=0.0){break;} } } if(c<=0 && d>=0){ for(j=0;j<=1000;j++){ x=-0.001*j; y=x*d/c; z=1-x*x-(sqrt(-x)+y)*(sqrt(-x)+y); if(z<=0.0){break;} } } if(c<=0 && d<=0){ for(j=0;j<=1000;j++){ x=-0.001*j; y=x*d/c; z=1-x*x-(sqrt(-x)+y)*(sqrt(-x)+y); if(z<=0.0){break;} } } if(c>=0 && d<=0){ for(j=0;j<=1000;j++){ x=0.001*j; y=x*d/c; z=1-x*x-(sqrt(x)+y)*(sqrt(x)+y); if(z<=0.0){break;} } } printf("x=%lf y=%lf z=%lf\n",x,y,z); } return(0); }

  • 曲面の面積

    曲面S: cos(πx/2)+cos(πy/2)+cos(πz/2)=0 の面積を 0<=x<=1, 0<=y<=1 で求めたいと思います。 ∬zdxdy で計算しようとしましたが、積分の公式が分かりません。 すみませんがアドバイスをお願いします。 (文字が化けていたらごめんなさい。π:円周率、∬:二重積分記号です)

  • プログラム ファイル処理について

    プログラムの問題が解けなくて困っています。 visual C++ 2010 Express を使用しています。 (1)X,Yの範囲がそれぞれ-200から200の範囲で空間内に立体が書かれる ようにエクセルファイルにデータを入れたいのですが、その処理がうまくいきません。 (2)degreeの意味がわかりません。degree*PI(円周率)/180でradianなのですか? よろしくお願いします。 今、2次元平面上の座標値(x,y)に対し、(x2+y2)0.5を角度(degree) とした場合に、 下記の式によって定義されるポテンシャル値zの分布を考える z=30×(cos(√(x2+y2))+cos((3×√(x2+y2))) xとyの範囲を(-200<X<200)、(-200<Y<200)と設定してXとYの値を10ごとに増加させた場合のZの値を 以下のようなfor文を用いて計算し、 for(y=200.0;y>=-200.0;y=y-10.0){  for(x=-200.0;x<=200.0;x=x+10.0){  } } 同一のY座標値におけるZの値がカンマで区切られて並ぶテキストファイルを出力するプログラムを作成しなさい。 そのファイルをエクセルで開き(カンマ区切りで) 3次元グラフを表示させる. ヒント1: #include <math.h> を宣言することにより、数学関数 cos sin pow が使用可能となる。 ヒント2: sin cos の引数はラジアン単位で指定する必要があるため、円周率を用いて degree から radian を求めること

  • fortranのプログラムについて

    fortranでプログラムを作成する課題が出たのですが、やり方が全くわかりません。 何を使ってどういう順番で組めばよいか教えてください。 課題は以下のとおりです。 x^2+y^2<1を満たす領域の面積を、以下の方法で近似計算するプログラムを作成せよ。 はじめは、領域を0<x<1、0<y<1と設定し、x、y方向にそれぞれn等分に分割し、多数の正方形を用意する。 分割されたそれぞれの正方形の面積は、みな等しく1/n^2である。 各正方形の重心位置(xi,yj)は、 xi=1/2n+i/n i=0~n-1 yj=1/2n+j/n j=0~n-1 であらわされる。 個々の正方形について、その重心位置(xi,yj)が求めたい領域に含まれるかどうかを判断し、この総数から近似面積を求める。最後に、この値を4倍したもの(つまりx^2+y^2<1の近似面積)を出力することとする。 なお、i,j,nはinteger(8)で、x,y,求めたい面積等はreal(8)を用い、n=100000(nはread文で入力する形でよい)で計算することとする。 よろしくお願いします。