User Manual 3.3 Numerical differentiation and integration : Différence entre versions

De Wiki
Aller à : navigation, rechercher
m (1 révision importée)
(Contents)
 
(5 révisions intermédiaires par le même utilisateur non affichées)
Ligne 11 : Ligne 11 :
 
The numerical integrator objects are available in the package <code>org.apache.commons.math3.analysis.integration</code> in the Commons Math Library.
 
The numerical integrator objects are available in the package <code>org.apache.commons.math3.analysis.integration</code> in the Commons Math Library.
  
|=(% colspan="3" %)Library|=(% colspan="6" %)Javadoc
+
{| class="wikitable"
|(% colspan="3" %)Commons Math|(% colspan="6" %)[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/differentiation/package-summary.html Package org.apache.commons.math3.analysis.differentiation]
+
|-
|(% colspan="3" %)Commons Math|(% colspan="6" %)[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/integration/package-summary.html Package org.apache.commons.math3.analysis.integration]
+
! scope="col"| Library
 +
! scope="col"| Javadoc
 +
|-
 +
|Commons Math
 +
|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/differentiation/package-summary.html Package org.apache.commons.math3.analysis.differentiation]
 +
|-
 +
|Commons Math
 +
|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/integration/package-summary.html Package org.apache.commons.math3.analysis.integration]
 +
|}
  
 
=== Links ===
 
=== Links ===
Ligne 28 : Ligne 36 :
 
The numerical differentiation conception is described hereafter :  
 
The numerical differentiation conception is described hereafter :  
  
[[File:differentiators.bmp|center]]
+
[[File:differentiators.png|center]]
  
 
Accuracy of integration method (all examples are based on sinus function):
 
Accuracy of integration method (all examples are based on sinus function):
  
|=(% colspan="3" %)Default setting|=(% colspan="3" %)Value
+
{| class="wikitable"
|(% colspan="3" %)Maximum absolute error|(% colspan="6" %)1.0e-15
+
|-
|(% colspan="3" %)Maximum relative error|(% colspan="6" %)1.0e-6
+
! scope="col"| Default setting
|(% colspan="3" %)Maximum number of iterations|(% colspan="6" %)64
+
! scope="col"| Value
|(% colspan="3" %)Minimum number of iterations|(% colspan="6" %)3
+
|-
 +
|Maximum absolute error
 +
|1.0e-15
 +
|-
 +
|Maximum relative error
 +
|1.0e-6
 +
|-
 +
|Maximum number of iterations
 +
|64
 +
|-
 +
|Minimum number of iterations
 +
|3
 +
|}
 +
 
  
 
Note : the accuracy of the results and the computing time are directly dependent on the value of maximum relative error.
 
Note : the accuracy of the results and the computing time are directly dependent on the value of maximum relative error.
Ligne 45 : Ligne 66 :
  
 
==== Finite difference ====
 
==== Finite difference ====
{{specialInclusion prefix=$theme_sub section="Finite difference"/}}
+
Finite difference is the discrete analog of the derivative. The user can choose the number of points to use and the step size (the gap between each point).
  
 
==== Ridders algorithm ====
 
==== Ridders algorithm ====
{{specialInclusion prefix=$theme_sub section="Ridders algorithm"/}}
+
The derivative of a function at a point x is computed using the Ridders method of polynomial extrapolation.
  
 
=== Numerical Integration ===
 
=== Numerical Integration ===
Ligne 94 : Ligne 115 :
 
== Contents ==
 
== Contents ==
 
=== Interfaces ===
 
=== Interfaces ===
|=(% colspan="3" %)Interface|=(% colspan="6" %)Summary|=(% colspan="1" %)Javadoc
+
{| class="wikitable"
|(% colspan="3" %)'''UnivariateFunctionDifferentiator'''|(% colspan="6" %)This interface represents a generic numerical differentiator.|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/differentiation/UnivariateFunctionDifferentiator.html ...]
+
|-
|(% colspan="3" %)UnivariateIntegrator|(% colspan="6" %)Interface for univariate integration algorithms.|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/integration/UnivariateIntegrator.html ...]
+
! scope="col"| Interface
 +
! scope="col"| Summary
 +
! scope="col"| Javadoc
 +
|-
 +
|'''UnivariateFunctionDifferentiator'''
 +
|This interface represents a generic numerical differentiator.
 +
|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/differentiation/UnivariateFunctionDifferentiator.html ...]
 +
|-
 +
|UnivariateIntegrator
 +
|Interface for univariate integration algorithms.
 +
|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/integration/UnivariateIntegrator.html ...]
 +
|}
  
 
=== Classes ===
 
