All Projects → SciML → Ordinarydiffeq.jl

SciML / Ordinarydiffeq.jl

Licence: other
High performance differential equation solvers for ordinary differential equations, including neural ordinary differential equations (neural ODEs) and scientific machine learning (SciML)

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Ordinarydiffeq.jl

Tesla
Tesla is a gateway service that provides dynamic routing,waf,support spring cloud,gRPC,DUBBO and more.
Stars: ✭ 161 (-17.44%)
Mutual labels:  high-performance
Smtpd
A Lightweight High Performance ESMTP email server
Stars: ✭ 175 (-10.26%)
Mutual labels:  high-performance
Pond
Minimalistic and High-performance goroutine worker pool written in Go
Stars: ✭ 187 (-4.1%)
Mutual labels:  high-performance
Haproxy
HAProxy Load Balancer's development branch (mirror of git.haproxy.org)
Stars: ✭ 2,463 (+1163.08%)
Mutual labels:  high-performance
Finshir
💫 An asynchronous Low & Slow traffic generator, written in Rust
Stars: ✭ 168 (-13.85%)
Mutual labels:  high-performance
Aero
🚄 Fastest node.js framework. Go version is actively maintained: @aerogo
Stars: ✭ 181 (-7.18%)
Mutual labels:  high-performance
Fast Float Rust
Super-fast float parser in Rust
Stars: ✭ 160 (-17.95%)
Mutual labels:  high-performance
Threadly
A library of tools to assist with safe concurrent java development. Providing unique priority based thread pools, and ways to distrbute threaded work safely.
Stars: ✭ 196 (+0.51%)
Mutual labels:  high-performance
High Performance Go
high performance coding with golang(Go 语言高性能编程,Go 语言陷阱,Gotchas,Traps)
Stars: ✭ 2,619 (+1243.08%)
Mutual labels:  high-performance
Servicestack.redis
.NET's leading C# Redis Client
Stars: ✭ 2,236 (+1046.67%)
Mutual labels:  high-performance
Fastenum
The world fastest enum utilities for C#/.NET
Stars: ✭ 165 (-15.38%)
Mutual labels:  high-performance
Gol
gol is a high performance async log kit for golang
Stars: ✭ 166 (-14.87%)
Mutual labels:  high-performance
Collapse
Advanced and Fast Data Transformation in R
Stars: ✭ 184 (-5.64%)
Mutual labels:  high-performance
Shackle
High-Performance Erlang Network Client Framework
Stars: ✭ 163 (-16.41%)
Mutual labels:  high-performance
Compute.scala
Scientific computing with N-dimensional arrays
Stars: ✭ 191 (-2.05%)
Mutual labels:  high-performance
9volt
A modern, distributed monitoring system written in Go
Stars: ✭ 160 (-17.95%)
Mutual labels:  high-performance
Proteus
Lean, mean, and incredibly fast JVM framework for web and microservice development.
Stars: ✭ 178 (-8.72%)
Mutual labels:  high-performance
Libflame
High-performance object-based library for DLA computations
Stars: ✭ 197 (+1.03%)
Mutual labels:  high-performance
Stripe
Typed .NET clients for stripe.com REST APIs
Stars: ✭ 193 (-1.03%)
Mutual labels:  high-performance
Activej
ActiveJ is an alternative Java platform built from the ground up. ActiveJ redefines web, high load, and cloud programming in Java, featuring ultimate performance and scalability!
Stars: ✭ 183 (-6.15%)
Mutual labels:  high-performance

OrdinaryDiffEq.jl

Join the chat at https://gitter.im/JuliaDiffEq/Lobby Build Status Build status

OrdinaryDiffEq.jl is a component package in the DifferentialEquations ecosystem. It holds the ordinary differential equation solvers and utilities. While completely independent and usable on its own, users interested in using this functionality should check out DifferentialEquations.jl.

Installation

Assuming that you already have Julia correctly installed, it suffices to import OrdinaryDiffEq.jl in the standard way:

import Pkg; Pkg.add("OrdinaryDiffEq")

API

OrdinaryDiffEq.jl is part of the SciML common interface, but can be used independently of DifferentialEquations.jl. The only requirement is that the user passes an OrdinaryDiffEq.jl algorithm to solve. For example, we can solve the ODE tutorial from the docs using the Tsit5() algorithm:

using OrdinaryDiffEq
f(u,p,t) = 1.01*u
u0=1/2
tspan = (0.0,1.0)
prob = ODEProblem(f,u0,tspan)
sol = solve(prob,Tsit5(),reltol=1e-8,abstol=1e-8)
using Plots
plot(sol,linewidth=5,title="Solution to the linear ODE with a thick line",
     xaxis="Time (t)",yaxis="u(t) (in μm)",label="My Thick Line!") # legend=false
plot!(sol.t, t->0.5*exp(1.01t),lw=3,ls=:dash,label="True Solution!")

That example uses the out-of-place syntax f(u,p,t), while the inplace syntax (more efficient for systems of equations) is shown in the Lorenz example:

using OrdinaryDiffEq
function lorenz(du,u,p,t)
 du[1] = 10.0(u[2]-u[1])
 du[2] = u[1]*(28.0-u[3]) - u[2]
 du[3] = u[1]*u[2] - (8/3)*u[3]
end
u0 = [1.0;0.0;0.0]
tspan = (0.0,100.0)
prob = ODEProblem(lorenz,u0,tspan)
sol = solve(prob,Tsit5())
using Plots; plot(sol,vars=(1,2,3))

Very fast static array versions can be specifically compiled to the size of your model. For example:

using OrdinaryDiffEq, StaticArrays
function lorenz(u,p,t)
 SA[10.0(u[2]-u[1]),u[1]*(28.0-u[3]) - u[2],u[1]*u[2] - (8/3)*u[3]]
end
u0 = SA[1.0;0.0;0.0]
tspan = (0.0,100.0)
prob = ODEProblem(lorenz,u0,tspan)
sol = solve(prob,Tsit5())

For "refined ODEs", like dynamical equations and SecondOrderODEProblems, refer to the DiffEqDocs. For example, in DiffEqTutorials.jl we show how to solve equations of motion using symplectic methods:

function HH_acceleration(dv,v,u,p,t)
    x,y  = u
    dx,dy = dv
    dv[1] = -x - 2x*y
    dv[2] = y^2 - y -x^2
end
initial_positions = [0.0,0.1]
initial_velocities = [0.5,0.0]
prob = SecondOrderODEProblem(HH_acceleration,initial_velocities,initial_positions,tspan)
sol2 = solve(prob, KahanLi8(), dt=1/10);

Other refined forms are IMEX and semi-linear ODEs (for exponential integrators).

Available Solvers

For the list of available solvers, please refer to the DifferentialEquations.jl ODE Solvers, Dynamical ODE Solvers, and the Split ODE Solvers pages.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].