ページ 1 / 1
標準偏差がマイナスになってしまいます
Posted: 2021年6月10日(木) 12:30
by kwzi
偏差値の値がマイナスになってしまいます
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;
}
Re: 標準偏差がマイナスになってしまいます
Posted: 2021年6月10日(木) 19:10
by みけCAT
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
コード:
m=sqrt(sigma*sigma);
この部分ですが、2乗して平方根をとっても同じ値になりますよね。 (sigmaは負にはならないはずなので)
とするべきでしょう。
さらに、書式が%20.19fとなっているので、小数点以下が19桁出力されてしまいます。
32.696804のように表示するには、%.6fとするといいでしょう。
オフトピック
他の回答者さんたちへ
この質問者さんのコードでは、[i]が適切に使われています。
掲示板の不親切設計により、終了タグが無くても斜体タグとして扱われ、隠れてしまいます。
本来のコードを確認するには、引用ボタンを押しましょう。
Re: 標準偏差がマイナスになってしまいます
Posted: 2021年6月10日(木) 19:27
by kwzi
ご指摘ありがとうございます。このように直してみたのですが出力結果は
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;
}
Re: 標準偏差がマイナスになってしまいます
Posted: 2021年6月10日(木) 19:31
by kwzi
補足失礼いたします。
4番目のデータの偏差値は-544.600595
が抜けてしまっていました。
Re: 標準偏差がマイナスになってしまいます
Posted: 2021年6月10日(木) 19:46
by かんち
ご指摘ありがとうございました!!!できました!!
Re: 標準偏差がマイナスになってしまいます
Posted: 2021年6月11日(金) 01:55
by box
こんなところにセミコロンがあって、本当に大丈夫ですか?
自分にはそうは思えません。
Re: 標準偏差がマイナスになってしまいます
Posted: 2021年6月11日(金) 02:00
by box
ああ空文とみなすだけか…。でも何か気持ち悪い…。