From 57fa6b05bb169fb3f768e6ea2c98047eab300932 Mon Sep 17 00:00:00 2001 From: CDsigma Date: Wed, 19 Sep 2018 18:49:09 -0700 Subject: [PATCH] Added Forward Euler in Java --- .../forward_euler_method/code/java/Euler.java | 52 +++++++++++++++++++ .../forward_euler_method.md | 2 + 2 files changed, 54 insertions(+) create mode 100644 contents/forward_euler_method/code/java/Euler.java diff --git a/contents/forward_euler_method/code/java/Euler.java b/contents/forward_euler_method/code/java/Euler.java new file mode 100644 index 000000000..7c9340c02 --- /dev/null +++ b/contents/forward_euler_method/code/java/Euler.java @@ -0,0 +1,52 @@ +public class ForwardEuler { + + public static double[] append(double[] oldArray, double newItem) { + double[] newArray = new double[oldArray.length + 1]; + + for(int i = 0; i < oldArray.length; i++) { + newArray[i] = oldArray[i]; + } + newArray[newArray.length - 1] = newItem; + + return newArray; +} + + public static double[] solveEuler(double timeStep, int n) { + double[] result = {1}; + + for(int i = 0; i < n; i++) { + result = append(result, result[i] - 3 * result[i] * timeStep); + } + + return result; + } + + public static boolean checkResult(double[] result, double threshold, double timeStep) { + boolean isApprox = true; + + for(int i = 0; i < result.length; i++) { + double solution = Math.pow(Math.E, -3 * i * timeStep); + + if(Math.abs(result[i] - solution) > threshold) { + isApprox = false; + } + } + + return isApprox; +} + + public static void main(String[] args) { + double timeStep = 0.01; + int n = 100; + double threshold = 0.01; + + double[] result = solveEuler(timeStep, n); + boolean isApprox = checkResult(result, threshold, timeStep); + + if(isApprox) { + System.out.print("All values within threshold"); + } else { + System.out.print("Value(s) not in threshold"); + } + } +} diff --git a/contents/forward_euler_method/forward_euler_method.md b/contents/forward_euler_method/forward_euler_method.md index 25210e1d1..789f79e1e 100644 --- a/contents/forward_euler_method/forward_euler_method.md +++ b/contents/forward_euler_method/forward_euler_method.md @@ -121,6 +121,8 @@ Full code for the visualization follows: [import, lang:"matlab"](code/matlab/euler.m) {% sample lang="swift" %} [import, lang:"swift"](code/swift/euler.swift) +{% sample lang="java" %} +[import, lang:"java"](code/java/Euler.java) {% endmethod %}