#include #include // ======================================================================= // 以下、積分内容の設定 // ======================================================================= // 被積分関数 (積分対象の関数) double f(double x) { return x * cos(x); } const double A = 0.0; // 積分区間の下端 (x軸上の左端) const double B = 40.0; // 積分区間の上端 (y軸上の左端) const int N = 10000; // 数値積分における区間分割数 (刻み数) // ※ C/C++ の int の最大値は、環境によっては意外と小さいため要注意です。 // 必要に応じて long などを使ってください。 // ======================================================================= // 以下、データ出力関連の設定 // ======================================================================= const int PRINT_POINTS = 1000; // 出力する座標点の数 (グラフのプロット点数) const int PRINT_INTERVAL = N / PRINT_POINTS; // [自動設定] ループ内での出力周期 // ※ 実際の点数は、最終値を別途出力するため、上記から1点だけ多くなります。 // また、N が PRINT_POINTS で割り切れない場合、点数は多少増減します。 // ======================================================================= // 以下、積分の値を数値的に求める処理 // ======================================================================= int main() { double delta = (B - A) / N; // 足し上げる微小区間の幅 (刻み幅) double value = 0.0; // この変数に積分値を足し上げていく // 積分区間をN分割した微小区間を、左(下端)から右(上端)へ順に辿るループ for(int i=0; i