Catégorie:User Manual 4.3 Mathematics

De Wiki
Aller à : navigation, rechercher

Introduction

Eudoxus-1.jpg

Willingly would I burn to death like Phaeton,
were this the price for reaching the sun and
learning its shape, its size and its substance.

Eudoxus of Cnidus (408 - 355 B.C.)

This section is a short presentation of the Math Library implemented in PATRIUS.

The Math library of PATRIUS is based on the Open-source Commons Math library.

Commons-Math has entirely been included in PATRIUS library. It is accessible through Patrius math package: fr.cnes.sirius.patrius.math package.

Since V4.2, the user can choose and define its low-level math framework (cos, sin, exp, etc.).

Applicable and Reference Documents

Applicable Documents

[A1] CDCF - Fonctions de Base du Patrimoine de Dynamique du Vol, V1.2, SIRIUS-CF-DV-0049-CN, 2011.
[A2] Dossier de réutilisation Orekit et Commons Math, V1.0, SIRIUS-DLR-DV-0080-CN, 2010.

Reference Documents

[R1] Nürnberg, R.; Distance from a Point to an Ellipse, Imperial College London, 2006, http://www2.imperial.ac.uk/~~rn/distance2ellipse.pdf.

Glossary

None Applicable.

Overview

The Math package of PATRIUS has been developed according to the SIRIUS Scope Statement [A1]. The themes developed are described hereafter:

Constants
Implementation of mathematical and physical constants.
Comparisons of Numbers
For this theme, classes and methods of comparison that allow a precise comparison of number representations have been developed.
Angles
For this theme, angle utilities, such as intervals, have been implemented, and allow the user to perform multiple rigorous operations with modulus problems taken into account.
Low-level math frameworks
A low-level math framework provides methods to compute simple math function such as sin, cos, exp, log, etc. For this theme, a generic interface for low-level math framework has been defined. Several implementations are available (FastMath and Jafama).
Dispersions
Various algorithms have been developped to handle different kinds of random number generation.
Vectors
Vector-specific operations, particularly in the case of 2D and 3D vectors, have been developed and implemented in classes such as Vector3D. It is understood that by vector, a real column vector is actually manipulated.
Matrices
Matrix-specific operations, particularly in the case of 3x3 and 6x6 matrices, have been developed and implemented in classes such as Matrix3D.
Quaternions
Quaternion-specific operations have been developed and implemented in classes such as Quaternion. It is understood that this class represents the mathematical object quaternion and, as such, is not necessarily a rotation quaternion.
Rotations
Rotations implemented in PATRIUS are algebraic rotations that can be represented by normalized quaternions, rotation matrices or sequences of Euler angles. The prime objective of this design is to have all the rotation representations combined, making it easier for the user to manipulate such an object.
Geometry
The geometry section presents the geometry classes developed and implemented in PATRIUS. It currently includes the following objects : lines, planes, plates, parallelepipeds, cylinders, cones, ellipsoids and spherical caps.
Interpolation methods
Implementation of several methods : spline, bicubic, tricubic, Lagrange and Newton interpolation.
Root-Finding algorithm
Implementation of several algorithms : Brent, Newton, Bisection and Müller.
Trigonometric polynomials
Real trigonometric polynomials are implemented.
Numerical differentiation
Implementation of two numerical differentiation methods: finite difference and Ridders.
Numerical integration
Implementation of two numerical integration methods: Trapezoidal and Simpson.
Numerical ordinary differential equations
It is the part of numerical analysis which studies the numerical solution of ordinary differential equations (ODEs). Please note: this may sometimes be called numerical integration, but we assume here that numerical integration only refers to the computation of integrals (see the corresponding theme).