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)