Archive<< September 2020 >>
- TMS FNC UI Pack v3.2 Revealing some highly anticipated components
- Hands-on: Building web design for a RAD Studio TMS WEB Core project
- TMS WEB Core Academic is here for Delphi developers!
- Get started with TMS WEB Core for Visual Studio Code
- Online event: The Theory and Practice of Amazing Desktop Application UI & UX
- TMS FNC Maps updates!
- TMS Subscription Manager v2.1 released
- Documenting your Delphi REST API the easy way
- TMS WEB Core for Visual Studio Code v1.0 released
- Edge Chromium Stable Support!
- Adrian Gallero (22)
- Bart Holvoet (5)
- Bernard Roussely (1)
- Bruno Fierens (261)
- Gjalt Vanhouwaert (6)
- Holger Flick (15)
- Marcos Douglas B. Santos (5)
- Masiha Zemarai (51)
- Nancy Lescouhier (32)
- Pieter Scheldeman (35)
- Roman Yankovsky (2)
- Tunde Keller (10)
- Wagner R. Landgraf (67)
BlogAll Blog Posts | Next Post | Previous Post
Thursday, July 13, 2017Ordinary differential equations (ODE) used in many applications for physical, economical and other problem solution. The equations commonly describe the time evolution of some system from known initial state initial value problem (https://en.wikipedia.org/wiki/Initial_value_problem).
The TMS Analytics and Physics pack contains the ODE solution tool of solving initial value problems for systems of ODEs. This tool is totally integrated with the symbolic capabilities of the library. This allows solving parametric problems and exploring how the parameter value influences the system behavior.
Let us consider the following simple parametric ODE:
with initial condition y(0)=1 on the time interval t=[0, 10]. The problem is parametric because there are parameters A and b in the equation. Our goal is exploring how the solution (function y(t)) depends on the value of b parameter.
First we create the instance of analytical ODE object, here is the code:
Line 1: Create the variable for A parameter.
var A, b: TVariable; prms: TArray<TVariable>; fv, equations: TArray<string>; ode: TAnalyticalODE; solver: TODESolverClass; y0: TArray<TFloat>; t: TArray<TFloat>; y: TArray<TArray<TFloat>>; i: Integer; begin A:= TRealVariable.Create('A', 1.0); // 1 b:= TRealVariable.Create('b', 0.0); // 2 prms:= TArray<TVariable>.Create(A, b); // 3 fv:= TArray<string>.Create('y'); // 4 equations:= TArray<string>.Create('sin(t)+A*t/y^b'); // 5 ode:= TScalarODE.Create('t', fv, equations, prms); // 6 ...
Line 2: Create the variable for b parameter.
Line 3: Create array of parameters.
Line 4: Create array of function names (one name required for the problem).
Line 5: Create array of equations (one equation).
Line 6: Create the instance of analytical ODE system with specified equation and parameters.
After the instance of the analytical ODE system created we must select appropriate solver and specify initial condition for the problem. We will use the Runge-Kutta direct solver of the 4-th order. The code continued:
And finally we must solve the initial value problem for various values of b parameter, say b=1..8:
solver:= TRungeKutta4Solver; // 7 y0:= TArray
.Create(1.0); // 8
Line 9: Change value of b parameter using the array property Parameters of the analytical ODE class. Line 10: Solving the specified initial value problem for current value of b parameter, on the time interval t=[0, 10], with 1000 discretization steps.
for i:=1 to 8 do begin ode.Parameters['b'].Value:= TValue.From
(i); // 9 y:= solver.Solve(ode, y0, 10.0, 1000, t); // 10 // Code for using the result data y and t. end;
The solution result for changing value of b parameter presented on the picture below.
TMSFNCChart cross-platform / cross-framework chart displaying the result
As can be seen from the code above, there is no need creating new analytical ODE instance for exploring the parametric problem. As the analytical ODE is parametric, it is solved for the current parameter values and they can be easily changed via parametric interface.
Other advantages of using the numerical ODE tool with the symbolic calculus are:
- Minimal code writing, because there is no need to write special classes for the function method references (delegates) as in other numerical libraries.
- Convenient data representation for the developer and user as math expressions, not as programming code.
- Easily using the user input data (string data) for manipulations in programming code.
- Easily transfer input data via network as strings, easily storing and serializing the data.
The TMS Analytics and Physics pack includes the library with 5 ready-to-use numerical tools totally integrated with analytical features, such as symbolic derivatives. The trial version of TMS Analytics and Physics pack can be downloaded here. Total source code of the example application of ODE tool can be downloaded here.
This blog post has not received any comments yet.
All Blog Posts | Next Post | Previous Post