プログラミングの問題を解いてほしいです よろしくお願いいたします。
プログラミングの問題を解いてほしいです よろしくお願いいたします。 次のプログラムでは、台形法の計算処理を「TrapezoidalRule」関数に集約し、被積分関数を「func_y」に、刻み数や積分範囲を「main」関数に定義するようにしているため、「TrapezoidalRule」関数は利用する度に修正する必要がなく、再利用性が高い。「TrapezoidalRule」関数の中身(①の部分)を作成せよ。また、このプログラムの出力(積分結果)は幾らか? #include <stdio.h> #include <math.h> double func_y( double ); //被積分関数 double TrapezoidalRule( int, double, double ); //台形法数値積分 int main( int argc, char **argv ) { int N = 30; //刻み数 double xa = 0.0, xb = 3.0; //積分範囲 double s = TrapezoidalRule( N, xa, xb ); //台形法呼び出し printf( "ANS = %8.4lf\n", s ); //積分結果出力 return 0; } double func_y( double x) { //被積分関数 x^4+3x の定義 return pow(x, 4.0) + 3.0 * x; } double TrapezoidalRule( int N, double xa, double xb ){ //台形法数値積分 ... ... //① (要作成) }
ベストアンサー
double TrapezoidalRule( int N, double xa, double xb ){ //台形法数値積分 double eps = (xb - xa) / N; double sum = (func_y (xa) + func_y (xb)) / 2; for (int i = 1;i < N;i++) { sum += func_y (xa + i * eps); } return sum * eps; } ------------ ANS = 62.1900
質問者からのお礼コメント
本当にありがとうございます。助かりました。
お礼日時:7/4 15:19