44[ ![ CI] ( https://github.com/SciML/diffeqpy/workflows/CI/badge.svg )] ( https://github.com/SciML/diffeqpy/actions )
55
66diffeqpy is a package for solving differential equations in Python. It utilizes
7- [ DifferentialEquations.jl] ( http ://diffeq .sciml.ai/dev /) for its core routines
7+ [ DifferentialEquations.jl] ( https ://docs .sciml.ai/DiffEqDocs/stable /) for its core routines
88to give high performance solving of many different types of differential equations,
99including:
1010
@@ -33,7 +33,7 @@ pip install diffeqpy
3333
3434and you're good!
3535
36- ## Collab Notebook Examples
36+ ## Colab Notebook Examples
3737
3838- [ Solving the Lorenz equation faster than SciPy+Numba] ( https://colab.research.google.com/drive/1SQCu1puMQO01i3oMg0TXfa1uf7BqgsEW?usp=sharing )
3939- [ Solving ODEs on GPUs Fast in Python with diffeqpy] ( https://colab.research.google.com/drive/1bnQMdNvg0AL-LyPcXBiH10jBij5QUmtY?usp=sharing )
@@ -45,12 +45,12 @@ Import and setup the solvers available in *DifferentialEquations.jl* via the com
4545``` py
4646from diffeqpy import de
4747```
48- In case only the solvers available in * OrdinaryDiffEq.jl* are required then use the command:
48+ If only the solvers available in * OrdinaryDiffEq.jl* are required, then use the command:
4949``` py
5050from diffeqpy import ode
5151```
5252The general flow for using the package is to follow exactly as would be done
53- in Julia, except add ` de. ` or ` ode. ` in front. Note that ` ode. ` has lesser loading time and a smaller memory footprint compared to ` de. ` .
53+ in Julia, except add ` de. ` or ` ode. ` in front. Note that ` ode. ` has a shorter loading time and a smaller memory footprint compared to ` de. ` .
5454Most of the commands will work without any modification. Thus
5555[ the DifferentialEquations.jl documentation] ( https://github.com/SciML/DifferentialEquations.jl )
5656and the [ DiffEqTutorials] ( https://github.com/SciML/DiffEqTutorials.jl )
@@ -59,8 +59,8 @@ translate these docs to Python code.
5959
6060## Note about !
6161
62- Python does not allow ` ! ` in function names, so this is also [ a limitation of pyjulia] ( https://pyjulia.readthedocs.io/en/latest/limitations.html#mismatch-in-valid-set-of-identifiers )
63- To use functions which on the Julia side have a ` ! ` , like ` step! ` , replace ` ! ` by ` _b ` , for example:
62+ Python does not allow ` ! ` in function names, so this is also [ a limitation of pyjulia] ( https://pyjulia.readthedocs.io/en/latest/limitations.html#mismatch-in-valid-set-of-identifiers ) .
63+ To use functions which on the Julia side have a ` ! ` , like ` step! ` , replace ` ! ` by ` _b ` . For example:
6464
6565``` py
6666from diffeqpy import de
@@ -75,7 +75,7 @@ integrator = de.init(prob, de.Tsit5())
7575de.step_b(integrator)
7676```
7777
78- is valid Python code for using [ the integrator interface] ( https://diffeq .sciml.ai/stable/basics/integrator/ ) .
78+ is valid Python code for using [ the integrator interface] ( https://docs .sciml.ai/DiffEqDocs /stable/basics/integrator/ ) .
7979
8080
8181## Ordinary Differential Equation (ODE) Examples
@@ -95,8 +95,8 @@ sol = de.solve(prob)
9595```
9696
9797The solution object is the same as the one described
98- [ in the DiffEq tutorials] ( http ://diffeq .sciml.ai/dev/ tutorials/ode_example#Step-3:-Analyzing-the-Solution-1 )
99- and in the [ solution handling documentation] ( http ://diffeq .sciml.ai/dev/ basics/solution)
98+ [ in the DiffEq tutorials] ( https ://docs .sciml.ai/DiffEqDocs/stable/ tutorials/ode_example/ #Step-3:-Analyzing-the-Solution)
99+ and in the [ solution handling documentation] ( https ://docs .sciml.ai/DiffEqDocs/stable/ basics/solution/ )
100100(note: the array interface is missing). Thus for example the solution time points
101101are saved in ` sol.t ` and the solution values are saved in ` sol.u ` . Additionally,
102102the interpolation ` sol(t) ` gives a continuous solution.
@@ -125,7 +125,7 @@ plt.show()
125125
126126### Solve commands
127127
128- The [ common interface arguments] ( http ://diffeq .sciml.ai/dev/ basics/common_solver_opts)
128+ The [ common interface arguments] ( https ://docs .sciml.ai/DiffEqDocs/stable/ basics/common_solver_opts/ )
129129can be used to control the solve command. For example, let's use ` saveat ` to
130130save the solution at every ` t=0.1 ` , and let's utilize the ` Vern9() ` 9th order
131131Runge-Kutta method along with low tolerances ` abstol=reltol=1e-10 ` :
@@ -135,7 +135,7 @@ sol = de.solve(prob,de.Vern9(),saveat=0.1,abstol=1e-10,reltol=1e-10)
135135```
136136
137137The set of algorithms for ODEs is described
138- [ at the ODE solvers page] ( http ://diffeq .sciml.ai/dev/ solvers/ode_solve) .
138+ [ at the ODE solvers page] ( https ://docs .sciml.ai/DiffEqDocs/stable/ solvers/ode_solve/ ) .
139139
140140### Compilation with ` de.jit ` and Julia
141141
@@ -250,7 +250,7 @@ sol = de.solve(prob)
250250
251251Solving one-dimensonal SDEs ` du = f(u,t)dt + g(u,t)dW_t ` is like an ODE except
252252with an extra function for the diffusion (randomness or noise) term. The steps
253- follow the [ SDE tutorial] ( http ://diffeq .sciml.ai/dev/ tutorials/sde_example) .
253+ follow the [ SDE tutorial] ( https ://docs .sciml.ai/DiffEqDocs/stable/ tutorials/sde_example/ ) .
254254
255255``` py
256256def f (u ,p ,t ):
@@ -311,7 +311,7 @@ plt.show()
311311
312312In many cases you may want to share noise terms across the system. This is
313313known as non-diagonal noise. The
314- [ DifferentialEquations.jl SDE Tutorial] ( http ://diffeq .sciml.ai/dev/ tutorials/sde_example#Example-4:-Systems-of-SDEs-with-Non-Diagonal-Noise-1 )
314+ [ DifferentialEquations.jl SDE Tutorial] ( https ://docs .sciml.ai/DiffEqDocs/stable/ tutorials/sde_example/ #Example-4:-Systems-of-SDEs-with-Non-Diagonal-Noise)
315315explains how the matrix form of the diffusion term corresponds to the
316316summation style of multiple Wiener processes. Essentially, the row corresponds
317317to which system the term is applied to, and the column is which noise term.
@@ -388,7 +388,7 @@ sol = de.solve(prob)
388388
389389![ f8] ( https://user-images.githubusercontent.com/1814174/39089392-e932f012-457a-11e8-9979-c006bcfabf71.png )
390390
391- and the in-place JIT compiled form:
391+ and the in-place form:
392392
393393``` py
394394def f (resid ,du ,u ,p ,t ):
@@ -397,10 +397,11 @@ def f(resid,du,u,p,t):
397397 resid[2 ] = u[0 ] + u[1 ] + u[2 ] - 1.0
398398
399399prob = de.DAEProblem(f,du0,u0,tspan,differential_vars = differential_vars)
400- jit_prob = de.jit(prob) # Error: no method matching matching modelingtoolkitize(::SciMLBase.DAEProblem{...})
401- sol = de.solve(jit_prob)
400+ sol = de.solve(prob)
402401```
403402
403+ Note: ` de.jit() ` is not currently supported for DAE problems.
404+
404405## Mass Matrices, Sparse Arrays, and More
405406
406407Mass matrix DAEs, along with many other forms, can be handled by doing an explicit conversion to the Julia types.
@@ -762,7 +763,7 @@ For more information, see [the DiffEqGPU.jl documentation](https://docs.sciml.ai
762763
763764## Testing
764765
765- Unit tests can be run by [ ` tox ` ] ( http ://tox.readthedocs.io) .
766+ Unit tests can be run by [ ` tox ` ] ( https ://tox.readthedocs.io) .
766767
767768``` sh
768769tox
0 commit comments