Working version
Just copy the paste and you will get the same result as your original method.
public static void main(String[] args) { int a = 1, b = 10, step = 1000; double delta = 1.0 * (b - a) / step; double sum = integrate(a, b, step, 0, 0, 0, delta); double test = working(a, b, step); System.out.println("Integral is " + sum); System.out.println("Integral is " + test); }
Working recursive version:
public static double integrate(double x, int b, int steps, int i, double sum, double f, double delta) { f = 0.5 * x * x + 3 * x + 5; if (i < steps) { x = x + delta; double fr = 0.5 * x * x + 3 * x + 5; double area = f * delta + 0.5 * (fr - f) * delta; return integrate(x, b, steps, i + 1, sum + area, fr, delta); } return sum; }
Source iterative method
public static double working(int a, int b, int steps) { double sum = 0; double delta = 1.0 * (b - a) / steps; double x = a; double f = 0.5 * x * x + 3 * x + 5; for (int i = 0; i < steps; i++) { x = x + delta; double fr = 0.5 * x * x + 3 * x + 5; double area = f * delta + 0.5 * (fr - f) * delta; sum += area; f = fr; } return sum; }
source share