標準偏差がマイナスになってしまいます

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

標準偏差がマイナスになってしまいます

#1

投稿記事 by kwzi » 2年前

偏差値の値がマイナスになってしまいます
0~4番目までの偏差値を表示し0番目は32.696804のように表示していきたいです。どこが違うかのご指摘お願します。


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

int main(void)
{
int i,n=1000;
double x[n],barx,sigma,X=0.0,Y=0.0,m,a;
double hensa=0.0;
for(i=0;i<n;i++){
x=0.0001*(i+1);
}
for(i=0;i<n;i++){
X=X+x;
}
barx=X/n;
for(i=0;i<n;i++){
Y=Y+(x-barx)*(x-barx);
}
sigma=Y/n;
m=sqrt(sigma*sigma);
for(i=0;i<=4;i++){;
hensa=10*(x-barx)/m+50;
printf("%d番目のデータの偏差値は%20.19f\n",i,hensa);
}
return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 標準偏差がマイナスになってしまいます

#2

投稿記事 by みけCAT » 2年前

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。

コード:

	m=sqrt(sigma*sigma);
この部分ですが、2乗して平方根をとっても同じ値になりますよね。 (sigmaは負にはならないはずなので)

コード:

	m=sqrt(sigma);
とするべきでしょう。

さらに、書式が%20.19fとなっているので、小数点以下が19桁出力されてしまいます。
32.696804のように表示するには、%.6fとするといいでしょう。
オフトピック
他の回答者さんたちへ

この質問者さんのコードでは、[​i]が適切に使われています。
掲示板の不親切設計により、終了タグが無くても斜体タグとして扱われ、隠れてしまいます。
本来のコードを確認するには、引用ボタンを押しましょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

kwzi

Re: 標準偏差がマイナスになってしまいます

#3

投稿記事 by kwzi » 2年前

ご指摘ありがとうございます。このように直してみたのですが出力結果は
0番目のデータの偏差値は-549.400599
1番目のデータの偏差値は-548.200598
2番目のデータの偏差値は-547.000597
3番目のデータの偏差値は-545.800596
のようになってしまいます。おそらく標準偏差を求める段階でミスしていると思うのですがどうすればよいのかわからない状態です。

コード:

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

int main(void)
{
	int i,n=1000;
	double x[n],barx,sigma,X=0.0,Y=0.0,m,a;
	double hensa=0.0;
	for(i=0;i<n;i++){
		x[i]=0.0001*(i+1);
	}
	for(i=0;i<n;i++){
		X=X+x[i];
	}
	barx=X/n;
	for(i=0;i<n;i++){
		Y=Y+(x[i]-barx)*(x[i]-barx);
	}
	sigma=Y/n;
	m=sigma*sigma;
	a=sqrt(m);
	for(i=0;i<=4;i++){;
		hensa=10*(x[i]-barx)/a+50;
		printf("%d番目のデータの偏差値は%f\n",i,hensa);
	}
	return 0;
}

kwzi

Re: 標準偏差がマイナスになってしまいます

#4

投稿記事 by kwzi » 2年前

補足失礼いたします。
4番目のデータの偏差値は-544.600595
が抜けてしまっていました。

かんち
記事: 1
登録日時: 2年前

Re: 標準偏差がマイナスになってしまいます

#5

投稿記事 by かんち » 2年前

ご指摘ありがとうございました!!!できました!!

box
記事: 2002
登録日時: 13年前

Re: 標準偏差がマイナスになってしまいます

#6

投稿記事 by box » 2年前

コード:

for(i=0;i<=4;i++){;
こんなところにセミコロンがあって、本当に大丈夫ですか?
自分にはそうは思えません。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 13年前

Re: 標準偏差がマイナスになってしまいます

#7

投稿記事 by box » 2年前

ああ空文とみなすだけか…。でも何か気持ち悪い…。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

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