お願いします

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tarou

お願いします

#1

投稿記事 by tarou » 14年前

f(x)=exp(-x2/2)/(2π)1/2


・この関数がどのようなグラフなのか

・この関数は x=0 で最大となるが、その最大値の半分の値になる x の値を求めなさい。

・この関数を-1から1、-2から2、-3から3の間で積分し、その値を答えなさい。

解き方がまったく分かりません
よろしくお願いします

non
記事: 1097
登録日時: 14年前

Re: お願いします

#2

投稿記事 by non » 14年前

tarou さんが書きました:f(x)=exp(-x2/2)/(2π)1/2
この式は意味がわかりません。
乗算の部分は *をつけてください。
-x2/2 ってのは何でしょう?

(2π)1/2
の部分もどう判断してよいのかわからない。

で、仮に式がわかったとして、微分や積分のやり方を知りたいのですか?
non

tarou

Re: お願いします

#3

投稿記事 by tarou » 14年前

すいません
私もよくわからなくて

多分そういことだとおもうんですけど・・・課題でてたのでよくわからなくて・・・

式がわからないといった感じです

tarou

Re: お願いします

#4

投稿記事 by tarou » 14年前

追伸

/ はそのまま書いてあったのでスイマセンよくわかりません、
* はつけてなかったです
f(x)=exp*(-x*x/2)/(-2π)*2分の一
よくわからないんですが、こうだとおもいます(2分の一打ち方わかりません)

tarou

Re: お願いします

#5

投稿記事 by tarou » 14年前

一応式はあるんですけど書き換えがよくわからなくいです><
何回もカキコんでしまってすいません
よろしくお願いします

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

extern double dif();

int main()
{
double xa, xb, x, dx, y, dy;
int i;
static int nloop = 10; /* number of steps */

xa = -1.0e+1.0; /* x_minimum */
xb = -2.0e+2.0; /* x_maximum */

dx = (xb - xa) / ((double) nloop); /* step size of integration */

y = ((double) 0);
x = xa + 0.5 * dx;

/* main part */
for(i = 0;i < nloop;i++)
{
dy = dif(x);
y += (dy * dx);

x += dx;
}

printf("The answer is %e \n", y);

exit(0);
}

double dif(double x)
{
/* an equation to be integrated */
double a;

a =exp(x * x /2)/(2* \pi) * 1/2 ;

return a;
}

アバター
さかまき
記事: 92
登録日時: 14年前

Re: お願いします

#6

投稿記事 by さかまき » 14年前

>式がわからないといった感じです
http://detail.chiebukuro.yahoo.co.jp/qa ... 1466599879
こちらの人は式はわかっているみたい。
でも
a =exp(x * x /2)/(2* \pi) * 1/2 ;
とは違うので、別の問題かもしれませんね。

tarou

Re: お願いします

#7

投稿記事 by tarou » 14年前

さかまきs

これ多分まったく同じもんだいです
私の書き方が間違っているのかも・・・

non
記事: 1097
登録日時: 14年前

Re: お願いします

#8

投稿記事 by non » 14年前

仮に同じ問題なら、
f(x)=(exp(-x^2/2)/(2*pi))^(1/2)
なのでしょうか?
もし、そうなら、グラフは添付のようになります。
添付ファイル
無題.png
non

tarou

Re: お願いします

#9

投稿記事 by tarou » 14年前

グラフこのようになるんですね・・いきなり間違っていました><

これで次はどうすればいいんですか?
公式もうえのやり方で解けますか?

アバター
さかまき
記事: 92
登録日時: 14年前

Re: お願いします

#10

投稿記事 by さかまき » 14年前

同じ人だと思ったけど、別人さんでしたか。
だとすれば、
問題文 f(x)=exp(-x2/2)/(2π)1/2
を出題した先生がおかしい。
「式が意味不明なので解けません」が正解。

#同じ学校だからでしょうか、「><」を文末につけるのが流行りなのですか?><

non
記事: 1097
登録日時: 14年前

Re: お願いします

#11

投稿記事 by non » 14年前

あっちのハンドルネームはkyouto_univでしたが、まさか京都大学ってことはないよね。

式がわからないって書いてあったから、書いたのに他に何が必要なの?
>これで次はどうすればいいんですか?
>公式もうえのやり方で解けますか?
大学生の質問だとは思えない。
数学的にx=0のf(0)を求めて、それを1/2にし、そのときの解を求める。
後は、定積分でしょ。
non

tarou

Re: お願いします

#12

投稿記事 by tarou » 14年前

あちらの方と私同じ人じゃないんでしりませんが・・・

学部が理系じゃないのでさっぱりなんですよね
上のプログラムでやっているんですがコンパイルしてもエラーがでてしまいます

