前提・実現したいこと
台形公式で数値積分するプログラムを作り、 f(x) = 2x
の定積分を計算するプログラムを書きました。
入力する値は同じなのに、結果が違う理由を教えてください。
結果
xa=0 xb=1 n=10 面積はs=0.900715 xa=0 xb=1 n=100 面積はs=-23810.031250 // nを10倍にしたらわけわからん数になった =========================================================== // 同じ数を入力したのに結果が違う xa=0 xb=1 n=10 面積はs=-4589064437499105902592.000000 xa=0 xb=1 n=10 面積はs=-7767783362265088.000000 xa=0 xb=1 n=10 面積はs=-256205056.000000
該当のソースコード
c
1#include <stdio.h> 2#include <math.h> 3float f(float x); 4int main(void) 5{ 6 float xi,h,s,xa,xb,n; 7 int i; 8 printf("xa="); 9 scanf("%f",& xa); 10 printf("xb="); 11 scanf("%f",& xb); 12 printf("n="); 13 scanf("%f",& n); 14 15 h = (xb-xa)/n; 16 17 for(i=0; i<n; i++) 18 { 19 // i番目の台形の左値のxi値 20 xi = xa + i * h; 21 22 // 台形の面積 23 s += ( f(xi)+f(xi+h) ) * h / 2; 24 } 25 26 printf("面積はs=%f\n", s); 27 28 return 0; 29} 30 31float f(float x){ 32 float y; 33 y = 2*x; 34 35 return (y); 36} 37
以上、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー