42 lines
1021 B
C++
42 lines
1021 B
C++
//
|
|
// Created by dawsh on 2/8/24.
|
|
//
|
|
|
|
namespace J3ML::Algorithm
|
|
{
|
|
/// Implementations for a variety of Differential Equation Solving algorithms
|
|
namespace Solvers
|
|
{
|
|
|
|
// Consider a differential equation
|
|
// dy/dx = (x + y + xy)
|
|
float eq(float x, float y)
|
|
{
|
|
return (x + y + x*y);
|
|
}
|
|
|
|
// Accelleration = Velocity / Time
|
|
// Velocity = Position / Time
|
|
// Position = Vector3
|
|
|
|
//
|
|
|
|
float euler(float x0, float y, float h, float x)
|
|
{
|
|
float temp = -0.f;
|
|
// Iterating till the point at which we need approximation
|
|
while (x0 < x) {
|
|
temp = y;
|
|
y = y + h * eq(x0, y);
|
|
x0 = x0 + h;
|
|
}
|
|
return y;
|
|
}
|
|
|
|
class EulerMethodSolver {};
|
|
class SemiImplicitEulerMethodSolver {};
|
|
class GaussSeidelMethodSolver {};
|
|
class GradientDescentSolver {};
|
|
class VerletIntegrationSolver {};
|
|
}
|
|
} |