hidden

Re: お願いします

#13

投稿記事 by hidden » 14年前

やる気があるならフォーラムルールをまず読んだらどうでしょうか。
誰も答えてくれなくなりますよ

non
記事: 1097
登録日時: 14年前

Re: お願いします

#14

投稿記事 by non » 14年前

あっちの人の問題をよく見たらルートの範囲が違ってた。
f(x)=exp(-x^2/2)/(2*pi)^(1/2)
だね。
グラフは、見た目はあまり変わらないけど、このようになります。
添付ファイル
無題.png
無題.png (39.09 KiB) 閲覧数: 5755 回
non

アバター
さかまき
記事: 92
登録日時: 14年前

Re: お願いします

#15

投稿記事 by さかまき » 14年前

>上のプログラムでやっているんですがコンパイルしてもエラーがでてしまいます

>xa = -1.0e+1.0; /* x_minimum */
>xb = -2.0e+2.0; /* x_maximum */

xa = -1.0e+1; /* x_minimum */
xb = -2.0e+2; /* x_maximum */
にしないとダメです。
この場合、x_maximum < x_minimum なのは別問題ですが。

もう一つ、
a =exp(x * x /2)/(2* \pi) * 1/2 ;
の中の「\pi」 はいけませんね。
加えてpi は未定義となりますので
double pi = 3.14159265359;
とか
#define pi 3.14159265359
とかしておかないとエラーになります。


ところで、上のプログラムとやらは
何をしようとしているのかはご存知でしょうか?

アバター
GRAM
記事: 164
登録日時: 14年前
住所: 大阪

Re: お願いします

#16

投稿記事 by GRAM » 14年前

どっからどう見ても正規分布だと思うのですが。
ガウス分布、確率密度関数、この辺でググったら幸せになれると思いますよ。

何をやってるかですか?
ただの区分求積だと思いますね。

アバター
tk-xleader
記事: 158
登録日時: 14年前
連絡を取る:

Re: お願いします

#17

投稿記事 by tk-xleader » 14年前

とりあえず2問目と3問目について数学的なヒント、というよりも2問目はもはや答えか…

2問目は方程式の問題なので、xを少しずつ動かして、最も近い値を解とでもしてしまうか、もしくはニュートン法を使うのがいいと思います。
3問目は定積分の問題ですが、申し訳ないのですが、どうしてもf(x)の不定積分が求まりませんでした。そこで、f(x)のグラフを短冊みたいに無限に細かく切って、その1本1本の面積(無限に切っているので長方形とみなしても問題はないはず。)の和を求めるという方法をとりました。
そのため、定積分の最終的な答えがΣの極限の形になっています。
添付ファイル
answer.png
answer.png (30.83 KiB) 閲覧数: 5615 回

アバター
GRAM
記事: 164
登録日時: 14年前
住所: 大阪

Re: お願いします

#18

投稿記事 by GRAM » 14年前

tkmakwins15 さんが書きました:どうしてもf(x)の不定積分が求まりませんでした。
ガウス関数の積分は0→∞の範囲でしたらうまくいくんですけどね。まんまガウス積分ですけど・・・

D(t) = { (x,y) | x^2 + y^2 ≦ t^2, x≧0, y ≧ 0 }
E(t) = { (x,y)| 0≦x≦t, 0≦y≦t }

D(t) ⊂ E(t) ⊂ D( (√2)*t ) より

∬[ D(t) ] { e^-(x^2+y^2) } dxdy ≦ ∬[ E(t) ] { e^-(x^2+y^2) } dxdy ≦ ∬[ D( (√2)*t ) ] { e^-(x^2+y^2) } dxdy

ここで極座標形式 x = rcosΘ、 y = rsinΘ を考えるとヤコビアン ∂(x,y)/∂(r,Θ) = rより
∬[ D(t) ] { e^-(x^2+y^2) } dxdy
= ∫[0→π/2] dΘ ∫[0→t] {e^(-r^2)} rdr
= π{1- e^(-t^2) }/4
→π/4 (t→∞)

∬[ E(t) ] { e^-(x^2+y^2) } dxdy = ( ∫[0→∞] e^(-x^2)dx )^2 だから
∫[-∞→∞] e^(-x^2)dx
=2*∫[0→∞] e^(-x^2)dx
→ √π

だから質問者さんの奴は
X = x/√2 で置き換えて√2dX = dx だから
全部積分すると
「1」になるんですね。なんと美しいかな・・・

ちなみに本題ですが
「標準正規分布表」という便利なものを使えばプログラムに頼らずとも正確な答えを導出できますよ(3番)
まぁちょっとしたことするには使えますね。

閉鎖

“C言語何でも質問掲示板” へ戻る