mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-06 09:28:26 +08:00
feat: Test running overhaul, switch to Prettier & reformat everything (#1407)
* chore: Switch to Node 20 + Vitest * chore: migrate to vitest mock functions * chore: code style (switch to prettier) * test: re-enable long-running test Seems the switch to Node 20 and Vitest has vastly improved the code's and / or the test's runtime! see #1193 * chore: code style * chore: fix failing tests * Updated Documentation in README.md * Update contribution guidelines to state usage of Prettier * fix: set prettier printWidth back to 80 * chore: apply updated code style automatically * fix: set prettier line endings to lf again * chore: apply updated code style automatically --------- Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
This commit is contained in:
@ -1,30 +1,36 @@
|
||||
/**
|
||||
* In mathematics and computational science, the Euler method (also called forward Euler method) is a first-order
|
||||
* numerical procedure for solving ordinary differential equations (ODEs) with a given initial value. It is the most
|
||||
* basic explicit method for numerical integration of ordinary differential equations. The method proceeds in a series
|
||||
* of steps. At each step the y-value is calculated by evaluating the differential equation at the previous step,
|
||||
* multiplying the result with the step-size and adding it to the last y-value: y_n+1 = y_n + stepSize * f(x_n, y_n).
|
||||
*
|
||||
* (description adapted from https://en.wikipedia.org/wiki/Euler_method)
|
||||
* @see https://www.geeksforgeeks.org/euler-method-solving-differential-equation/
|
||||
*/
|
||||
export function eulerStep (xCurrent, stepSize, yCurrent, differentialEquation) {
|
||||
// calculates the next y-value based on the current value of x, y and the stepSize
|
||||
return yCurrent + stepSize * differentialEquation(xCurrent, yCurrent)
|
||||
}
|
||||
|
||||
export function eulerFull (xStart, xEnd, stepSize, yStart, differentialEquation) {
|
||||
// loops through all the steps until xEnd is reached, adds a point for each step and then returns all the points
|
||||
const points = [{ x: xStart, y: yStart }]
|
||||
let yCurrent = yStart
|
||||
let xCurrent = xStart
|
||||
|
||||
while (xCurrent < xEnd) {
|
||||
// Euler method for next step
|
||||
yCurrent = eulerStep(xCurrent, stepSize, yCurrent, differentialEquation)
|
||||
xCurrent += stepSize
|
||||
points.push({ x: xCurrent, y: yCurrent })
|
||||
}
|
||||
|
||||
return points
|
||||
}
|
||||
/**
|
||||
* In mathematics and computational science, the Euler method (also called forward Euler method) is a first-order
|
||||
* numerical procedure for solving ordinary differential equations (ODEs) with a given initial value. It is the most
|
||||
* basic explicit method for numerical integration of ordinary differential equations. The method proceeds in a series
|
||||
* of steps. At each step the y-value is calculated by evaluating the differential equation at the previous step,
|
||||
* multiplying the result with the step-size and adding it to the last y-value: y_n+1 = y_n + stepSize * f(x_n, y_n).
|
||||
*
|
||||
* (description adapted from https://en.wikipedia.org/wiki/Euler_method)
|
||||
* @see https://www.geeksforgeeks.org/euler-method-solving-differential-equation/
|
||||
*/
|
||||
export function eulerStep(xCurrent, stepSize, yCurrent, differentialEquation) {
|
||||
// calculates the next y-value based on the current value of x, y and the stepSize
|
||||
return yCurrent + stepSize * differentialEquation(xCurrent, yCurrent)
|
||||
}
|
||||
|
||||
export function eulerFull(
|
||||
xStart,
|
||||
xEnd,
|
||||
stepSize,
|
||||
yStart,
|
||||
differentialEquation
|
||||
) {
|
||||
// loops through all the steps until xEnd is reached, adds a point for each step and then returns all the points
|
||||
const points = [{ x: xStart, y: yStart }]
|
||||
let yCurrent = yStart
|
||||
let xCurrent = xStart
|
||||
|
||||
while (xCurrent < xEnd) {
|
||||
// Euler method for next step
|
||||
yCurrent = eulerStep(xCurrent, stepSize, yCurrent, differentialEquation)
|
||||
xCurrent += stepSize
|
||||
points.push({ x: xCurrent, y: yCurrent })
|
||||
}
|
||||
|
||||
return points
|
||||
}
|
||||
|
Reference in New Issue
Block a user