偏差値の値がマイナスになってしまいます
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: 標準偏差がマイナスになってしまいます
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
この部分ですが、2乗して平方根をとっても同じ値になりますよね。 (sigmaは負にはならないはずなので)
とするべきでしょう。
さらに、書式が%20.19fとなっているので、小数点以下が19桁出力されてしまいます。
32.696804のように表示するには、%.6fとするといいでしょう。
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
この部分ですが、2乗して平方根をとっても同じ値になりますよね。 (sigmaは負にはならないはずなので)
とするべきでしょう。
さらに、書式が%20.19fとなっているので、小数点以下が19桁出力されてしまいます。
32.696804のように表示するには、%.6fとするといいでしょう。
オフトピック
他の回答者さんたちへ
この質問者さんのコードでは、[i]が適切に使われています。
掲示板の不親切設計により、終了タグが無くても斜体タグとして扱われ、隠れてしまいます。
本来のコードを確認するには、引用ボタンを押しましょう。
この質問者さんのコードでは、[i]が適切に使われています。
掲示板の不親切設計により、終了タグが無くても斜体タグとして扱われ、隠れてしまいます。
本来のコードを確認するには、引用ボタンを押しましょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 標準偏差がマイナスになってしまいます
ご指摘ありがとうございます。このように直してみたのですが出力結果は
0番目のデータの偏差値は-549.400599
1番目のデータの偏差値は-548.200598
2番目のデータの偏差値は-547.000597
3番目のデータの偏差値は-545.800596
のようになってしまいます。おそらく標準偏差を求める段階でミスしていると思うのですがどうすればよいのかわからない状態です。
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: 標準偏差がマイナスになってしまいます
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。