Files
JavaScript/Maths/test/EulerMethod.manual-test.js
Carlos Rafael eb36e2de62 merge: Format codebase with standard.js (#989)
* Auto-update DIRECTORY.md

* fix: some redundancy according to standard javascript library

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
2022-04-21 11:38:38 +05:30

67 lines
1.8 KiB
JavaScript

import { eulerFull } from '../EulerMethod'
function plotLine (label, points, width, height) {
// utility function to plot the results
// container needed to control the size of the canvas
const container = document.createElement('div')
container.style.width = width + 'px'
container.style.height = height + 'px'
document.body.append(container)
// the canvas for plotting
const canvas = document.createElement('canvas')
container.append(canvas)
// Chart-class from chartjs
const chart = new Chart(canvas, { // eslint-disable-line
type: 'scatter',
data: {
datasets: [{
label,
data: points,
showLine: true,
fill: false,
tension: 0,
borderColor: 'black'
}]
},
options: {
maintainAspectRatio: false,
responsive: true
}
})
}
function exampleEquation1 (x, y) {
return x
}
// example from https://en.wikipedia.org/wiki/Euler_method
function exampleEquation2 (x, y) {
return y
}
// example from https://www.geeksforgeeks.org/euler-method-solving-differential-equation/
function exampleEquation3 (x, y) {
return x + y + x * y
}
// plot the results if the script is executed in a browser with a window-object
if (typeof window !== 'undefined') {
const points1 = eulerFull(0, 4, 0.1, 0, exampleEquation1)
const points2 = eulerFull(0, 4, 0.1, 1, exampleEquation2)
const points3 = eulerFull(0, 0.1, 0.025, 1, exampleEquation3)
const script = document.createElement('script')
// using chartjs
script.src = 'https://www.chartjs.org/dist/2.9.4/Chart.min.js'
script.onload = function () {
plotLine('example 1: dy/dx = x', points1, 600, 400)
plotLine('example 2: dy/dx = y', points2, 600, 400)
plotLine('example 3: dy/dx = x + y + x * y', points3, 600, 400)
}
document.body.append(script)
}