=== Classes ===
|=(% colspan="3" %)Class|=(% colspan="6" %)Summary|=(% colspan="1" %)Javadoc
+
{| class="wikitable"
|(% colspan="3" %)'''FiniteDifferencesDifferentiator'''|(% colspan="6" %)Apply the finite difference method to differentiate a function.|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/differentiation/FiniteDifferencesDifferentiator.html ...]
+
|-
|(% colspan="3" %)'''RiddersDifferentiator'''|(% colspan="6" %)Apply the Ridders algorithm to differentiate a function.|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/differentiation/RiddersDifferentiator.html ...]
+
! scope="col"| Class
|(% colspan="3" %)TrapezoidIntegrator|(% colspan="6" %)The class implements the Trapezoidal rule|(% colspan="1" %)[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/integration/TrapezoidIntegrator.html ...]
+
! scope="col"| Summary
|(% colspan="3" %)SimpsonIntegrator|(% colspan="6" %)The class implements the Simpson rule|(% colspan="1" %)[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/integration/SimpsonIntegrator.html ...]
+
! scope="col"| Javadoc
 +
|-
 +
|'''FiniteDifferencesDifferentiator'''
 +
|Apply the finite difference method to differentiate a function.
 +
|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/differentiation/FiniteDifferencesDifferentiator.html ...]
 +
|-
 +
|'''RiddersDifferentiator'''
 +
|Apply the Ridders algorithm to differentiate a function.
 +
|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/differentiation/RiddersDifferentiator.html ...]
 +
|-
 +
|TrapezoidIntegrator
 +
|The class implements the Trapezoidal rule
 +
|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/integration/TrapezoidIntegrator.html ...]
 +
|-
 +
|SimpsonIntegrator
 +
|The class implements the Simpson rule
 +
|[{{JavaDoc3.3}}/org/apache/commons/math3/analysis/integration/SimpsonIntegrator.html ...]
 +
|}
 +
 
 +
[[Category:User_Manual_3.3_Mathematics]]

Version actuelle en date du 27 février 2018 à 11:03


Introduction

Scope

This section détails numerical differentialtion and integration (not to be misunderstood with numerical integration of ODE). A focus is realised on:

  • differentiation methods of real univariate functions: Ridders and finite difference.
  • integration methods of real univariate functions : Trapezoidal and Simpson.

Javadoc

The numerical differentiator objects are available in the package org.apache.commons.math3.analysis.differentiation in the Commons Math Library. The numerical integrator objects are available in the package org.apache.commons.math3.analysis.integration in the Commons Math Library.

Library Javadoc
Commons Math Package org.apache.commons.math3.analysis.differentiation
Commons Math Package org.apache.commons.math3.analysis.integration

Links

Links to the implemented integration methods :

http://mathworld.wolfram.com/TrapezoidalRule.html

http://mathworld.wolfram.com/SimpsonsRule.html

Useful Documents

Modèle:SpecialInclusion prefix=$theme sub section="UsefulDocs"/

Package Overview

The numerical differentiation conception is described hereafter :

Differentiators.png

Accuracy of integration method (all examples are based on sinus function):

Default setting Value
Maximum absolute error 1.0e-15
Maximum relative error 1.0e-6
Maximum number of iterations 64
Minimum number of iterations 3


Note : the accuracy of the results and the computing time are directly dependent on the value of maximum relative error.

Features Description

Numerical differentiation

Finite difference

Finite difference is the discrete analog of the derivative. The user can choose the number of points to use and the step size (the gap between each point).

Ridders algorithm

The derivative of a function at a point x is computed using the Ridders method of polynomial extrapolation.

Numerical Integration

Trapezoidal method

The trapezoidal rule works by approximating the region under the graph of the function as a trapezoid and calculating its area.

UnivariateFunction f = new SinFunction();
UnivariateIntegrator integrator = new TrapezoidIntegrator();
double r = integrator.integrate(10000, f, 0, FastMath.PI);

Result : r = 1.9999996078171345 (exact result = 2)

And :

integrator = new TrapezoidIntegrator(1.e-12, 1.0e-15, 3, 64);
r = integrator.integrate(10000000, f, 0, FastMath.PI);

Result : r = 1.9999999999904077

But :

integrator = new TrapezoidIntegrator(1.e-13, 1.0e-15, 3, 64);
r = integrator.integrate(10000000, f, 0, FastMath.PI);

Result : r = no result (infinite time !)

Simpson method

Simpson's rule is a Newton-Cotes formula for approximating the integral of a function using quadratic polynomials (i.e., parabolic arcs instead of the straight line segments used in the trapezoidal rule). In general, this method has faster convergence than the trapezoidal rule for functions which are twice continuously differentiable, though not in all specific cases.

UnivariateFunction f = new SinFunction();
UnivariateIntegrator integrator = new SimpsonIntegrator();
double r = integrator.integrate(10000, f, 0, FastMath.PI);

Result : r = 2.000000064530001 (exact result = 2)

Getting Started

Modèle:SpecialInclusion prefix=$theme sub section="GettingStarted"/

Contents

Interfaces

Interface Summary Javadoc
UnivariateFunctionDifferentiator This interface represents a generic numerical differentiator. ...
UnivariateIntegrator Interface for univariate integration algorithms. ...

Classes

Class Summary Javadoc
FiniteDifferencesDifferentiator Apply the finite difference method to differentiate a function. ...
RiddersDifferentiator Apply the Ridders algorithm to differentiate a function. ...
TrapezoidIntegrator The class implements the Trapezoidal rule ...
SimpsonIntegrator The class implements the Simpson rule ...