Copyright (C) 2025, Shyamal Suhana Chandra
DDRKAM is a comprehensive framework for solving differential equations (both ODEs and PDEs) using:
- Runge-Kutta methods: RK3 (3rd order) and RK4 (4th order)
- Adams Methods: Multiple orders (1st, 2nd, 3rd, 4th, 5th order) with Bashforth predictor and Moulton corrector
- Hierarchical data-driven architecture (Transformer-inspired)
- PDE Solver: Heat, Wave, Advection, Burgers, Laplace, Poisson equations
- Real-Time Solvers: Streaming data processing for RK3 and Adams methods
- Stochastic Solvers: Noise injection and Brownian motion support
- Data-Driven Control: Adaptive step size and method selection
- Karmarkar's Algorithm: Polynomial-time interior point method for linear programming and constrained optimization
- Multiple-Search Representation Tree Algorithm: Advanced search-based solver using multiple parallel search strategies (BFS, DFS, A*, Best-First) for optimal pathfinding
- High-performance C/C++ core implementation
- Objective-C framework for Apple platforms (macOS, iOS, visionOS)
- Visualization capabilities
- Hierarchical/Transformer-like ODE solver
- DDMCMC: Data-Driven MCMC for multinomial optimization
- Efficient search algorithms for learning optimization functions
- Comprehensive documentation
makeThis builds both static (lib/libddrkam.a) and shared (lib/libddrkam.dylib) libraries.
make test#include "rk3.h"
void my_ode(double t, const double* y, double* dydt, void* params) {
dydt[0] = -y[0];
}
double y0[1] = {1.0};
double t_out[100];
double y_out[100];
size_t steps = rk3_solve(my_ode, 0.0, 1.0, y0, 1, 0.01,
NULL, t_out, y_out);#import <DDRKAM/DDRKAM.h>
DDRKAMSolver* solver = [[DDRKAMSolver alloc] initWithDimension:2];
NSDictionary* result = [solver solveWithFunction:^(double t,
const double* y,
double* dydt,
void* params) {
dydt[0] = -y[0];
dydt[1] = -2.0 * y[1];
} startTime:0.0 endTime:1.0
initialState:@[@1.0, @1.0] stepSize:0.01 params:NULL];Compare all methods including RK3, DDRK3, AM, DDAM, Karmarkar's Algorithm, and more:
#include "comparison.h"
ComparisonResults results;
compare_methods(my_ode, t0, t_end, y0, n, h, params, exact, &results);
print_comparison_results(&results);See docs/COMPARISON.md for detailed comparison guide with SVG charts and visualizations.
DDRKAM now supports solving Partial Differential Equations (PDEs):
#include "pde_solver.h"
// Solve 1D Heat Equation
PDEProblem problem;
pde_problem_init(&problem, PDE_HEAT, DIM_1D, 100, 1, 1, 0.01, 1.0, 1.0, 0.0001);
problem.alpha = 0.1;
PDESolution solution;
pde_solve_heat_1d(&problem, 0.1, &solution);See docs/PDE_GUIDE.md for complete PDE documentation.
- Paper:
docs/paper.tex - Presentation:
docs/presentation.tex - Reference Manual:
docs/reference_manual.tex - DDMCMC Guide:
docs/DDMCMC_README.md - Comparison Guide:
docs/COMPARISON.md - Karmarkar's Algorithm Guide:
docs/KARMARKAR_COMPARISON.md - Advanced Architectures Guide:
docs/ADVANCED_ARCHITECTURES.md(includes Multiple-Search Representation Tree Algorithm) - PDE Guide:
docs/PDE_GUIDE.md - Real-Time & Stochastic Guide:
docs/REALTIME_STOCHASTIC.md
Copyright (C) 2025, Shyamal Suhana Chandra. All rights reserved.
For licensing information, please contact: sapanamicrosoftware@duck.com