You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>These exercises teach common workflows which involve DifferentialEquations.jl. The designation (B) is for "Beginner", meaning that a user new to the package should feel comfortable trying this exercise. An exercise designated (I) is for "Intermediate", meaning the user may want to have some previous background in DifferentialEquations.jl or try some (B) exercises first. The additional (E) designation is for "Experienced", which are portions of exercises which may take some work.</p>
665
+
<p>These exercises teach common workflows which involve SciML's tools like DifferentialEquations.jl, DiffEqFlux.jl, and the connections to parts like stochastic differential equations and Bayesian estimation. The designation (B) is for "Beginner", meaning that a user new to the package should feel comfortable trying this exercise. An exercise designated (I) is for "Intermediate", meaning the user may want to have some previous background in DifferentialEquations.jl or try some (B) exercises first. The additional (E) designation is for "Experienced", which are portions of exercises which may take some work.</p>
666
666
<p>The exercises are described as follows:</p>
667
667
<ul>
668
668
<li><p>Exercise 1 takes the user through solving a stiff ordinary differential equation and using the ModelingToolkit.jl to automatically convert the function to a symbolic form to derive the analytical Jacobian to speed up the solver. The same biological system is then solved with stochasticity, utilizing EnsembleProblems to understand 95% bounds on the solution. Finally, probabilistic programming is employed to perform Bayesian parameter estimation of the parameters against data.</p>
@@ -678,7 +678,7 @@ <h5>Chris Rackauckas</h5>
678
678
<li><p>Exercise 6 takes the user through training a neural stochastic differential equation, using GPU-accleration and adjoints through Flux.jl's neural network framework to build efficient training codes.</p>
679
679
</li>
680
680
</ul>
681
-
<p>This exercise worksheet is meant to be a living document leading new users through a deep dive of the DifferentialEquations.jl feature set. If you further suggestions or want to contribute new problems, please open an issue or PR at the DiffEqTutorials.jl repository.</p>
681
+
<p>This exercise worksheet is meant to be a living document leading new users through a deep dive of the DifferentialEquations.jl feature set. If you further suggestions or want to contribute new problems, please open an issue or PR at the SciMLTutorials.jl repository.</p>
682
682
<h1>Problem 1: Investigating Sources of Randomness and Uncertainty in a Stiff Biological System (B)</h1>
683
683
<p>In this problem we will walk through the basics of simulating models with DifferentialEquations.jl. Let's take the <ahref="https://www.radford.edu/~thompson/vodef90web/problems/demosnodislin/Demos_Pitagora/DemoOrego/demoorego.pdf">Oregonator model of the Belousov-Zhabotinskii chemical reaction system</a>. This system describes a classical example in non-equilibrium thermodynmics and is a well-known natural chemical oscillator.</p>
684
684
<h2>Part 1: Simulating the Oregonator ODE model</h2>
@@ -861,10 +861,10 @@ <h2>Part 1: Implementing the BRUSS PDE System as ODEs</h2>
861
861
<p>on a timespan of <spanclass="math">$t \in [0,22]$</span>.</p>
862
862
<p>To solve this PDE, we will discretize it into a system of ODEs with the finite difference method. We discretize <code>u</code> and <code>v</code> into arrays of the values at each time point: <code>u[i,j] = u(i*dx,j*dy)</code> for some choice of <code>dx</code>/<code>dy</code>, and same for <code>v</code>. Then our ODE is defined with <code>U[i,j,k] = [u v]</code>. The second derivative operator, the Laplacian, discretizes to become a tridiagonal matrix with <code>[1 -2 1]</code> and a <code>1</code> in the top right and bottom left corners. The nonlinear functions are then applied at each point in space (they are broadcast). Use <code>dx=dy=1/32</code>.</p>
863
863
<p>You will know when you have the correct solution when you plot the solution at <code>x=y=0</code> and see a periodic orbit, e.g., <code>ts=0:0.05:22; plot(ts, sol1.(ts, idxs=1))</code>.</p>
864
-
<p>If you are not familiar with this process, see <ahref="http://juliadiffeq.org/DiffEqTutorials.jl/html/introduction/03-optimizing_diffeq_code.html">the Gierer-Meinhardt example from the DiffEqTutorials.</a></p>
864
+
<p>If you are not familiar with this process, see <ahref="http://juliadiffeq.org/SciMLTutorials.jl/html/introduction/03-optimizing_diffeq_code.html">the Gierer-Meinhardt example from the SciMLTutorials.</a></p>
865
865
<p>Note: Start by doing the simplest implementation!</p>
866
866
<h2>Part 2: Optimizing the BRUSS Code</h2>
867
-
<p>PDEs are expensive to solve, and so we will go nowhere without some code optimizing! Follow the steps described in the <ahref="http://juliadiffeq.org/DiffEqTutorials.jl/html/introduction/03-optimizing_diffeq_code.html">the Gierer-Meinhardt example from the DiffEqTutorials</a> to optimize your Brusselator code. Try other formulations and see what ends up the fastest! Find a trade-off between performance and simplicity that suits your needs.</p>
867
+
<p>PDEs are expensive to solve, and so we will go nowhere without some code optimizing! Follow the steps described in the <ahref="http://juliadiffeq.org/SciMLTutorials.jl/html/introduction/03-optimizing_diffeq_code.html">the Gierer-Meinhardt example from the SciMLTutorials</a> to optimize your Brusselator code. Try other formulations and see what ends up the fastest! Find a trade-off between performance and simplicity that suits your needs.</p>
868
868
<h2>Part 3: Exploiting Jacobian Sparsity with Color Differentiation</h2>
869
869
<p>Use the <code>sparsity!</code> function from <ahref="https://github.com/JuliaDiffEq/SparseDiffTools.jl">SparseDiffTools</a> to generate the sparsity pattern for the Jacobian of this problem. Follow the documentations <ahref="https://docs.juliadiffeq.org/dev/features/performance_overloads">on the DiffEqFunction page</a> to specify the sparsity pattern of the Jacobian. Generate an add the color vector to speed up the computation of the Jacobian.</p>
870
870
<h2>(Optional) Part 4: Structured Jacobians</h2>
@@ -992,7 +992,7 @@ <h2>Part 5: Optimizing the training behavior with minibatching (E)</h2>
992
992
<divclass="footer">
993
993
<p>
994
994
Published from <ahref="01-workshop_exercises.jmd">01-workshop_exercises.jmd</a>
995
-
using <ahref="http://github.com/JunoLab/Weave.jl">Weave.jl</a> v0.10.2 on 2020-07-01.
995
+
using <ahref="http://github.com/JunoLab/Weave.jl">Weave.jl</a> v0.10.2 on 2020-07-25.
0 commit comments