ページ 11

C言語初心者 シグマ計算が正しく出ません。

Posted: 2012年10月01日(月) 15:45
by unittk501st
sin(x)の[a,b]での積分の近似値を計算する問題です。
エラーは出ませんが、明らかに違った値が出てきます。
以下のソースコードでおかしな点はありますか?
添削の程宜しくお願いします。

コード:

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

int main(void)
{
int n, i;
double a, b, temp, sum, w;

printf("input a, b and n: ");
scanf("%f,%f,%d", &a, &b, &n);

if (a > b){
	temp = a;
	a = b;
	b = temp;
}

i = 0;
sum = 0;
w = (b-a)/n;

for (i=0; i<n; i++){
	sum = sum + w*sin(a+w*i);
}

printf("integral of sin(x) on [%6.2f, %6.2f] = %6.2f", a, b, sum);

return 0;
}

Re: C言語初心者 シグマ計算が正しく出ません。

Posted: 2012年10月01日(月) 15:58
by box
unittk501st さんが書きました:

コード:

scanf("%f,%f,%d", &a, &b, &n);
ここを

コード:

    scanf("%lf%lf%d", &a, &b, &n);
こうしてみるとか。答えが正しくなるかどうかはわかりません。

# インデントの付け方の勉強もする方がいいと思います。

C言語初心者 シグマ計算が正しく出ません。

Posted: 2012年10月01日(月) 15:58
by unittk501st
例えば、実行すると

input a, b and n: 3.14,0.00,100
integral of sin(x) on [-92559604431991479000000000000000000000000000000000000000
000000.00, -92559592117431994000000000000000000000000000000000000000000000.00] =
74457113861422352000000000000000000000000000000000000.00続行するには何かキーを
押してください . . .

と出てきます。

Re: C言語初心者 シグマ計算が正しく出ません。

Posted: 2012年10月01日(月) 16:12
by unittk501st
%fを%lfにすることで解決できました。
ありがとうございました。

コード:

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

int main(void)
{
int n, i;
double a, b, temp, sum, w;

printf("input a, b and n: ");
scanf("%lf,%lf,%d", &a, &b, &n);

if (a > b){
	temp = a;
	a = b;
	b = temp;
}

i = 0;
sum = 0;
w = (b-a)/n;

for (i=0; i<n; i++){
	sum = sum + w*sin(a+w*i);
}

printf("integral of sin(x) on [%6.2f, %6.2f] = %6.2f", a, b, sum);

return 0;
}