From 5a4ba553af931786b57beb8b5e5faf6dc1ae893b Mon Sep 17 00:00:00 2001 From: Simon O'Shea <55282932+osheas1atwit@users.noreply.github.com> Date: Mon, 17 Feb 2020 16:29:03 -0500 Subject: [PATCH] Added files via upload Integration Calculator v1.0 --- Integration/bin/Integrate.class | Bin 0 -> 5245 bytes Integration/src/Integrate.java | 171 ++++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+) create mode 100644 Integration/bin/Integrate.class create mode 100644 Integration/src/Integrate.java diff --git a/Integration/bin/Integrate.class b/Integration/bin/Integrate.class new file mode 100644 index 0000000000000000000000000000000000000000..836c07c288d83760ba96d30fba1c9758d98ad495 GIT binary patch literal 5245 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 Y_8}D9g^1wo-4VPa_k164UIYH}KfqILVE_OC literal 0 HcmV?d00001 diff --git a/Integration/src/Integrate.java b/Integration/src/Integrate.java new file mode 100644 index 0000000..5eac9f1 --- /dev/null +++ b/Integration/src/Integrate.java @@ -0,0 +1,171 @@ +/** + * @author Simon O'Shea + */ +import java.text.DecimalFormat; +import java.util.InputMismatchException; +import java.util.NoSuchElementException; +import java.util.Scanner; +public class Integrate { + +public static double functionValue(double A, double B, double C, double D, double E, double F, double x) { + + double value = 0; + + value = (A * Math.pow(x, 5)) + (B * Math.pow(x, 4)) + (C * Math.pow(x, 3)) + + (D * (Math.pow(x, 2)) + (E * x) + F); + + return value; + +} + + +public static double antiDerivative(double A, double B, double C, double D, double E, double F, double a, double b) { + + A = A / 6.0; B = B / 5.0; C = C / 4.0; D = D / 3.0; E = E / 2.0; + + double first = (A * Math.pow(a, 6)) + (B * Math.pow(a, 5)) + (C * Math.pow(a, 4)) + (D * Math.pow(a, 3)) + + (E * Math.pow(a, 2)) + (F * a); + + double last = (A * Math.pow(b, 6)) + (B * Math.pow(b, 5)) + (C * Math.pow(b, 4)) + (D * Math.pow(b, 3)) + + (E * Math.pow(b, 2)) + (F * b); + + + + return last - first; + +} + + +public static double midpointRule(double A, double B, double C, double D, double E, double F, double startInterval, double endInterval, double numInterval) { + + double sum = 0, temp; + double width = (endInterval - startInterval) / numInterval; + double start = startInterval + (width / 2.0); + + for(double i = start; i <= endInterval; i = i + width) { + + temp = functionValue(A, B, C, D, E, F, i); + sum += temp; + + } + + return sum * width; + +} + + +public static double trapezoidRule(double A, double B, double C, double D, double E, double F, double startInterval, double endInterval, double numInterval) { + + double sum = 0, b1, b2; + double width = (endInterval - startInterval) / numInterval; + + for(double i = startInterval; i < endInterval; i = i + width) { + + + + b1 = functionValue(A, B, C, D, E, F, i); + b2 = functionValue(A, B, C, D, E, F, (i + width)); + + + sum += (width * ((b1 + b2) / 2.0)); + + } + + return sum; + +} + + +public static double simpsonsRule(double A, double B, double C, double D, double E, double F, double startInterval, double endInterval, double numInterval) { + + double mid = midpointRule(A, B, C, D, E, F, startInterval, endInterval, numInterval); + double trap = trapezoidRule(A, B, C, D, E, F, startInterval, endInterval, numInterval); + + return ((2.0 * mid) + trap) / 3.0; + +} + + +public static String percentError(double actual, double estimate) { + + double error = (estimate - actual) / actual; + + if(error == 0) + return "none"; + + return String.format("%.9f %%", error); + +} + + +public static void main(String[] args) { + Scanner input = new Scanner(System.in); + DecimalFormat formatter = new DecimalFormat("#,###.00"); + + try { + System.out.println("Please enter the \"a\" bound of integration: "); + double a = input.nextDouble(); + + + System.out.println("Please enter the \"b\" bound of integration: "); + double b = input.nextDouble(); + + if(b < a) { + System.out.println("Error: \"a\" must be less than \"b\""); + System.exit(0); + } + + System.out.println("Please enter the number of sub-intervals: "); + int n = input.nextInt(); + + if(n <= 0) { + System.out.println("The amount of sub-intervals must be greater than or equal to 0."); + System.exit(0); + } + + System.out.println("Please enter 6 values: "); + double A = input.nextDouble(); + double B = input.nextDouble(); + double C = input.nextDouble(); + double D = input.nextDouble(); + double E = input.nextDouble(); + double F = input.nextDouble(); + input.close(); + + System.out.printf("%n%n%nFunction being integrated: %.2fx^5 + %.2fx^4 + %.2fx^3 + %.2fx^2 + %.2fx + %.2f%n%n", A, B, C, D, E, F); + + Double actual = antiDerivative(A, B, C, D, E, F, a, b); + double midpoint = midpointRule(A, B, C, D, E, F, a, b, n); + double trapezoid = trapezoidRule(A, B, C, D, E, F, a, b, n); + double simpsons = simpsonsRule(A, B, C, D, E, F, a, b, n); + + + System.out.printf("-> The exact value (found by using the Fundamental Theorem of Calculus): %s // error: %s%n%n", + formatter.format(actual), percentError(actual, actual)); + + System.out.printf("-> The estimated value (found by using the Midpoint Reimann Sum method): %s // error: %s%n%n", + formatter.format(midpoint), percentError(actual, midpoint)); + + System.out.printf("-> The estimated value (found by using the Trapezoidal Reimann Sum method): %s // error: %s%n%n", + formatter.format(trapezoid), percentError(actual, trapezoid)); + + System.out.printf("-> The estimated value (found by using the Simpsons Reimann Sum method): %s // error: %s%n%n", + formatter.format(simpsons), percentError(actual, simpsons)); + } + + catch(InputMismatchException x) { + + System.out.println("Error: Invalid input type"); + System.exit(0); + + } + + catch(NoSuchElementException y) { + + System.out.println("Error: No input"); + System.exit(0); + + } + +} +}