https://github.com/bigbuildbench/aftix_bacon

https://github.com/bigbuildbench/aftix_bacon

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.4%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: BigBuildBench
  • License: mit
  • Language: Rust
  • Default Branch: master
  • Size: 390 KB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme License

README.md

Scientific Computing in Rust

Features

  • Initial value problem solving
  • Root finding algorithms
  • Polynomials
  • Polynomial Interpolation
  • Scientific Constants
  • Special functions/polynomials
  • Numeric quadrature
  • Numeric differentiation

Explanations of the features can be found here.

Initial Value Problems

There are two adaptive Runge-Kutta methods, two Adams predictor-correctors, and two adaptive Backwards Differentiation Formulas implemented. The interface to all of the solvers is the same. As an example, this code solves y' = y using the Runge-Kutta-Fehlberg method.

```rust use bacon_sci::ivp::{RK45, RungeKuttaSolver}; use nalgebra::SVector;

fn deriv(t: f64, y: &[f64], _params: &mut ()) -> Result, String> { Ok(SVector::::fromcolumn_slice(y)) }

fn solve() -> Result<(), String> { let solver = RK45::new() .withdtmin(0.01)? .withdtmax(0.1)? .withtolerance(1e-4)? .withinitialconditions(&[1.0])? .withstart(0.0)? .withend(10.0)? .build(); let _solution = solver.solveivp(deriv, &mut ())?; Ok(()) } ```

There is also a solve_ivp function in bacon_sci::ivp that tries a fifth-order predictor-corrector followed by the Runge-Kutta-Fehlberg method followed by BDF6.

Root Finding Algorithms

bacon_sci::roots implements the bisection method, Newton's method, the secant method, Newton's method for polynomials, and Müller's method for polynomials.

As an example, the following code snippet finds the root of x^3 using initial guesses of 0.1 and -0.1.

```rust use bacon_sci::roots::secant; use nalgebra::SVector;

fn cubic(x: &[f64]) -> SVector { SVector::::from_iterator(x.iter.map(|x| x.powi(3))) }

fn solve() -> f64 { secant((&[-0.1], &[0.1]), cubic, 0.001, 1000).unwrap() } ```

Polynomials and Polynomial Interpolation

bacon_sci::polynomial implements a polynomial struct. bacon_sci::interp implements Lagrange interpolation, Hermite interpolation, and cubic spline interpolation.

Scientific Constants

Several scientific constants are defined in bacon_sci::constants. The data comes from NIST. The 2018 CODATA complete listing is available as a hashmap.

Special Functions and Polynomials

Currently, bacon_sci::special allows you to get Legendre polynomials, Hermite polynomials, Laguerre polynomials, and Chebyshev polynomials.

Numeric Differentiation and Quadrature

bacon_sci::differentiate allows first- and second-derivative evaluation numerically. bacon_sci::integrate implements Tanh-Sinh quadrature, adaptive Simpson's rule, Romberg integration, and several adaptive Gaussian integration schemes.

Owner

  • Name: BigBuildBench
  • Login: BigBuildBench
  • Kind: organization

abbr. B3, benchmarking the repo-level understanding capability of your LLMs by reconstructing project build-file.

GitHub Events

Total
  • Create event: 4
Last Year
  • Create event: 4

Dependencies

.github/workflows/auto-merge.yml actions
  • alexwilson/enable-github-automerge-action main composite
.github/workflows/release.yml actions
  • actions/checkout v4 composite
  • clechasseur/rs-cargo v2 composite
  • obi1kenobi/cargo-semver-checks-action v2 composite
.github/workflows/rust.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v4 composite
  • auguwu/clippy-action 1.3.0 composite
  • baptiste0928/cargo-install v3 composite
  • clechasseur/rs-cargo v2 composite
  • dtolnay/rust-toolchain stable composite
.github/workflows/spell-check.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v4 composite
Cargo.toml cargo
  • float-cmp 0.9 development
  • rand 0.8 development