Skip to content

Taylor polynomial expansions in one and several independent variables.

License

Notifications You must be signed in to change notification settings

JuliaDiff/TaylorSeries.jl

Repository files navigation

TaylorSeries.jl

A Julia package for Taylor polynomial expansions in one or more independent variables.

CI Coverage Status

DOI DOI

Authors

  • Luis Benet, Instituto de Ciencias Físicas, Universidad Nacional Autónoma de México (UNAM)
  • David P. Sanders, Facultad de Ciencias, Universidad Nacional Autónoma de México (UNAM)

Comments, suggestions and improvements are welcome and appreciated.

Examples

Taylor series in one variable

julia> using TaylorSeries

julia> t = Taylor1(Float64, 5)
 1.0 t + 𝒪(t⁶)

julia> exp(t)
 1.0 + 1.0 t + 0.5+ 0.16666666666666666+ 0.041666666666666664 t⁴ + 0.008333333333333333 t⁵ + 𝒪(t⁶)

 julia> log(1 + t)
 1.0 t - 0.5+ 0.3333333333333333- 0.25 t⁴ + 0.2 t⁵ + 𝒪(t⁶)

Multivariate Taylor series

julia> x, y = set_variables("x y", order=2);

julia> exp(x + y)
1.0 + 1.0 x + 1.0 y + 0.5+ 1.0 x y + 0.5+ 𝒪(‖x‖³)

Differential and integral calculus on Taylor series:

julia> x, y = set_variables("x y", order=4);

julia> p = x^3 + 2x^2 * y - 7x + 2
 2.0 - 7.0 x + 1.0+ 2.0 x² y + 𝒪(‖x‖⁵)

julia> (p)
2-element Array{TaylorN{Float64},1}:
  - 7.0 + 3.0+ 4.0 x y + 𝒪(‖x‖⁵)
                    2.0+ 𝒪(‖x‖⁵)

julia> integrate(p, 1)
 2.0 x - 3.5+ 0.25 x⁴ + 0.6666666666666666 x³ y + 𝒪(‖x‖⁵)

julia> integrate(p, 2)
 2.0 y - 7.0 x y + 1.0 x³ y + 1.0 x² y² + 𝒪(‖x‖⁵)

For more details, please see the docs.

License

TaylorSeries is licensed under the MIT "Expat" license.

Installation

TaylorSeries can be installed simply with using Pkg; Pkg.add("TaylorSeries").

Contributing

There are many ways to contribute to this package:

  • Report an issue if you encounter some odd behavior, or if you have suggestions to improve the package.
  • Contribute with code addressing some open issues, that add new functionality or that improve the performance.
  • When contributing with code, add docstrings and comments, so others may understand the methods implemented.
  • Contribute by updating and improving the documentation.

References

  • W. Tucker, Validated numerics: A short introduction to rigorous computations, Princeton University Press (2011).
  • A. Haro, Automatic differentiation methods in computational dynamical systems: Invariant manifolds and normal forms of vector fields at fixed points, preprint.

Acknowledgments

This project began (using python) during a Masters' course in the postgraduate programs in Physics and in Mathematics at UNAM, during the second half of 2013. We thank the participants of the course for putting up with the half-baked material and contributing energy and ideas.

We acknowledge financial support from DGAPA-UNAM PAPIME grants PE-105911 and PE-107114, and DGAPA-PAPIIT grants IG-101113, IG-100616, IG-100819 and IG-101122. LB acknowledges support through a Cátedra Moshinsky (2013).