Class FiniteDifference

java.lang.Object
org.episteme.core.mathematics.analysis.pde.FiniteDifference

public class FiniteDifference extends Object
Finite Difference Methods for solving Partial Differential Equations.

Discretizes PDEs on grid, approximates derivatives with differences. Handles: heat equation, wave equation, Poisson equation.

Since:
1.0
Author:
Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
  • Constructor Details

    • FiniteDifference

      public FiniteDifference()
  • Method Details

    • heatEquation1D

      public static Real[][] heatEquation1D(Function<Real,Real> initial, Real alpha, Real L, Real T, int nx, int nt)
      Solves 1D heat equation: ∂u/∂t = α ∂²u/∂x²

      Forward Euler (explicit) time stepping. Boundary conditions: u(0,t) = u(L,t) = 0

      Parameters:
      initial - initial condition u(x,0)
      alpha - thermal diffusivity
      L - domain length
      T - final time
      nx - number of spatial points
      nt - number of time steps
      Returns:
      solution u[time][space]
    • waveEquation1D

      public static Real[][] waveEquation1D(Function<Real,Real> initial, Function<Real,Real> initialVelocity, Real c, Real L, Real T, int nx, int nt)
      Solves 1D wave equation: ∂²u/∂t² = c² ∂²u/∂x²

      Explicit central differences in space and time.

      Parameters:
      initial - initial displacement u(x,0)
      initialVelocity - initial velocity ∂u/∂t(x,0)
      c - wave speed
      L - domain length
      T - final time
      nx - spatial points
      nt - time steps
      Returns:
      solution u[time][space]
    • poisson2D

      public static Real[][] poisson2D(Function<Real[],Real> source, int nx, int ny, Real lx, Real ly, int maxIter, Real tolerance)
      Solves 2D Poisson equation: ∇²u = f on rectangular domain.

      Uses Jacobi iteration (simple iterative solver). ∂²u/∂x² + ∂²u/∂y² = f

      Parameters:
      source - source term f(x,y)
      nx - , ny grid points in x, y
      lx - , ly domain size
      maxIter - max iterations
      tolerance - convergence tolerance
      Returns:
      solution u[x][y]