Feagin's Order 10, 12, and 14 Methods

Chris Rackauckas

DifferentialEquations.jl includes Feagin's explicit Runge-Kutta methods of orders 10/8, 12/10, and 14/12. These methods have such high order that it's pretty much required that one uses numbers with more precision than Float64. As a prerequisite reference on how to use arbitrary number systems (including higher precision) in the numerical solvers, please see the Solving Equations in With Chosen Number Types notebook.

Investigation of the Method's Error

We can use Feagin's order 16 method as follows. Let's use a two-dimensional linear ODE. Like in the Solving Equations in With Chosen Number Types notebook, we change the initial condition to BigFloats to tell the solver to use BigFloat types.

using DifferentialEquations
const linear_bigα = big(1.01)
f(u,p,t) = (linear_bigα*u)

# Add analytical solution so that errors are checked
f_analytic(u0,p,t) = u0*exp(linear_bigα*t)
ff = ODEFunction(f,analytic=f_analytic)
prob = ODEProblem(ff,big(0.5),(0.0,1.0))
sol = solve(prob,Feagin14(),dt=1//16,adaptive=false);
println(sol.errors)
Dict{Symbol, BigFloat}(:l∞ => 2.1975104034266099178147026326495605606836593
67683780324635801610297349872909655e-23, :final => 2.1975104034266099178147
02632649560560683659367683780324635801610297349872909655e-23, :l2 => 1.0615
01597814768635894514677590712762248364686527596359902826841740549975688161e
-23)

Compare that to machine $\epsilon$ for Float64:

eps(Float64)
2.220446049250313e-16

The error for Feagin's method when the stepsize is 1/16 is 8 orders of magnitude below machine $\epsilon$! However, that is dependent on the stepsize. If we instead use adaptive timestepping with the default tolerances, we get

sol =solve(prob,Feagin14());
println(sol.errors); print("The length was $(length(sol))")
Dict{Symbol, BigFloat}(:l∞ => 1.5457388839431409625465375986097592198164147
90728029220638828884206395861982752e-09, :final => 1.5457388839431409625465
37598609759219816414790728029220638828884206395861982752e-09, :l2 => 8.9250
66870202330409924421192162193462506388332261074725109949218067763405137993e
-10)
The length was 3

Notice that when the stepsize is much higher, the error goes up quickly as well. These super high order methods are best when used to gain really accurate approximations (using still modest timesteps). Some examples of where such precision is necessary is astrodynamics where the many-body problem is highly chaotic and thus sensitive to small errors.

Convergence Test

The Order 14 method is awesome, but we need to make sure it's really that awesome. The following convergence test is used in the package tests in order to make sure the implementation is correct. Note that all methods have such tests in place.

using DiffEqDevTools
dts = 1.0 ./ 2.0 .^(10:-1:4)
sim = test_convergence(dts,prob,Feagin14())
DiffEqDevTools.ConvergenceSimulation{SciMLBase.ODESolution{BigFloat, 1, Vec
tor{BigFloat}, Vector{BigFloat}, Dict{Symbol, BigFloat}, Vector{Float64}, V
ector{Vector{BigFloat}}, SciMLBase.ODEProblem{BigFloat, Tuple{Float64, Floa
t64}, false, SciMLBase.NullParameters, SciMLBase.ODEFunction{false, typeof(
Main.##WeaveSandBox#1124.f), LinearAlgebra.UniformScaling{Bool}, typeof(Mai
n.##WeaveSandBox#1124.f_analytic), Nothing, Nothing, Nothing, Nothing, Noth
ing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase
.DEFAULT_OBSERVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{
}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEq.
Feagin14, OrdinaryDiffEq.InterpolationData{SciMLBase.ODEFunction{false, typ
eof(Main.##WeaveSandBox#1124.f), LinearAlgebra.UniformScaling{Bool}, typeof
(Main.##WeaveSandBox#1124.f_analytic), Nothing, Nothing, Nothing, Nothing, 
Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciML
Base.DEFAULT_OBSERVED), Nothing}, Vector{BigFloat}, Vector{Float64}, Vector
{Vector{BigFloat}}, OrdinaryDiffEq.Feagin14ConstantCache{BigFloat, Float64}
}, DiffEqBase.DEStats}}(SciMLBase.ODESolution{BigFloat, 1, Vector{BigFloat}
, Vector{BigFloat}, Dict{Symbol, BigFloat}, Vector{Float64}, Vector{Vector{
BigFloat}}, SciMLBase.ODEProblem{BigFloat, Tuple{Float64, Float64}, false, 
SciMLBase.NullParameters, SciMLBase.ODEFunction{false, typeof(Main.##WeaveS
andBox#1124.f), LinearAlgebra.UniformScaling{Bool}, typeof(Main.##WeaveSand
Box#1124.f_analytic), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing,
 Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSE
RVED), Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple
{(), Tuple{}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEq.Feagin14, Ord
inaryDiffEq.InterpolationData{SciMLBase.ODEFunction{false, typeof(Main.##We
aveSandBox#1124.f), LinearAlgebra.UniformScaling{Bool}, typeof(Main.##Weave
SandBox#1124.f_analytic), Nothing, Nothing, Nothing, Nothing, Nothing, Noth
ing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_
OBSERVED), Nothing}, Vector{BigFloat}, Vector{Float64}, Vector{Vector{BigFl
oat}}, OrdinaryDiffEq.Feagin14ConstantCache{BigFloat, Float64}}, DiffEqBase
.DEStats}[t: [0.0, 0.0009765625, 0.001953125, 0.0029296875, 0.00390625, 0.0
048828125, 0.005859375, 0.0068359375, 0.0078125, 0.0087890625  …  0.9912109
375, 0.9921875, 0.9931640625, 0.994140625, 0.9951171875, 0.99609375, 0.9970
703125, 0.998046875, 0.9990234375, 1.0]
u: BigFloat[0.50, 0.5004934073532741442240167407783486492180603021615841294
52202794115660211219599, 0.500987301608180818440355281223188950584910597683
3766213492949239260841368026092, 0.5014816832452017142719825709983542121453
3336316613095293438972188206055292586, 0.5019765527452926697413863031219664
328338088601822445017121888607974310367490053, 0.50247191058988413716521501
79563239002143316649080207098547071166987523430816898, 0.502967757260881651
5106435191675246046427648760687772460544794831604624949834855, 0.5034640932
406662992139192389830628016370303392435659971381052766108783597241391, 0.50
396091901209518746154563970525241120918072457951989067083504574325947816539
15, 0.504458235058501913934559188511648417802868424125759953366000451921798
6099443769  …  1.3606681506044349509999505354431852352163391999270684367421
06414044679239515405, 1.362010877946183268827001169225864534157243515073039
951153177861472631409617242, 1.36335493031101930838372463784595682752195537
609659291992754149268935330476256, 1.36470030900649533914994667058892723740
3312989133498476567243275650792209901316, 1.3660470153414539424145962795447
72708050551524408051147344999020270553111340215, 1.367395050626029284574375
015655225687307700620914621502414819287823171439227302, 1.36874441617164839
1688936077411190219324498098498429005876504282210656625474981, 1.3700951132
91032425293813214601928520794629811024108089775792586183724683573052, 1.371
447143298197959472340593110913203812626370594321605117950295569839313271375
, 1.37280050750845825918780601155411735836188549033294491231479506286094526
5969766], t: [0.0, 0.001953125, 0.00390625, 0.005859375, 0.0078125, 0.00976
5625, 0.01171875, 0.013671875, 0.015625, 0.017578125  …  0.982421875, 0.984
375, 0.986328125, 0.98828125, 0.990234375, 0.9921875, 0.994140625, 0.996093
75, 0.998046875, 1.0]
u: BigFloat[0.50, 0.5009873016081808184403552812231889505849105976869970947
216582055241988418330043, 0.50197655274529266974138630312196643283380886018
94997464536470643897825028575861, 0.502967757260881651510643519167524604642
764876079681602511069749881119893067103, 0.50396091901209518746154563970525
24112091807245940877416493974506008240426203329, 0.504956041863697037016356
8930910938780783930787757357867798953848057143406933377, 0.5059531296880823
345471746020389471304909424091056168364541340183078255553277085, 0.50695218
63652926583134503856740792313682294541010285050589346576968266665528748, 0.
507953215783031129154683858104667438830905843059054531062193869152593801987
2, 0.5089562218366775389970434828264868922469483072826175429449686273069735
423750136  …  1.34864301545859247967509602307176367401641641210475048875695
337449929440786918, 1.35130605029464067315359841454792588096269341231012308
6924207034022962413754022, 1.3539743435678414104792857791059277027193819496
29470176176029438646040014028995, 1.356647905661521606100766158464652339627
531793759463868102607480971985702621672, 1.35932674697951112518845216660562
3784669936757385516206254234939429597151648064, 1.3620108779461832688270011
69225864534157243520073188743602186030419166325630835, 1.364700309006495339
14994667058892723740331299415338282713705459498054912456936, 1.367395050626
029284574375015655225687307700625954299855029057120653933933847354, 1.37009
51132910324252938132146019285207946298160836390422151163694340862252063, 1.
372800507508458259187806011554117358361885495412387216596637263939057644809
585], t: [0.0, 0.00390625, 0.0078125, 0.01171875, 0.015625, 0.01953125, 0.0
234375, 0.02734375, 0.03125, 0.03515625  …  0.96484375, 0.96875, 0.97265625
, 0.9765625, 0.98046875, 0.984375, 0.98828125, 0.9921875, 0.99609375, 1.0]
u: BigFloat[0.50, 0.5019765527452926697413863031219664328338089596679027919
888741103974398448576829, 0.50396091901209518746154563970525241120918092433
73910752677848686355143273445556, 0.505953129688082334547174602038947130490
9427099049813605553848314515187463009496, 0.5079532157830311291546838581046
674388309062457103293891502691351497465467261813, 0.50996120842930350923278
5259415024406524958042349110331141518638069250199676435, 0.5119771388823309
23641985750275520143854574772980860481510242829813108584126115, 0.514001038
5211008389138964373154846258498358689286147531125652428267236364526061, 0.5
160329388486451692230830905819969144868470465940686994015887118451172282452
837, 0.51807287149253063717412013329248710548519771111335349047947245099497
99099094199  …  1.324910628454177546699995024759245940440919035869353532178
274979609386868635781, 1.33014813993405462867526880344471252204348922373995
5282684225096368730900386558, 1.3354063558493198164900848637876127679604780
49811958588576423121371759005353977, 1.340685358046790322335041702613370942
319016635913214729849926370533428936466432, 1.34598522869683246090918314024
5165332509908446336022662937657343709867017771688, 1.3513060502946406731535
98414547925880962760896126504201689516014513211559127835, 1.356647905661521
606100766158464652339627599813198025862866692566448305652099871, 1.36201087
7946183268827001169225864534157312078314101084876138019637668867105307, 1.3
673950506260292845743750156552256873077697261945049092191653877874628467060
66, 1.372800507508458259187806011554117358361955140865683163444664161725836
562110807], t: [0.0, 0.0078125, 0.015625, 0.0234375, 0.03125, 0.0390625, 0.
046875, 0.0546875, 0.0625, 0.0703125  …  0.9296875, 0.9375, 0.9453125, 0.95
3125, 0.9609375, 0.96875, 0.9765625, 0.984375, 0.9921875, 1.0]
u: BigFloat[0.50, 0.5039609190120951874615456397052524112111879130152678185
972878772909801438539725, 0.50795321578303112915468385810466743883495202114
45279229156914347577732228682629, 0.511977138882330923641985750275520143860
6915110986662360617789298294706379239618, 0.5160329388486451692230830905819
96914495067305162617236525505000550159426923494, 0.520120868205351073036564
3024626851557639184785285451286948438374521217071188324, 0.5242411814762751
337774973218812134360586606206771934231862500076957565363308646, 0.52839413
52015403769607464142521774116458265525572890561728945609507560270251758, 0.
532579987953539129415176225095942661306833922007042413660746971902517988027
2659, 0.5367990003530323275101958345252554486169547480536807778674613463641
61391270671  …  1.278691378528666663061419567734810219225057268467188197890
749511286039814682961, 1.28882096451229946257972559447843216250288715170826
8911920429452719237031672889, 1.2990307954353467102700618873848859068511184
7286542819859803450631324042075354, 1.3093215069852207083608767825998856173
05680877664407188219768945081296125363463, 1.319693739885146473355596260460
075276820407682877165061218322278576772888141989, 1.33014813993405462867526
8803444712522700344601505102906797926571988117634577709, 1.3406853580467903
22335041702613370942986414700099829148697106600907447993876335, 1.351306050
294640673153598414547925881640827460343653263042386265204459670148168, 1.36
201087794618326882700116922586453484617428790917305214715458105432837901989
4, 1.3728005075084582591878060115541173590617414861285190771349018784370260
32283726], t: [0.0, 0.015625, 0.03125, 0.046875, 0.0625, 0.078125, 0.09375,
 0.109375, 0.125, 0.140625  …  0.859375, 0.875, 0.890625, 0.90625, 0.921875
, 0.9375, 0.953125, 0.96875, 0.984375, 1.0]
u: BigFloat[0.50, 0.5079532157830311291546838581046674228648435931525498190
278213939882467623443407, 0.51603293884864516922308309058199688204679557555
37640078345474392168602557520595, 0.524241181476275133777497321881213386612
0487057078897985952628075072800031634668, 0.5325799879535391294151762250959
425943293258372491737121300708996931105182686892, 0.54105143508537636149437
50093333620112324860397855474272871650047471573253335466, 0.549657632711281
6769034687550989237307955190439443562958216377582793355171347836, 0.5584007
242307674626882271691434832264014636154224009359108553180731368099218107, 0
.56728288713718376841017722890892910914534927957669258403882463243694705413
29958, 0.576306333560029601749846103643822584449515926861513757846110140307
5168130161427  …  1.1910336808448971384801387451313626311041821234303624933
41676788830879226337858, 1.209978776582131731617051708708410892779229149607
19360099713235492900284779981, 1.229225221188223144617416241361990712052620
148424773445644365505495011922745439, 1.24877780804833135875651382983940481
9440872534223897340978037770853624093056804, 1.2686414067932693723301711234
73022743877631147466907756310015221824454321458462, 1.288820964512299462579
725594478429731261988424253379253261167688863620014837669, 1.30932150698522
0708360876782599883106227194078928307355592757175919985164258564, 1.3301481
3993405462867526880344470992985954682818207565575624581067560987566062, 1.3
513060502946406731535984145479232050719649354675944552369964535610982815942
27, 1.372800507508458259187806011554114596757211232433432893362855858032659
14211007], t: [0.0, 0.03125, 0.0625, 0.09375, 0.125, 0.15625, 0.1875, 0.218
75, 0.25, 0.28125  …  0.71875, 0.75, 0.78125, 0.8125, 0.84375, 0.875, 0.906
25, 0.9375, 0.96875, 1.0]
u: BigFloat[0.50, 0.5160329388486451692230830905761645510166025236059793420
81272221990055728561679, 0.532579987953539129415176225083903894641931169817
6330530726315794171525645034893, 0.5496576327112816769034687550802866340567
114355433590002071694871709322410405931, 0.56728288713718376841017722888328
28270073935705216193322632159538121017711969774, 0.585473310815890461621019
6190827662219055210008829792702890722633372001092380584, 0.6042470263955404
578588421618108943195685209948140048324759492077870732303989337, 0.62362273
76428912250695033937265522498285111444862489660878884721013969830771631, 0.
643619748077397554810697726960708152129622579985972873985637448596666363180
053, 0.66425798020280820325088307482585132534106704873625388888034286900680
76152641046  …  1.033333846504426712082580354960107935043970613756493163451
1294626091384818214, 1.0664686032469082465446852271794933182809166964255378
32438762276651139095129374, 1.100665855046623660308919551395610359208286716
684431112070414408183611765253205, 1.13595967174013219044727424686007597453
6172903481653049159364319427066929995183, 1.1723852156432053491987697297701
67158307196511889785786439894918782978322870963, 1.209978776582131731617051
708325497527117244553498434756316642412641437610370797, 1.24877780804833135
8756513829430099007097842940139504429315922973879445769691784, 1.2888209645
1229946257972559404143259768018368155787883476891071715795301279543, 1.3301
48139934054628675268802978666438630864641254421813595879534440847470751688,
 1.372800507508458259187806011057611283394590006590596578199873499201906331
611072], t: [0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 
0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0]
u: BigFloat[0.50, 0.5325799879535391294151756922663100127575701279367674657
299889518448727031384926, 0.56728288713718376841017609381133190281668498488
55565501534311815341659662084392, 0.604247026395540457858840348261076470751
5845791230606683491210486718827818716904, 0.6436197480773975548106951513331
34437286938781958375274884622802079377793549762, 0.685557995355440557982096
349246370736930808950070979750802507189818563351642024, 0.73022893781570593
36084349405886010308809987247048142151879999305882306169718902, 0.777810637
810428680311119693945339493753691675945670302006794689942184819812709, 0.82
849276023042538690428396700476452263279640532871508910845350344109696753782
66, 0.882477328526228669757698486772395431354193449529466082277853631417758
5961942936, 0.9399795299915405153402248568618947272920440084137115643604676
307008419853257788, 1.00122857351893604093217965458142490311824502494352804
9619445960282439336451516, 1.0664686032469082465446724238467060826602271350
5450493171046906577618017533485, 1.1359596717401321904472594727959625271540
69506739201242159983984002811333382739, 1.209978776582131731617034761065124
311009358614495571372335128166979326800445978, 1.28882096451229946257970625
3102020998553494397009716401282671347081826473196884, 1.3728005075084582591
87784036450083092262707343306282981254591926965493411372691]], Dict{Any, An
y}(:l∞ => BigFloat[3.354354545962993017750167938278129130201240818733894747
246416797762893693012556e-49, 5.0797777397364385003798873956336475786701551
6067866884666732578123388975047482e-45, 6.965053307368658446539816666631293
486902250519752824131061460869466635839790668e-41, 6.9985599579590960027470
31148778557831077884643242480170494801380170765753974579e-37, 2.76160467425
7899176583497342905526511107065867988065457455490380825745507598647e-33, 4.
965060749672954837420128986603252643572639175648660423260171211890675951960
709e-28, 2.1975104034266099178147026326495605606836593676837803246358016102
97349872909655e-23], :final => BigFloat[3.354354545962993017750167938278129
130201240818733894747246416797762893693012556e-49, 5.0797777397364385003798
8739563364757867015516067866884666732578123388975047482e-45, 6.965053307368
658446539816666631293486902250519752824131061460869466635839790668e-41, 6.9
985599579590960027470311487785578310778846432424801704948013801707657539745
79e-37, 2.76160467425789917658349734290552651110706586798806545745549038082
5745507598647e-33, 4.965060749672954837420128986603252643572639175648660423
260171211890675951960709e-28, 2.1975104034266099178147026326495605606836593
67683780324635801610297349872909655e-23], :l2 => BigFloat[1.557658061895966
325846207347700821566122250234951867982385249845278493662676944e-49, 2.3604
11657197547333498547223212880765989953910523198376084992961121455787643313e
-45, 3.24060760516074676637178554271828070823716806609832930426777898390162
3487961701e-41, 3.264565979149024498598621687244084221464920048688554495210
368172485686228822379e-37, 1.2947776667473864852636114197311110560713898649
84176915402703871046417929063523e-33, 2.35148503019100306142594944698233564
8801181524332244933545614443786091245762492e-28, 1.061501597814768635894514
677590712762248364686527596359902826841740549975688161e-23]), 7, Dict(:dts 
=> [0.0009765625, 0.001953125, 0.00390625, 0.0078125, 0.015625, 0.03125, 0.
0625]), Dict{Any, Any}(:l∞ => 14.293327546103852435000893132848160405565048
16254374715376150534187461411604701, :final => 14.2933275461038524350008931
3284816040556504816254374715376150534187461411604701, :l2 => 14.30280974051
840423232019057634315242594313233119811212889763182960978082577142), [0.000
9765625, 0.001953125, 0.00390625, 0.0078125, 0.015625, 0.03125, 0.0625])

For a view of what's going on, let's plot the simulation results.

using Plots
gr()
plot(sim)

This is a clear trend indicating that the convergence is truly Order 14, which is the estimated slope.

Appendix

These tutorials are a part of the SciMLTutorials.jl repository, found at: https://github.com/SciML/SciMLTutorials.jl. For more information on high-performance scientific machine learning, check out the SciML Open Source Software Organization https://sciml.ai.

To locally run this tutorial, do the following commands:

using SciMLTutorials
SciMLTutorials.weave_file("tutorials/ode_extras","02-feagin.jmd")

Computer Information:

Julia Version 1.6.2
Commit 1b93d53fc4 (2021-07-14 15:36 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: AMD EPYC 7502 32-Core Processor
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, znver2)
Environment:
  JULIA_DEPOT_PATH = /root/.cache/julia-buildkite-plugin/depots/a6029d3a-f78b-41ea-bc97-28aa57c6c6ea
  JULIA_NUM_THREADS = 16

Package Information:

      Status `/var/lib/buildkite-agent/builds/5-amdci4-julia-csail-mit-edu/julialang/scimltutorials-dot-jl/tutorials/ode_extras/Project.toml`
  [f3b72e0c] DiffEqDevTools v2.27.2
  [0c46a032] DifferentialEquations v6.17.1
  [961ee093] ModelingToolkit v5.17.3
  [76087f3c] NLopt v0.6.2
  [2774e3e8] NLsolve v4.5.1
  [429524aa] Optim v1.3.0
  [1dea7af3] OrdinaryDiffEq v5.56.0
  [91a5bcdd] Plots v1.15.2
  [30cb0354] SciMLTutorials v0.9.0
  [37e2e46d] LinearAlgebra
  [2f01184e] SparseArrays

And the full manifest:

      Status `/var/lib/buildkite-agent/builds/5-amdci4-julia-csail-mit-edu/julialang/scimltutorials-dot-jl/tutorials/ode_extras/Manifest.toml`
  [c3fe647b] AbstractAlgebra v0.16.0
  [1520ce14] AbstractTrees v0.3.4
  [79e6a3ab] Adapt v3.3.0
  [ec485272] ArnoldiMethod v0.1.0
  [4fba245c] ArrayInterface v3.1.15
  [4c555306] ArrayLayouts v0.7.0
  [aae01518] BandedMatrices v0.16.9
  [6e4b80f9] BenchmarkTools v1.0.0
  [764a87c0] BoundaryValueDiffEq v2.7.1
  [fa961155] CEnum v0.4.1
  [00ebfdb7] CSTParser v2.5.0
  [d360d2e6] ChainRulesCore v0.9.44
  [b630d9fa] CheapThreads v0.2.5
  [523fee87] CodecBzip2 v0.7.2
  [944b1d66] CodecZlib v0.7.0
  [35d6a980] ColorSchemes v3.12.1
  [3da002f7] ColorTypes v0.11.0
  [5ae59095] Colors v0.12.8
  [861a8166] Combinatorics v1.0.2
  [a80b9123] CommonMark v0.8.1
  [38540f10] CommonSolve v0.2.0
  [bbf7d656] CommonSubexpressions v0.3.0
  [34da2185] Compat v3.30.0
  [8f4d0f93] Conda v1.5.2
  [187b0558] ConstructionBase v1.2.1
  [d38c429a] Contour v0.5.7
  [a8cc5b0e] Crayons v4.0.4
  [9a962f9c] DataAPI v1.6.0
  [864edb3b] DataStructures v0.18.9
  [e2d170a0] DataValueInterfaces v1.0.0
  [bcd4f6db] DelayDiffEq v5.31.0
  [2b5f629d] DiffEqBase v6.62.2
  [459566f4] DiffEqCallbacks v2.16.1
  [f3b72e0c] DiffEqDevTools v2.27.2
  [5a0ffddc] DiffEqFinancial v2.4.0
  [c894b116] DiffEqJump v6.14.2
  [77a26b50] DiffEqNoiseProcess v5.7.3
  [055956cb] DiffEqPhysics v3.9.0
  [163ba53b] DiffResults v1.0.3
  [b552c78f] DiffRules v1.0.2
  [0c46a032] DifferentialEquations v6.17.1
  [c619ae07] DimensionalPlotRecipes v1.2.0
  [b4f34e82] Distances v0.10.3
  [31c24e10] Distributions v0.24.18
  [ffbed154] DocStringExtensions v0.8.4
  [e30172f5] Documenter v0.26.3
  [d4d017d3] ExponentialUtilities v1.8.4
  [e2ba6199] ExprTools v0.1.3
  [c87230d0] FFMPEG v0.4.0
  [7034ab61] FastBroadcast v0.1.8
  [9aa1b823] FastClosures v0.3.2
  [1a297f60] FillArrays v0.11.7
  [6a86dc24] FiniteDiff v2.8.0
  [53c48c17] FixedPointNumbers v0.8.4
  [59287772] Formatting v0.4.2
  [f6369f11] ForwardDiff v0.10.18
  [069b7b12] FunctionWrappers v1.1.2
  [28b8d3ca] GR v0.57.4
  [5c1252a2] GeometryBasics v0.3.12
  [42e2da0e] Grisu v1.0.2
  [cd3eb016] HTTP v0.9.9
  [eafb193a] Highlights v0.4.5
  [0e44f5e4] Hwloc v2.0.0
  [7073ff75] IJulia v1.23.2
  [b5f81e59] IOCapture v0.1.1
  [615f187c] IfElse v0.1.0
  [d25df0c9] Inflate v0.1.2
  [83e8ac13] IniFile v0.5.0
  [c8e1da08] IterTools v1.3.0
  [42fd0dbc] IterativeSolvers v0.9.1
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.3.0
  [682c06a0] JSON v0.21.1
  [7d188eb4] JSONSchema v0.3.3
  [98e50ef6] JuliaFormatter v0.13.7
  [b964fa9f] LaTeXStrings v1.2.1
  [2ee39098] LabelledArrays v1.6.1
  [23fbe1c1] Latexify v0.15.5
  [093fc24a] LightGraphs v1.3.5
  [d3d80556] LineSearches v7.1.1
  [2ab3a3ac] LogExpFunctions v0.2.4
  [bdcacae8] LoopVectorization v0.12.23
  [1914dd2f] MacroTools v0.5.6
  [b8f27783] MathOptInterface v0.9.22
  [fdba3010] MathProgBase v0.7.8
  [739be429] MbedTLS v1.0.3
  [442fdcdd] Measures v0.3.1
  [e1d29d7a] Missings v1.0.0
  [961ee093] ModelingToolkit v5.17.3
  [46d2c3a1] MuladdMacro v0.2.2
  [f9640e96] MultiScaleArrays v1.8.1
  [ffc61752] Mustache v1.0.10
  [d8a4904e] MutableArithmetics v0.2.19
  [d41bc354] NLSolversBase v7.8.0
  [76087f3c] NLopt v0.6.2
  [2774e3e8] NLsolve v4.5.1
  [77ba4419] NaNMath v0.3.5
  [8913a72c] NonlinearSolve v0.3.8
  [6fe1bfb0] OffsetArrays v1.9.0
  [429524aa] Optim v1.3.0
  [bac558e1] OrderedCollections v1.4.1
  [1dea7af3] OrdinaryDiffEq v5.56.0
  [90014a1f] PDMats v0.11.0
  [65888b18] ParameterizedFunctions v5.10.0
  [d96e819e] Parameters v0.12.2
  [69de0a69] Parsers v1.1.0
  [ccf2f8ad] PlotThemes v2.0.1
  [995b91a9] PlotUtils v1.0.10
  [91a5bcdd] Plots v1.15.2
  [e409e4f3] PoissonRandom v0.4.0
  [f517fe37] Polyester v0.3.1
  [85a6dd25] PositiveFactorizations v0.2.4
  [21216c6a] Preferences v1.2.2
  [1fd47b50] QuadGK v2.4.1
  [74087812] Random123 v1.3.1
  [fb686558] RandomExtensions v0.4.3
  [e6cf234a] RandomNumbers v1.4.0
  [3cdcf5f2] RecipesBase v1.1.1
  [01d81517] RecipesPipeline v0.3.2
  [731186ca] RecursiveArrayTools v2.11.4
  [f2c3362d] RecursiveFactorization v0.1.12
  [189a3867] Reexport v1.0.0
  [ae029012] Requires v1.1.3
  [ae5879a3] ResettableStacks v1.1.0
  [79098fc4] Rmath v0.7.0
  [47965b36] RootedTrees v1.0.0
  [7e49a35a] RuntimeGeneratedFunctions v0.5.2
  [476501e8] SLEEFPirates v0.6.20
  [1bc83da4] SafeTestsets v0.0.1
  [0bca4576] SciMLBase v1.13.4
  [30cb0354] SciMLTutorials v0.9.0
  [6c6a2e73] Scratch v1.0.3
  [efcf1570] Setfield v0.7.0
  [992d4aef] Showoff v1.0.3
  [699a6c99] SimpleTraits v0.9.3
  [b85f4697] SoftGlobalScope v1.1.0
  [a2af1166] SortingAlgorithms v1.0.0
  [47a9eef4] SparseDiffTools v1.13.2
  [276daf66] SpecialFunctions v1.4.1
  [aedffcd0] Static v0.2.4
  [90137ffa] StaticArrays v1.2.0
  [82ae8749] StatsAPI v1.0.0
  [2913bbd2] StatsBase v0.33.8
  [4c63d2b9] StatsFuns v0.9.8
  [9672c7b4] SteadyStateDiffEq v1.6.2
  [789caeaf] StochasticDiffEq v6.34.1
  [7792a7ef] StrideArraysCore v0.1.11
  [09ab397b] StructArrays v0.5.1
  [c3572dad] Sundials v4.4.3
  [d1185830] SymbolicUtils v0.11.2
  [0c5d862f] Symbolics v0.1.25
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.4.2
  [8290d209] ThreadingUtilities v0.4.4
  [a759f4b9] TimerOutputs v0.5.9
  [0796e94c] Tokenize v0.5.16
  [3bb67fe8] TranscodingStreams v0.9.5
  [a2a6695c] TreeViews v0.3.0
  [5c2747f8] URIs v1.3.0
  [3a884ed6] UnPack v1.0.2
  [1986cc42] Unitful v1.7.0
  [3d5dd08c] VectorizationBase v0.20.11
  [81def892] VersionParsing v1.2.0
  [19fa3120] VertexSafeGraphs v0.1.2
  [44d3d7a6] Weave v0.10.8
  [ddb6d928] YAML v0.4.6
  [c2297ded] ZMQ v1.2.1
  [a5390f91] ZipFile v0.9.3
  [700de1a5] ZygoteRules v0.2.1
  [6e34b625] Bzip2_jll v1.0.6+5
  [83423d85] Cairo_jll v1.16.0+6
  [5ae413db] EarCut_jll v2.1.5+1
  [2e619515] Expat_jll v2.2.10+0
  [b22a6f82] FFMPEG_jll v4.3.1+4
  [a3f928ae] Fontconfig_jll v2.13.1+14
  [d7e528f0] FreeType2_jll v2.10.1+5
  [559328eb] FriBidi_jll v1.0.5+6
  [0656b61e] GLFW_jll v3.3.4+0
  [d2c73de3] GR_jll v0.57.2+0
  [78b55507] Gettext_jll v0.21.0+0
  [7746bdde] Glib_jll v2.68.1+0
  [e33a78d0] Hwloc_jll v2.4.1+0
  [aacddb02] JpegTurbo_jll v2.0.1+3
  [c1c5ebd0] LAME_jll v3.100.0+3
  [dd4b983a] LZO_jll v2.10.1+0
  [dd192d2f] LibVPX_jll v1.9.0+1
  [e9f186c6] Libffi_jll v3.2.2+0
  [d4300ac3] Libgcrypt_jll v1.8.7+0
  [7e76a0d4] Libglvnd_jll v1.3.0+3
  [7add5ba3] Libgpg_error_jll v1.42.0+0
  [94ce4f54] Libiconv_jll v1.16.1+0
  [4b2f31a3] Libmount_jll v2.35.0+0
  [89763e89] Libtiff_jll v4.1.0+2
  [38a345b3] Libuuid_jll v2.36.0+0
  [079eb43e] NLopt_jll v2.7.0+0
  [e7412a2a] Ogg_jll v1.3.4+2
  [458c3c95] OpenSSL_jll v1.1.1+6
  [efe28fd5] OpenSpecFun_jll v0.5.4+0
  [91d4177d] Opus_jll v1.3.1+3
  [2f80f16e] PCRE_jll v8.44.0+0
  [30392449] Pixman_jll v0.40.1+0
  [ea2cea3b] Qt5Base_jll v5.15.2+0
  [f50d1b31] Rmath_jll v0.3.0+0
  [fb77eaff] Sundials_jll v5.2.0+1
  [a2964d1f] Wayland_jll v1.17.0+4
  [2381bf8a] Wayland_protocols_jll v1.18.0+4
  [02c8fc9c] XML2_jll v2.9.12+0
  [aed1982a] XSLT_jll v1.1.34+0
  [4f6342f7] Xorg_libX11_jll v1.6.9+4
  [0c0b7dd1] Xorg_libXau_jll v1.0.9+4
  [935fb764] Xorg_libXcursor_jll v1.2.0+4
  [a3789734] Xorg_libXdmcp_jll v1.1.3+4
  [1082639a] Xorg_libXext_jll v1.3.4+4
  [d091e8ba] Xorg_libXfixes_jll v5.0.3+4
  [a51aa0fd] Xorg_libXi_jll v1.7.10+4
  [d1454406] Xorg_libXinerama_jll v1.1.4+4
  [ec84b674] Xorg_libXrandr_jll v1.5.2+4
  [ea2f1a96] Xorg_libXrender_jll v0.9.10+4
  [14d82f49] Xorg_libpthread_stubs_jll v0.1.0+3
  [c7cfdc94] Xorg_libxcb_jll v1.13.0+3
  [cc61e674] Xorg_libxkbfile_jll v1.1.0+4
  [12413925] Xorg_xcb_util_image_jll v0.4.0+1
  [2def613f] Xorg_xcb_util_jll v0.4.0+1
  [975044d2] Xorg_xcb_util_keysyms_jll v0.4.0+1
  [0d47668e] Xorg_xcb_util_renderutil_jll v0.3.9+1
  [c22f9ab0] Xorg_xcb_util_wm_jll v0.4.1+1
  [35661453] Xorg_xkbcomp_jll v1.4.2+4
  [33bec58e] Xorg_xkeyboard_config_jll v2.27.0+4
  [c5fb5394] Xorg_xtrans_jll v1.4.0+3
  [8f1865be] ZeroMQ_jll v4.3.2+6
  [3161d3a3] Zstd_jll v1.5.0+0
  [0ac62f75] libass_jll v0.14.0+4
  [f638f0a6] libfdk_aac_jll v0.1.6+4
  [b53b4c65] libpng_jll v1.6.38+0
  [a9144af2] libsodium_jll v1.0.20+0
  [f27f6e37] libvorbis_jll v1.3.6+6
  [1270edf5] x264_jll v2020.7.14+2
  [dfaa095f] x265_jll v3.0.0+3
  [d8fb68d0] xkbcommon_jll v0.9.1+5
  [0dad84c5] ArgTools
  [56f22d72] Artifacts
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [8bb1440f] DelimitedFiles
  [8ba89e20] Distributed
  [f43a241f] Downloads
  [7b1f6079] FileWatching
  [9fa8497b] Future
  [b77e0a4c] InteractiveUtils
  [b27032c2] LibCURL
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [a63ad114] Mmap
  [ca575930] NetworkOptions
  [44cfe95a] Pkg
  [de0858da] Printf
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA
  [9e88b42a] Serialization
  [1a1011a3] SharedArrays
  [6462fe0b] Sockets
  [2f01184e] SparseArrays
  [10745b16] Statistics
  [4607b0f0] SuiteSparse
  [fa267f1f] TOML
  [a4e569a6] Tar
  [8dfed614] Test
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode
  [e66e0078] CompilerSupportLibraries_jll
  [deac9b47] LibCURL_jll
  [29816b5a] LibSSH2_jll
  [c8ffd9c3] MbedTLS_jll
  [14a3606d] MozillaCACerts_jll
  [4536629a] OpenBLAS_jll
  [bea87d4a] SuiteSparse_jll
  [83775a58] Zlib_jll
  [8e850ede] nghttp2_jll
  [3f19e933] p7zip_jll