/// <summary> /// 数値積分。(台形公式を使用。) /// </summary> /// <param name="f">被積分関数</param> /// <param name="range">積分範囲</param> /// <returns>数値積分結果</returns> public static Function Integral(Function f, Range range) { Variable x = range.variable; ValueType min = range.min; ValueType max = range.max; ValueType step = range.step; Function g = f.Bind(new Function.Parameter(x, min)); g += f.Bind(new Function.Parameter(x, max)); g /= 2; for (; min < max; min += step) { g += f.Bind(new Function.Parameter(x, min)); } g *= step; return(g); }
/// <summary> /// 数値積分。(台形公式を使用。) /// </summary> /// <param name="f">被積分関数</param> /// <param name="range">積分範囲</param> /// <returns>数値積分結果</returns> public static Function Integral(Function f, Range range) { Variable x = range.variable; ValueType min = range.min; ValueType max = range.max; ValueType step = range.step; Function g = f.Bind(new Function.Parameter(x, min)); g += f.Bind(new Function.Parameter(x, max)); g /= 2; for(; min < max; min += step) g += f.Bind(new Function.Parameter(x, min)); g *= step; return g; }