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..c9cbcccb3 --- /dev/null +++ b/contents/forward_euler_method/code/javascript/euler.js @@ -0,0 +1,31 @@ +function forwardEuler(timeStep, n) { + const arr = [1]; + for (let i = 1; i <= n; i++) { + arr[i] = arr[i - 1] - 3 * arr[i - 1] * timeStep; + } + return arr; +} + +function checkEuler(arr, timeStep, threshold) { + let isApprox = true; + arr.forEach((_value, i) => { + const solution = Math.exp(-3 * timeStep * i); + + if (Math.abs(arr[i] - solution) > threshold) { + console.log(arr[i], solution); + isApprox = false; + } + }); + return isApprox; +} + +function main() { + const timeStep = 0.01; + const threshold = 0.01; + const n = 100; + const eulerResult = forwardEuler(timeStep, n); + const checkResult = checkEuler(eulerResult, timeStep, threshold); + console.log(checkResult); +} + +main(); diff --git a/contents/forward_euler_method/forward_euler_method.md b/contents/forward_euler_method/forward_euler_method.md index 5ed5425fb..7e185f9a9 100644 --- a/contents/forward_euler_method/forward_euler_method.md +++ b/contents/forward_euler_method/forward_euler_method.md @@ -122,6 +122,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="js" %} +[import, lang:"javascript"](code/javascript/euler.js) {% sample lang="f90" %} [import, lang:"fortran"](code/fortran/euler.f90) {% sample lang="go" %}