diff --git a/contents/forward_euler_method/code/javascript/euler.js b/contents/forward_euler_method/code/javascript/euler.js new file mode 100644 index 000000000..286393365 --- /dev/null +++ b/contents/forward_euler_method/code/javascript/euler.js @@ -0,0 +1,35 @@ +function solveEuler(timeStep, n){ + const result = []; + if (n != 0) { + result[0] = 1; + for (let i = 1; i < n; ++i) { + result[i] = result[i-1] - 3 * result[i-1] * timeStep; + } + } + return result; +} + +function checkResult(result, threshold, timeStep) { + let approx = true; + for (let i = 0; i < result.length; ++i) { + const solution = Math.exp(-3 * i * timeStep); + if (Math.abs(result[i] - solution) > threshold) { + console.log(result[i] + " " + solution); + approx = false; + } + } + return approx; +} + +const timeStep = 0.01; +const n = 100; +const threshold = 0.01; + +const result = solveEuler(timeStep, n) +const approx = checkResult(result, threshold, timeStep) + +if (approx) { + console.log("All values within threshold"); +} else { + console.log("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 0a95c0b60..5492b11ba 100644 --- a/contents/forward_euler_method/forward_euler_method.md +++ b/contents/forward_euler_method/forward_euler_method.md @@ -126,6 +126,8 @@ Full code for the visualization follows: [import, lang:"fortran"](code/fortran/euler.f90) {% sample lang="go" %} [import, lang:"go"](code/golang/euler.go) +{% sample lang="js" %} +[import, lang:"javascript"](code/javascript/euler.js) {% endmethod %}