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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
unittk501st
記事: 11
登録日時: 13年前

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

#1

投稿記事 by unittk501st » 12年前

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;
}

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

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

#2

投稿記事 by box » 12年前

unittk501st さんが書きました:

コード:

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

コード:

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

# インデントの付け方の勉強もする方がいいと思います。
最後に編集したユーザー box on 2012年10月01日(月) 15:59 [ 編集 1 回目 ]
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

unittk501st
記事: 11
登録日時: 13年前

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

#3

投稿記事 by unittk501st » 12年前

例えば、実行すると

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

と出てきます。

unittk501st
記事: 11
登録日時: 13年前

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

#4

投稿記事 by unittk501st » 12年前

%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;
}

閉鎖

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