35.2 Solving Differential Equations (.NET, C#, CSharp, VB, Visual Basic, F#)
Class RungeKuttaSolver solves first order initial value differential equations by the Runge-Kutta method. The solver computes the unknown function y as set of tabulated values such that .
Constructing RungeKuttaSolver Instances
Instances of RungeKuttaSolver are constructed from the number of tabulated points and a nonzero value delta. From the number of points and the delta, the set is determined as .
For instance:
Code Example – C# ordinary differential equations (ODE)
int n = 2000;
double delta = .001;
var solver = new RungeKuttaSolver( n, delta );
Code Example – VB ordinary differential equations (ODE)
Dim N As Integer = 2000
Dim Delta As Double = 0.001
Dim Solver As New RungeKuttaSolver(N, Delta)
Optionally, the order of the Runge-Kutta method may also be specified, using the enum RungeKutterSolver.SolverOrder.
Code Example – C# ordinary differential equations (ODE)
var solver = new RungeKuttaSolver( n, delta, SolverOrder.First );
Code Example – VB ordinary differential equations (ODE)
Dim Solver As New RungeKuttaSolver(N, Delta, SolverOrder.First)
By default, the fourth order Runge-Kutta method (RK4) is used.
Solving First Order Initial Value Problems
The Solve() method on RungeKuttaSolver solves a given FirstOrderInitialValueProblem by the common Runge-Kutta method. The Solve() method computes the unknown function y as set of tabulated values such that . The tabulated values are returned either as a KeyValuePair<double[], double[]>, or as a CenterSpace.NMath.Core.TabulatedFunction passed by reference. (See Section 13.5 for more information on tabulated functions.)
For example:
Code Example – C# ordinary differential equations (ODE)
KeyValuePair<double[], double[]> tabulatedValues =
solver.Solve( prob );
Code Example – VB ordinary differential equations (ODE)
Dim TabulatedValues As KeyValuePair(Of Double(), Double()) =
Solver.Solve(Prob)
or
Code Example – C# ordinary differential equations (ODE)
TabulatedFunction ftab = null;
solver.Solve( prob, ref ftab );
Code Example – VB ordinary differential equations (ODE)
Dim FTab As TabulatedFunction = Nothing
Solver.Solve(Prob, FTab)
Similarly, in the following code, results are returned as a LinearSpline, a subclass of TabulatedFunction that provides linear interpolation between tabulated values:
Code Example – C# ordinary differential equations (ODE)
var spline = new LinearSpline();
solver.Solve( prob, ref spline );
Code Example – VB ordinary differential equations (ODE)
Dim Spline As New LinearSpline()
Solver.Solve(Prob, Spline)