###前提・実現したいこと
xxxの0から2までの定積分を求めるプログラムを台形の面積で近似して求めたいです。
###発生している問題・エラーメッセージ
n=1,ans=8.000000
n=2,ans=5.000000
n=3,ans=0.000000
n=4,ans=0.000000
以下ansが全て0になってしまいます。
どうしてansが0になってしまうのかが分かりません。また、どのように解決すればいいのか分かりません。
###該当のソースコード
#include <stdio.h>
//f(x):関数
//a:積分範囲の下限値
//b:積分範囲の上限値
//n:台形の分割数
//x1:分割した台形の左端のx座標
//x2:分割した台形の右端のx座標
//h:分割した台形の高さ
//ans:求める値
#define f(x) xxx
#define a 0
#define b 2
float traArea(float y1,float y2,float h){ //台形の面積を求める関数のプロトタイプ宣言
return (y1+y2)*h/2;
}
int main(){
int n,i; //i,nは整数なのでint型で宣言する
float h,x1,x2,ans; //x1,x2,y1,y2,ansは小数になるのでfloat型で宣言する
printf("何分割しますか?"); //分割する台形の個数を指定する
scanf("%d",&n); //キーボードから入力
h=(b-a)/n;
ans=0.0;
for(i=0;i<n;i++){ x1=a+i*h; //i個目の台形の左端のx座標 x2=x1+h; //i個目の台形の右端のy座標 ans+=traArea(f(x1),f(x2), h); //i個目の台形の面積を(i-1)個目までの台形の面積の総和に加える } printf("求める積分値は%fです。",ans); return 0;
}
###試したこと
どうしてn=3以降ansが0になってしまうのかさっぱり分かりません。
###補足情報(言語/FW/ツール等のバージョンなど)
C言語、XcodeのVersion7.3で実行しました。
回答5件
あなたの回答
tips
プレビュー