ApproxFun
Julia package for function approximation
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
6 of 45 committers (13.3%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.4%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Julia package for function approximation
Basic Info
- Host: GitHub
- Owner: JuliaApproximation
- License: other
- Language: Julia
- Default Branch: master
- Homepage: http://juliaapproximation.github.io/ApproxFun.jl/
- Size: 113 MB
Statistics
- Stars: 556
- Watchers: 19
- Forks: 70
- Open Issues: 180
- Releases: 59
Topics
Metadata Files
README.md
ApproxFun.jl
ApproxFun is a package for approximating functions. It is in a similar vein to the Matlab
package Chebfun and the Mathematica package RHPackage.
The ApproxFun Documentation contains detailed information, or read on for a brief overview of the package. The documentation contains examples of usage, such as solving ordinary and partial differential equations.
The ApproxFun Examples repo contains many examples of
using this package, in Jupyter notebooks and Julia scripts. Note that this is independently maintained, so it might not always be in sync with the latest version of ApproxFun. We recommend checking the examples in the documentation first, as these will always be compatible with the latest version of the package.
Introduction
Approximating Functions
Take your two favourite functions on an interval and create approximations to them as simply as:
julia
using LinearAlgebra, SpecialFunctions, Plots, ApproxFun
x = Fun(identity,0..10)
f = sin(x^2)
g = cos(x)
Evaluating f(.1) will return a high
accuracy approximation to sin(0.01). All the algebraic manipulations of functions
are supported and more. For example, we can add f and g^2 together and compute
the roots and extrema:
```julia h = f + g^2 r = roots(h) rp = roots(h')
plot(h; label="f + g^2") scatter!(r, h.(r); label="roots") scatter!(rp, h.(rp); label="extrema") ```

Differentiation and integration
Notice from above that to find the extrema, we used ' overridden for the differentiate function. Several other Julia
base functions are overridden for the purposes of calculus. We may check that the exponential is its own derivative, by evaluating the norm of the difference and checking that it is small:
julia
f = Fun(exp, -1..1)
norm(f-f') # 4.4391656415701095e-14
Similarly, cumsum defines an indefinite integration operator:
julia
g = cumsum(f)
g = g + f(-1)
norm(f-g) # 3.4989733283850415e-15d
Algebraic and differential operations are also implemented where possible, and most of Julia's built-in functions (and special functions from SpecialFunctions.jl) are overridden to accept Funs:
julia
x = Fun()
f = erf(x)
g = besselj(3,exp(f))
h = airyai(10asin(f)+2g)
Examples of Usage
Check the documentation for examples of usage.
References
J. L. Aurentz & R. M. Slevinsky (2019), On symmetrizing the ultraspherical spectral method for self-adjoint problems, arxiv:1903.08538
S. Olver & A. Townsend (2014), A practical framework for infinite-dimensional linear algebra, Proceedings of the 1st First Workshop for High Performance Technical Computing in Dynamic Languages, 57–62
A. Townsend & S. Olver (2014), The automatic solution of partial differential equations using a global spectral method, J. Comp. Phys., 299: 106–123
S. Olver & A. Townsend (2013), Fast inverse transform sampling in one and two dimensions, arXiv:1307.1223
S. Olver & A. Townsend (2013), A fast and well-conditioned spectral method, SIAM Review, 55:462–489
Owner
- Name: JuliaApproximation
- Login: JuliaApproximation
- Kind: organization
- Repositories: 42
- Profile: https://github.com/JuliaApproximation
Citation (CITATION.bib)
@inproceedings{ApproxFun.jl-2014,
year = {2014},
publisher = {{IEEE}},
author = {Sheehan Olver and Alex Townsend},
title = {A practical framework for infinite-dimensional linear algebra},
booktitle = {Proceedings of the 1st Workshop for High Performance Technical Computing in Dynamic Languages -- HPTCDL `14}
}
GitHub Events
Total
- Create event: 4
- Commit comment event: 2
- Release event: 1
- Issues event: 12
- Watch event: 18
- Delete event: 2
- Issue comment event: 23
- Push event: 14
- Pull request event: 5
Last Year
- Create event: 4
- Commit comment event: 2
- Release event: 1
- Issues event: 12
- Watch event: 18
- Delete event: 2
- Issue comment event: 23
- Push event: 14
- Pull request event: 5
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Sheehan Olver | s****r@m****m | 3,147 |
| Richard Mikael Slevinsky | R****y@m****k | 275 |
| Jishnu Bhattacharya | j****b@g****m | 114 |
| Sheehan Olver | d****y@g****m | 57 |
| John Wormell | j****l@g****m | 42 |
| Marcus | m****b@g****m | 27 |
| github-actions[bot] | 4****] | 25 |
| Sheehan Olver | s****r@g****m | 16 |
| AT | t****d@m****k | 16 |
| goretkin | g****n@g****m | 12 |
| MasonProtter | m****r@g****m | 7 |
| PEIFENG WU | 4****g | 6 |
| zz5016 | z****6@i****k | 5 |
| Kirill Ignatiev | i****l | 4 |
| Lucas C Wilcox | l****s@s****m | 3 |
| Rodney Polkinghorne | t****d@g****m | 3 |
| Steven G. Johnson | s****j@m****u | 3 |
| Yichao Yu | y****2@g****m | 3 |
| cmarcotte | c****t@g****m | 3 |
| Ziyao Zhang | 4****6 | 3 |
| Christopher Rackauckas | a****s@c****m | 2 |
| Erik Schnetter | s****r@g****m | 2 |
| Lucas Aschenbach | 3****h | 2 |
| femtocleaner[bot] | f****] | 2 |
| Wonseok Shin | w****7@g****m | 2 |
| spaette | 1****e | 1 |
| michele | m****n@g****m | 1 |
| ksil | k****l | 1 |
| CompatHelper Julia | c****y@j****g | 1 |
| Pietro Vertechi | p****i@n****g | 1 |
| and 15 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 74
- Total pull requests: 109
- Average time to close issues: over 1 year
- Average time to close pull requests: 6 days
- Total issue authors: 48
- Total pull request authors: 6
- Average comments per issue: 2.55
- Average comments per pull request: 1.01
- Merged pull requests: 103
- Bot issues: 0
- Bot pull requests: 11
Past Year
- Issues: 10
- Pull requests: 4
- Average time to close issues: 4 days
- Average time to close pull requests: 11 days
- Issue authors: 9
- Pull request authors: 2
- Average comments per issue: 0.6
- Average comments per pull request: 1.0
- Merged pull requests: 4
- Bot issues: 0
- Bot pull requests: 2
Top Authors
Issue Authors
- dlfivefifty (4)
- macd (4)
- ay111 (3)
- falematte (3)
- jishnub (3)
- andreasvarga (3)
- benjione (3)
- Jilhg (2)
- GrigorySarnitsky (2)
- MikaelSlevinsky (2)
- Veenty (2)
- nilsbecker (2)
- AshtonSBradley (2)
- weymouth (2)
- alanedelman (2)
Pull Request Authors
- jishnub (94)
- github-actions[bot] (11)
- LucasAschenbach (2)
- dependabot[bot] (1)
- dstahlke (1)
- spaette (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- julia 80 total
- Total dependent packages: 19
- Total dependent repositories: 19
- Total versions: 57
juliahub.com: ApproxFun
Julia package for function approximation
- Homepage: http://juliaapproximation.github.io/ApproxFun.jl/
- Documentation: https://docs.juliahub.com/General/ApproxFun/stable/
- License: BSD-3-Clause
-
Latest release: 0.13.28
published about 1 year ago
Rankings
Dependencies
- julia-actions/setup-julia v1 composite
- actions/checkout v3 composite
- JuliaRegistries/TagBot v1 composite
- actions/cache v3 composite
- actions/checkout v3 composite
- codecov/codecov-action v3 composite
- fkirc/skip-duplicate-actions v5 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-processcoverage v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite
- actions/cache v3 composite
- actions/checkout v3 composite
- julia-actions/setup-julia latest composite