Skip to content

Commit bd0a078

Browse files
Update 01-workshop_exercises.jmd
1 parent 5630cb5 commit bd0a078

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

tutorials/exercises/01-workshop_exercises.jmd

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ $$\begin{align}
6666

6767
with parameter values $s=77.27$, $w=0.161$, and $q=8.375 \times 10^{-6}$, and
6868
initial conditions $x(0)=1$, $y(0)=2$, and $z(0)=3$. Use
69-
[the tutorial on solving ODEs](http://docs.juliadiffeq.org/latest/tutorials/ode_example.html)
69+
[the tutorial on solving ODEs](http://docs.juliadiffeq.org/dev/tutorials/ode_example.html)
7070
to solve this differential equation on the
7171
timespan of $t\in[0,360]$ with the default ODE solver. To investigate the result,
7272
plot the solution of all components over time, and plot the phase space plot of
@@ -77,7 +77,7 @@ the solution (hint: use `vars=(1,2,3)`). What shape is being drawn in phase spac
7777
Because the reaction rates of `q` vs `s` is very large, this model has a "fast"
7878
system and a "slow" system. This is typical of ODEs which exhibit a property
7979
known as stiffness. Stiffness changes the ODE solvers which can handle the
80-
equation well. [Take a look at the ODE solver page](http://docs.juliadiffeq.org/latest/solvers/ode_solve.html)
80+
equation well. [Take a look at the ODE solver page](http://docs.juliadiffeq.org/dev/solvers/ode_solve.html)
8181
and investigate solving the equation using methods for non-stiff equations
8282
(ex: `Tsit5`) and stiff equations (ex: `Rodas5`).
8383

@@ -92,7 +92,7 @@ the Jacobian is costly, and thus it can be beneficial to provide the analytical
9292
solution.
9393

9494
Use the
95-
[ODEFunction definition page](http://docs.juliadiffeq.org/latest/features/performance_overloads.html)
95+
[ODEFunction definition page](http://docs.juliadiffeq.org/dev/features/performance_overloads.html)
9696
to define an `ODEFunction` which holds both the OREGO ODE and its Jacobian, and solve using `Rodas5`.
9797

9898
## (Optional) Part 4: Automatic Symbolicification and Analytical Jacobian Calculations
@@ -122,9 +122,9 @@ dz &= w(x - z)dt + \sigma_3 z dW_3\end{align}$$
122122

123123
with $\sigma_i = 0.1$ where the `dW` terms describe a Brownian motion, a
124124
continuous random process with normally distributed increments. Use the
125-
[tutorial on solving SDEs](http://docs.juliadiffeq.org/latest/tutorials/sde_example.html)
125+
[tutorial on solving SDEs](http://docs.juliadiffeq.org/dev/tutorials/sde_example.html)
126126
to solve simulate this model. Then,
127-
[use the `EnsembleProblem`](http://docs.juliadiffeq.org/latest/features/ensemble.html)
127+
[use the `EnsembleProblem`](http://docs.juliadiffeq.org/dev/features/ensemble.html)
128128
to generate and plot 100 trajectories of the stochastic model, and use
129129
`EnsembleSummary` to plot the mean and 5%-95% region over time.
130130

@@ -154,7 +154,7 @@ B + Z -> Y
154154

155155
where reactions take place at a rate which is propoertional to its components,
156156
i.e. the first reaction has a rate `k*A*Y` for some `k`.
157-
Use the [tutorial on Gillespie SSA models](http://docs.juliadiffeq.org/latest/tutorials/discrete_stochastic_example.html)
157+
Use the [tutorial on Gillespie SSA models](http://docs.juliadiffeq.org/dev/tutorials/discrete_stochastic_example.html)
158158
to implement the `JumpProblem` for this model, and use the `EnsembleProblem`
159159
and `EnsembleSummary` to characterize the stochastic trajectories.
160160

@@ -176,7 +176,7 @@ data = [1.0 2.05224 2.11422 2.1857 2.26827 2.3641 2.47618 2.60869 2.7677 2.96232
176176
3.0 2.82065 2.68703 2.58974 2.52405 2.48644 2.47449 2.48686 2.52337 2.58526 2.67563 2.80053 2.9713 3.21051 3.5712 4.23706 12.0266 14868.8 24987.8 23453.4 19202.2 15721.6 12872.0 10538.8 8628.66 7064.73 5784.29 4735.96 3877.66 3174.94 2599.6]
177177
```
178178

179-
[Follow the exmaples on the parameter estimation page](http://docs.juliadiffeq.org/latest/analysis/parameter_estimation.html#Bayesian-Methods-1)
179+
[Follow the exmaples on the parameter estimation page](http://docs.juliadiffeq.org/dev/analysis/parameter_estimation.html#Bayesian-Methods-1)
180180
to perform a Bayesian parameter estimation. What are the most likely parameters
181181
for the model given the posterior parameter distributions?
182182

@@ -190,7 +190,7 @@ parallelism section for details on how to accelerate this.
190190
DiffEqBiological.jl is a helper library for the DifferentialEquations.jl
191191
ecosystem for defining chemical reaction systems at a high leevel for easy
192192
simulation in these various forms. Use the descrption
193-
[from the Chemical Reaction Networks documentation page](http://docs.juliadiffeq.org/latest/models/biological.html)
193+
[from the Chemical Reaction Networks documentation page](http://docs.juliadiffeq.org/dev/models/biological.html)
194194
to build a reaction network and generate the ODE/SDE/jump equations, and
195195
compare the result to your handcoded versions.
196196

@@ -223,7 +223,7 @@ $$\begin{align}
223223

224224
with $t \in [0,90]$, $u_0 = [100.0,0]$, and $p=[K_a,K_e]=[2.268,0.07398]$.
225225

226-
With this model, use [the event handling documentation page](http://docs.juliadiffeq.org/latest/features/callback_functions.html)
226+
With this model, use [the event handling documentation page](http://docs.juliadiffeq.org/dev/features/callback_functions.html)
227227
to define a `DiscreteCallback` which fires at `t ∈ [24,48,72]` and adds a
228228
dose of 100 into `[Depot]`. (Hint: you'll want to set `tstops=[24,48,72]` to
229229
force the ODE solver to step at these times).
@@ -241,7 +241,7 @@ $$\begin{align}
241241
\frac{d[Central]}{dt} &= K_a [Depot](t-\tau) - K_e [Central]\end{align}$$
242242

243243
where the parameter $τ = 6.0$.
244-
[Use the DDE tutorial](http://docs.juliadiffeq.org/latest/tutorials/dde_example.html)
244+
[Use the DDE tutorial](http://docs.juliadiffeq.org/dev/tutorials/dde_example.html)
245245
to define and solve this delayed version of the hybrid model.
246246

247247
## Part 3: Automatic Differentiation (AD) for Optimization (I)
@@ -254,7 +254,7 @@ do this is via Automatic Differentition (AD). For small numbers of parameters
254254
we will make use of ForwardDiff.jl to use Dual number arithmetic to retrive
255255
both the solution and its derivative w.r.t. parameters in a single solve.
256256

257-
[Use the information from the page on local sensitvity analysis](http://docs.juliadiffeq.org/latest/analysis/sensitivity.html)
257+
[Use the information from the page on local sensitvity analysis](http://docs.juliadiffeq.org/dev/analysis/sensitivity.html)
258258
to define the input dual numbers, solve the equation, and plot both the solution
259259
over time and the derivative of the solution w.r.t. the parameters.
260260

@@ -268,7 +268,7 @@ data = [100.0 0.246196 0.000597933 0.24547 0.000596251 0.245275 0.000595453 0.24
268268
0.0 53.7939 16.8784 58.7789 18.3777 59.1879 18.5003 59.2611]
269269
```
270270

271-
Use [the parameter estimation page](http://docs.juliadiffeq.org/latest/analysis/parameter_estimation.html)
271+
Use [the parameter estimation page](http://docs.juliadiffeq.org/dev/analysis/parameter_estimation.html)
272272
to define a loss function with `build_loss_objective` and optimize the parameters
273273
against the data. What parameters were used to generate the data?
274274

@@ -282,15 +282,15 @@ concentration falls below 25. To model this effect, we will need to use
282282
`ContinuousCallbacks` to define a callback that triggers when `[Central]` falls
283283
below the threshold value.
284284

285-
[Use the documentation on the event handling page](http://docs.juliadiffeq.org/latest/features/callback_functions.html) to define such a callback,
285+
[Use the documentation on the event handling page](http://docs.juliadiffeq.org/dev/features/callback_functions.html) to define such a callback,
286286
and plot the solution over time. How many times does the auto-doser administer
287287
a dose? How much does this change as you change the delay time $\tau$?
288288

289289
## Part 6: Global Sensitivity Analysis with the Morris and Sobol Methods
290290

291291
To understand how the parameters effect the solution in a global sense, one
292292
wants to use Global Sensitivity Analysis. Use the
293-
[GSA documentation page](http://docs.juliadiffeq.org/latest/analysis/global_sensitivity.html)
293+
[GSA documentation page](http://docs.juliadiffeq.org/dev/analysis/global_sensitivity.html)
294294
perform global sensitivity analysis and quantify the effect of the various
295295
parameters on the solution.
296296

@@ -327,14 +327,14 @@ $$\begin{align}
327327

328328
with $y(0) = [1,0,0]$ and $dy(0) = [-0.04,0.04,0.0]$ using the mass-matrix
329329
formulation and `Rodas5()`. Use the
330-
[ODEProblem page](http://docs.juliadiffeq.org/latest/types/ode_types.html)
330+
[ODEProblem page](http://docs.juliadiffeq.org/dev/types/ode_types.html)
331331
to find out how to declare a mass matrix.
332332

333333
(Hint: what if the last row has all zeros?)
334334

335335
## Part 2: Solving the Implicit Robertson Equations with IDA
336336

337-
Use the [DAE Tutorial](http://docs.juliadiffeq.org/latest/tutorials/dae_example.html)
337+
Use the [DAE Tutorial](http://docs.juliadiffeq.org/dev/tutorials/dae_example.html)
338338
to define a DAE in its implicit form and solve the Robertson equation with IDA.
339339
Why is `differential_vars = [true,true,false]`?
340340

@@ -455,7 +455,7 @@ your needs.
455455

456456
Use the `sparsity!` function from [SparseDiffTools](https://github.com/JuliaDiffEq/SparseDiffTools.jl)
457457
to generate the sparsity pattern for the Jacobian of this problem. Follow
458-
the documentations [on the DiffEqFunction page](http://docs.juliadiffeq.org/latest/features/performance_overloads.html)
458+
the documentations [on the DiffEqFunction page](http://docs.juliadiffeq.org/dev/features/performance_overloads.html)
459459
to specify the sparsity pattern of the Jacobian. Generate an add the color
460460
vector to speed up the computation of the Jacobian.
461461

@@ -473,15 +473,15 @@ solve with an analytical sparse Jacobian.
473473

474474
## Part 6: Utilizing Preconditioned-GMRES Linear Solvers
475475

476-
Use the [linear solver specification page](http://docs.juliadiffeq.org/latest/features/linear_nonlinear.html)
476+
Use the [linear solver specification page](http://docs.juliadiffeq.org/dev/features/linear_nonlinear.html)
477477
to solve the equation with `TRBDF2` with GMRES. Use the Sundials documentation
478478
to solve the equation with `CVODE_BDF` with Sundials' special internal GMRES.
479479
To both of these, use the [AlgebraicMultigrid.jl](https://github.com/JuliaLinearAlgebra/AlgebraicMultigrid.jl)
480480
to add a preconditioner to the GMRES solver.
481481

482482
## Part 7: Exploring IMEX and Exponential Integrator Techniques (E)
483483

484-
Instead of using the standard `ODEProblem`, define a [`SplitODEProblem`](http://docs.juliadiffeq.org/latest/types/split_ode_types.html)
484+
Instead of using the standard `ODEProblem`, define a [`SplitODEProblem`](http://docs.juliadiffeq.org/dev/types/split_ode_types.html)
485485
to move some of the equation to the "non-stiff part". Try different splits
486486
and solve with `KenCarp4` to see if the solution can be accelerated.
487487

@@ -514,7 +514,7 @@ where forward sensitivity analysis (forward-mode automatic differentiation)
514514
is no longer suitable, and for these cases one uses adjoint sensitivity analysis.
515515

516516
Rewrite the PDE so the constant terms are parameters, and use the
517-
[adjoint sensitivity analysis](http://docs.juliadiffeq.org/latest/analysis/sensitivity.html#Adjoint-Sensitivity-Analysis-1)
517+
[adjoint sensitivity analysis](http://docs.juliadiffeq.org/dev/analysis/sensitivity.html#Adjoint-Sensitivity-Analysis-1)
518518
documentation to solve for the solution gradient with a cost function being the
519519
L2 distance of the solution from the value 1. Solve with interpolated and
520520
checkpointed adjoints. Play with using reverse-mode automatic differentiation
@@ -549,7 +549,7 @@ Solve this system over the timespan $t\in[0,1000]$
549549
## (Optional) Part 2: Alternative Dynamical Implmentations of Henon-Heiles (B)
550550

551551
The Henon-Heiles defines a Hamiltonian system with certain structures which
552-
can be utilized for a more efficient solution. Use [the Dynamical problems page](http://docs.juliadiffeq.org/latest/types/dynamical_types.html)
552+
can be utilized for a more efficient solution. Use [the Dynamical problems page](http://docs.juliadiffeq.org/dev/types/dynamical_types.html)
553553
to define a `SecondOrderODEProblem` corresponding to the acceleration terms:
554554

555555
$$\begin{align}
@@ -568,7 +568,7 @@ Solve this problem using the `HamiltonianProblem` constructor from DiffEqPhysics
568568

569569
To understand the orbits of the Henon-Heiles system, it can be useful to solve
570570
the system with many different initial conditions. Use the
571-
[ensemble interface](http://docs.juliadiffeq.org/latest/features/ensemble.html)
571+
[ensemble interface](http://docs.juliadiffeq.org/dev/features/ensemble.html)
572572
to solve with randomized initial conditions in parallel using threads with
573573
`EnsembleThreads()`. Then, use `addprocs()` to add more cores and solve using
574574
`EnsembleDistributed()`. The former will solve using all of the cores on a

0 commit comments

Comments
 (0)