FundamentalsNumericalComputation

Core functions for the Julia (2nd) edition of the text Fundamentals of Numerical Computation, by Driscoll and Braun.

https://github.com/fncbook/fundamentalsnumericalcomputation.jl

Science Score: 44.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
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.2%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Core functions for the Julia (2nd) edition of the text Fundamentals of Numerical Computation, by Driscoll and Braun.

Basic Info
  • Host: GitHub
  • Owner: fncbook
  • License: mit
  • Language: Julia
  • Default Branch: main
  • Homepage:
  • Size: 347 KB
Statistics
  • Stars: 110
  • Watchers: 2
  • Forks: 16
  • Open Issues: 0
  • Releases: 6
Created almost 5 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

Fundamentals of Numerical Computation

These are core functions for the text Fundamentals of Numerical Computation by T. A. Driscoll and R. J. Braun (preview site). They are a companion to the Julia (2nd) edition, to be published in 2022.

For Julia versions of the functions accompanying the MATLAB (first) edition, go to https://github.com/fncbook/fnc instead.

Installation

  1. Install Julia. Any of the available methods for the latest stable version 1.x should be fine. The Julia Pro version comes with an integrated editor and many preinstalled packages, and it might be the best choice for those not comfortable with their command line shell.
  2. Start Julia on your machine. Look for the julia> prompt.
  3. At the prompt type the ] character. This will turn the prompt a different color and say pkg>, indicating that you can give commands to the package manager.
  4. At the pkg prompt, type

julia add FundamentalsNumericalComputation

The process will take a while. In order to flatten the learning curve, this package loads many other standard numerical and plotting packages and makes them available, so there is a lot of code to install and compile. 5. Hit the backspace (delete on Mac) key to go back to the main Julia prompt. Steps 3-5 should only need to be done once per Julia installation.

Usage

In order to use the functions, in each new Julia session you must enter

julia using FundamentalsNumericalComputation

None of the functions are exported, so they must all be prefixed with the package name. However, the constant FNC is set as an alias to the package name to make typing more reasonable, e.g., FNC.lufact, FNC.rk23, etc.

There is a bare-bones documentation site, but it only gives summaries of the documentation strings that are found in the text. The textbook is meant to be the real guide.

Startup speed

After installation, importing the package with a using statement should only take 5-10 seconds in Julia 1.6 or later. The first plot created in a Julia session may take 20-60 seconds to appear. This is a well-known irritant in the Julia ecosystem, and progress is steadily being made toward reducing the lag. In the meantime, there are a few options available for power users.

PackageCompiler

The PackageCompiler package allows you to compile a new version of the Julia binary to get better startup performance. It's not too hard to use, but it helps if you are comfortable with command line/terminal interfaces.

Minimal package version

You can speed up loading time by installing a special branch of this package. At the prompt, type the ] character to enter package mode. If you already installed the default version, enter

julia rm FundamentalsNumericalComputation

Then enter

julia add https://github.com/fncbook/FundamentalsNumericalComputation.jl#fast-load

Now, each import of this package should take ten seconds or less. However, you will need to manually install and then load packages in order to run the demos and solve many of the exercises in the book. (This is how Julia is normally used in practice.) In particular, only LinearAlgebra, Polynomials, SparseArrays, and a few packages for loading files and displaying output are provided. Other packages used in the text, and their key dependents, are given in the following table.

| Package name | Key dependent functions | | :---------------------- | :-------------------------------- | | Arpack | eigs | | Dierckx | Splline1D | | DifferentialEquations | solve | | FFTW | fft | | GraphRecipes | graphplot | | Images | image loading and display, Gray | | IncompleteLU | iLU | | IterativeSolvers | gmres, minres, cg | | LinearMaps | LinearMap | | MatrixDepot | matrixdepot | | NLsolve | nlsolve | | Plots | plot, scatter, contour | | Preconditioners | DiagonalPreconditioner | | QuadGK | quadgk | | SpecialFunctions | besselj, gamma | | TestImages | testimage |

Alternative numerical packages

These codes are for instructional purposes. They are not recommended for applications. Compared to superior alternatives, they lack generality, efficiency, and robustness to syntax and more subtle mistakes. My personal recommendations for preferable alternatives are as follows. Most of them are demonstrated in the textbook.

| Problem type | Associated Julia packages | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Linear system / least squares | LinearAlgebra (standard library) | | Sparse matrix | SparseArrays, IterativeSolvers, Arpack, Preconditioners | | Polynomial interpolation/approximation | Polynomials, ApproxFun | | Polynomial roots | Polynomials | | Rootfinding | NLsolve | | Finite differences | FiniteDifferences, FiniteDiff | | Integration | QuadGK | | Spline | Dierckx | | Initial-value problem | DifferentialEquations | | Boundary-value problem | DifferentialEquations | | Method of lines | MethodOfLines (still under development) |

License

This code stored on this site is under an MIT license. Please see the LICENSE file for details.

Owner

  • Name: Fundamentals of Numerical Computation book
  • Login: fncbook
  • Kind: organization
  • Email: driscoll@udel.edu

Citation (CITATION.cff)

cff-version: 1.2.0
message: >-
  Please cite this software using the metadata from 'preferred-citation'.
authors:
  - family-names: Driscoll
    given-names: Tobin A.
    orcid: https://orcid.org/0000-0002-1490-2545
  - family-names: Braun
    given-names: Richard J.
title: "FundamentalsNumericalComputation.jl"
version: 0.4
date-released: 2022-05-06
preferred-citation:
  authors:
    - family-names: Driscoll
      given-names: Tobin A.
      orcid: https://orcid.org/0000-0002-1490-2545
    - family-names: Braun
      given-names: Richard J.
  title: "Fundamentals of Numerical Computation"
  type: book
  publisher: SIAM
  address: Philadelphia, PA
  date: 2022
title: "My Research Software"

GitHub Events

Total
  • Create event: 3
  • Commit comment event: 7
  • Release event: 2
  • Watch event: 9
  • Issue comment event: 4
  • Push event: 4
  • Fork event: 3
Last Year
  • Create event: 3
  • Commit comment event: 7
  • Release event: 2
  • Watch event: 9
  • Issue comment event: 4
  • Push event: 4
  • Fork event: 3

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 1
  • Total pull requests: 1
  • Average time to close issues: less than a minute
  • Average time to close pull requests: 5 days
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 6.0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • JuliaTagBot (1)
Pull Request Authors
  • dkarrasch (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • julia 5 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 6
juliahub.com: FundamentalsNumericalComputation

Core functions for the Julia (2nd) edition of the text Fundamentals of Numerical Computation, by Driscoll and Braun.

  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 5 Total
Rankings
Dependent repos count: 9.9%
Stargazers count: 13.7%
Forks count: 14.9%
Average: 19.4%
Dependent packages count: 38.9%
Last synced: 7 months ago

Dependencies

.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/documenter.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite