ApproxFun

Julia package for function approximation

https://github.com/juliaapproximation/approxfun.jl

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

approximation julia partial-differential-equations

Keywords from Contributors

pde graphics sde sciml differential-equations differentialequations stochastic-differential-equations matrix-exponential data-frame data-structures
Last synced: 6 months ago · JSON representation ·

Repository

Julia package for function approximation

Basic Info
Statistics
  • Stars: 556
  • Watchers: 19
  • Forks: 70
  • Open Issues: 180
  • Releases: 59
Topics
approximation julia partial-differential-equations
Created over 12 years ago · Last pushed 10 months ago
Metadata Files
Readme Changelog License Citation

README.md

ApproxFun.jl

CI codecov deps version pkgeval Aqua QA Join the chat at https://gitter.im/JuliaApproximation/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

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

All Time
  • Total Commits: 3,801
  • Total Committers: 45
  • Avg Commits per committer: 84.467
  • Development Distribution Score (DDS): 0.172
Past Year
  • Commits: 6
  • Committers: 3
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.333
Top Committers
Name Email 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...

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
enhancement (2) feature (1)
Pull Request Labels
dependencies (1)

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

  • Versions: 57
  • Dependent Packages: 19
  • Dependent Repositories: 19
  • Downloads: 80 Total
Rankings
Stargazers count: 1.3%
Forks count: 1.6%
Dependent repos count: 1.9%
Average: 2.2%
Dependent packages count: 4.0%
Last synced: 6 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia v1 composite
.github/workflows/DocPreviewCleanup.yml actions
  • actions/checkout v3 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • 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
.github/workflows/docs.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • julia-actions/setup-julia latest composite