diff --git a/notebooks/Manifest.toml b/notebooks/Manifest.toml new file mode 100644 index 0000000..700b664 --- /dev/null +++ b/notebooks/Manifest.toml @@ -0,0 +1,514 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "07fbc3d1a75e651fed05cb9c8498246cb3613247" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.CodeTracking]] +deps = ["InteractiveUtils", "UUIDs"] +git-tree-sha1 = "c0216e792f518b39b22212127d4a84dc31e4e386" +uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" +version = "1.3.5" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.Configurations]] +deps = ["ExproniconLite", "OrderedCollections", "TOML"] +git-tree-sha1 = "4358750bb58a3caefd5f37a4a0c5bfdbbf075252" +uuid = "5218b696-f38b-4ac9-8b61-a12ec717816d" +version = "0.17.6" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.ExpressionExplorer]] +git-tree-sha1 = "bce17cd0180a75eec637d6e3f8153011b8bdb25a" +uuid = "21656369-7473-754a-2065-74616d696c43" +version = "1.0.0" + +[[deps.ExproniconLite]] +git-tree-sha1 = "fbc390c2f896031db5484bc152a7e805ecdfb01f" +uuid = "55351af7-c7e9-48d6-89ff-24e801d99491" +version = "0.10.5" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[deps.FuzzyCompletions]] +deps = ["REPL"] +git-tree-sha1 = "c8d37d615586bea181063613dccc555499feb298" +uuid = "fb4132e2-a121-4a70-b8a1-d5b831dcdcc2" +version = "0.5.3" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "abbbb9ec3afd783a7cbd82ef01dcd088ea051398" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.1" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JuliaInterpreter]] +deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] +git-tree-sha1 = "e49bce680c109bc86e3e75ebcb15040d6ad9e1d3" +uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" +version = "0.9.27" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] +git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.1" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + +[[deps.LazilyInitializedFields]] +git-tree-sha1 = "8f7f3cabab0fd1800699663533b6d5cb3fc0e612" +uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf" +version = "1.2.2" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.LoweredCodeUtils]] +deps = ["JuliaInterpreter"] +git-tree-sha1 = "0b8cf121228f7dae022700c1c11ac1f04122f384" +uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" +version = "2.3.2" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Malt]] +deps = ["Distributed", "Logging", "RelocatableFolders", "Serialization", "Sockets"] +git-tree-sha1 = "18cf4151e390fce29ca846b92b06baf9bc6e002e" +uuid = "36869731-bdee-424d-aa32-cab38c994e3b" +version = "1.1.1" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.MsgPack]] +deps = ["Serialization"] +git-tree-sha1 = "fc8c15ca848b902015bd4a745d350f02cf791c2a" +uuid = "99f44e22-a591-53d1-9472-aa23ef4bd671" +version = "1.2.0" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.Pluto]] +deps = ["Base64", "Configurations", "Dates", "Downloads", "ExpressionExplorer", "FileWatching", "FuzzyCompletions", "HTTP", "HypertextLiteral", "InteractiveUtils", "Logging", "LoggingExtras", "MIMEs", "Malt", "Markdown", "MsgPack", "Pkg", "PrecompileSignatures", "PrecompileTools", "REPL", "RegistryInstances", "RelocatableFolders", "Scratch", "Sockets", "TOML", "Tables", "URIs", "UUIDs"] +git-tree-sha1 = "8a2903558b1f0550781c5c007aa241d0d1738354" +uuid = "c3e4b0f8-55cb-11ea-2926-15256bba5781" +version = "0.19.35" + +[[deps.PlutoHooks]] +deps = ["InteractiveUtils", "Markdown", "UUIDs"] +git-tree-sha1 = "072cdf20c9b0507fdd977d7d246d90030609674b" +uuid = "0ff47ea0-7a50-410d-8455-4348d5de0774" +version = "0.0.5" + +[[deps.PlutoLinks]] +deps = ["FileWatching", "InteractiveUtils", "Markdown", "PlutoHooks", "Revise", "UUIDs"] +git-tree-sha1 = "8f5fa7056e6dcfb23ac5211de38e6c03f6367794" +uuid = "0ff47ea0-7a50-410d-8455-4348d5de0420" +version = "0.1.6" + +[[deps.PlutoTeachingTools]] +deps = ["Downloads", "HypertextLiteral", "LaTeXStrings", "Latexify", "Markdown", "PlutoLinks", "PlutoUI", "Random"] +git-tree-sha1 = "542de5acb35585afcf202a6d3361b430bc1c3fbd" +uuid = "661c6b06-c737-4d37-b85c-46df65de6f69" +version = "0.2.13" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PrecompileSignatures]] +git-tree-sha1 = "18ef344185f25ee9d51d80e179f8dad33dc48eb1" +uuid = "91cefc8d-f054-46dc-8f8c-26e11d7c5411" +version = "3.0.3" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RegistryInstances]] +deps = ["LazilyInitializedFields", "Pkg", "TOML", "Tar"] +git-tree-sha1 = "ffd19052caf598b8653b99404058fce14828be51" +uuid = "2792f1a3-b283-48e8-9a74-f99dce5104f3" +version = "0.1.0" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Revise]] +deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] +git-tree-sha1 = "6990168abf3fe9a6e34ebb0e05aaaddf6572189e" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "3.5.10" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" diff --git a/notebooks/Project.toml b/notebooks/Project.toml new file mode 100644 index 0000000..8c74cb4 --- /dev/null +++ b/notebooks/Project.toml @@ -0,0 +1,4 @@ +[deps] +Pluto = "c3e4b0f8-55cb-11ea-2926-15256bba5781" +PlutoTeachingTools = "661c6b06-c737-4d37-b85c-46df65de6f69" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" diff --git a/notebooks/day_1_1_intro.jl b/notebooks/day_1_1_intro.jl new file mode 100644 index 0000000..603b4a1 --- /dev/null +++ b/notebooks/day_1_1_intro.jl @@ -0,0 +1,787 @@ +### A Pluto.jl notebook ### +# v0.19.35 + +using Markdown +using InteractiveUtils + +# ╔═╡ 340c206c-edcc-4510-9828-ec7a69ba471e +using Bits + +# ╔═╡ a40c20dc-0473-4b14-b229-c2416f43422d +begin + using PlutoUI + using PlutoTeachingTools +end + +# ╔═╡ 28618afa-99f6-11ee-102b-49f1a1b27f4a +md"""# Essential numerical tools and perturbation analysis (1.a) + +## Introduction + +Pablo Winant + + +African Econometric Society Workshop 14/12/23 +""" + +# ╔═╡ 753379cc-d977-4ce9-9ded-b4699601046a +md""" +## About me +""" + +# ╔═╡ 550e6844-efaf-48a8-91f8-c27d40b7e3c3 +TwoColumn( + md"![Pablo Winant](https://www.mosphere.fr/tie/0_girafes.jpg)", + md""" +- A computational economist +- Formerly Worked in institutions (IMF, BOE) +- Now at ESCP Business School and CREST/Polytechnique +- Research on models about: + - Inequality (heterogeneity) + - International Finance + - Monetary Policy + - Artificial Intelligence +- Involved in several opensource projects (Dolo, QuantEcon, ARK) +""" +) + +# ╔═╡ 4a5d8ba0-dcc7-4ef3-9ebb-c8fad4a2b4eb +md""" +## About this course +""" + + +# ╔═╡ ce753fef-a72a-4546-a8dd-1bcb490777df +TwoColumn(md""" +Day 1: + +- intro to Julia +- recursive sequences +- function optimization +- 👉 static equilibrium models + +""", md""" +Day 2: +- (dynamic) first order conditions +- automatic differentiation +- solution of matrix quadratic equations +- 👉 dynamic stochastic equilibrium models + +""") + +# ╔═╡ 9ab5c25e-206c-4bdf-ad3f-6e237ab32814 +md"""Complements the course given by Jesus Fernandez Villaverde.""" + + +# ╔═╡ ae2bf128-f87e-4b59-a3b1-a71de9a72bbc +md""" +## About Our Work Environment Today + +- We will use Julia: + - a language, specifically designed for numerical science +- We use [Pluto.jl](https://github.com/fonsp/Pluto.jl) on JuliaHub +- Two commands: + - Shift+Enter: run a cell + - Ctrl+Enter: run a cell and create a new one + - for mac: Ctrl replaced by Cmd + + +""" + +# ╔═╡ 7dffaab1-b630-43e3-b33a-e6fe83d3c6da +3 + 9 + +# ╔═╡ 605859a4-af1c-48dd-a174-14e77b56ff81 +md""" +## About the Future + +There is a variety of (free!) environments to program in Julia + +- the console +- JupyterLab +- Visual Studio Code +""" + +# ╔═╡ 0169f5f3-fe98-45c3-a945-026b24e31e26 +tip(md""" +To install Julia, instead of downloading the regular package, lookup [juliaup](https://github.com/JuliaLang/juliaup). You get one single command to install a Julia multiplexer which can handle many Julia versions at once. +""") + +# ╔═╡ 064ddccb-7679-4dc7-a443-d784e54947d0 +md""" +## About Julia + +Why [Julia](https://julialang.org/)? +- it is opensource. There are *hundreds* of libraries +- syntax inspired by Matlab but: + - more consistent + - much better! +- it is Just in Time (JIT) compiled + - one can quickly experiment with code like an interpreted language + - code gets translated using LLVM to run at machine speed +- there is a vibrant community with tons of online resources +- you can start easy and progressively get full control +""" + +# ╔═╡ 28df9d8a-eea7-4d43-8def-58ab0221a61e +[n^2 for n in 1:100 if mod(n,2)==0 ] + +# ╔═╡ 1750789d-d2f1-45d7-a3ff-554e061efade +md"""## An example of what not to do in Matlab +""" + +# ╔═╡ ad4ba04b-83b1-4394-a3d6-0429b4693129 +function stupid_loop(I,J,K) + t = 0.0 + for i=1:I + for j=1:J + for k = 1:K + t += 1.0 + end + end + end + return t +end + +# ╔═╡ 2b045036-f24c-4fc6-8e89-06c3d3ee0cca +@time stupid_loop(1000,1000,1000) + +# ╔═╡ 35cdd77b-66bc-49a7-89c0-acc7f4cb570c +@code_llvm stupid_loop(10,10,10) + +# ╔═╡ 19f6a557-00fc-4a26-b828-aa843df67024 +@code_native stupid_loop(10,10,10) + +# ╔═╡ c2320d66-897a-46d7-97f6-020f9271dd05 +md"## Your Journey with Julia +" + +# ╔═╡ 7c24504b-040d-4a5b-acce-b972b8330e5f +ThreeColumn(md""" +stage 1: +- basic types (numbers, strings) +- define functions +- use macros +- enjoy syntactic sugar +""", +md""" +stage 2: +- experiment with many libraries +- write type-stable code +- define own types +- use multiple dispatch + +""", +md""" +stage 3: +- metaprogramming +- avoid memory allocations +- ... +""" +) + +# ╔═╡ 0014eaac-8106-4357-b27e-69ba81d10ae1 +md""" +## First discoveries +""" + + +# ╔═╡ 49a15cab-0eda-4abb-9fe5-b166d070fe7b +md""" +### Basic Types +The following code assigns a number to a variable. +Change the variable so that it contains: a float (64 bits), an integer, a float 32, a boolean (true or false) +""" + +# ╔═╡ d25e5c35-b828-414f-a8a9-3b65de626464 +a = Float32(2) + +# ╔═╡ 51887f62-310c-44d8-a2a2-57ad0072a56c +typeof(a) + +# ╔═╡ decd77fe-d205-4f9b-8c96-35c865faf6b5 +sizeof(a) # the answer is given in bytes (i.e. 8 bits on most computers) + +# ╔═╡ 43c15289-e95e-4d45-8416-44b0617297ca +factorial(BigInt(500)) + +# ╔═╡ 4dafa1c3-bca1-467a-9cba-ae9624d1b6d8 +bits(a) + +# ╔═╡ 71a3ac4a-7393-48dc-a174-6e256e1a06c1 +md""" +### Operations on Numbers + +No big suprise +""" + +# ╔═╡ 011f4cfc-8586-4737-ab4e-3a61c47dc39e +2 + 3 # try with +, -, *, /, ^ + +# ╔═╡ 53e05778-b13a-40b7-a2e0-f6a5bf0f26c3 +2 + 3.0 # conversion to the most precise type + +# ╔═╡ dd652d05-4837-4ca8-8109-bac0485d7fa6 +2/5 # division returns a float + +# ╔═╡ 4d889960-c823-4be2-84da-07a7a517af44 +5%2 + +# ╔═╡ 0b9a5da1-bfcc-4797-8372-ea859faabb61 +2//5 + 1//3 # fraction + +# ╔═╡ c6cd1035-acae-468c-8f37-0ec42cd1af8b +3^3 + +# ╔═╡ 2d5dcd90-6619-41d6-8900-50b1de500484 +md""" +### Strings (1) + +There are several ways to define a string: "... " for regular strings, for multiline \"\"\" ...\"\"\". + +Strings can be manipulated as objects and "printed" to the terminal using function `println()` + +""" + +# ╔═╡ dcedd483-eb89-4e43-8dd2-e7a2ba2bf354 +aside(warning_box(md"In Julia quotes are used to denote a single character as in 'α'") ) + +# ╔═╡ ab5e8fd2-87a4-4657-9ae5-1093639a514b +txt1 = "This is a regular string. New lines must be signalled with the \\n special charachter.\nThe string continues.\nIf you wish to use an anteslash in the string, you need to 'escape' it with another anteslash: \\" + +# ╔═╡ 4468a778-9b2a-468c-98ae-26a16916d12f +# print string txt1 +println(txt1) + +# ╔═╡ 6b600525-6ce4-40ce-ad26-6fecafa9bbac +txt2 = """ +In a multiline string, the first newline is ignored, +Words flow together, in syntax they're deployed. +Yet in this silent space, a tale can be enjoyed, +As lines of code and verse are cleverly employed. +""" + +# ╔═╡ 2451a56f-d9a0-4493-a2e1-fa4c9758215d +# print string txt2 +println(txt2) + +# ╔═╡ b82920bc-4309-4c73-b348-589ae810af93 +md""" +### Strings (2) + +Strings can contain any unicode character including many alphabets and emoticons. +To interpolate a value inside a string we use the dollar sign '\$'. +""" + +# ╔═╡ 40b2b811-de3d-4533-84d5-60297274f4ee +tip(md"""Like in Jupyter notebooks, greek letters can be entered by typing their latex representation and hitting Tab""") + +# ╔═╡ adb98511-bd5d-434a-b8a8-5fd31abf4bbe +begin + n = 10 + 🦈 = 0.3 + 🐋 = 0.5 +end + +# ╔═╡ a546e01e-0df1-4eef-ae59-b076666d0e8d +println("After $(n) iterations, the populations of sharks and whales are respectively equal to 🦈=$🦈 et 🐋=$🐋") + +# ╔═╡ 3d1b8158-89c2-4081-9f4e-6ed576eafce6 +# Change the code above to use unicode symbols instead of alpha and beta + +# ╔═╡ 3a19647e-beeb-457f-b0ef-bf57489dc21e +begin + println("Baby 🦈") + println("tdudtu") +end + +# ╔═╡ 0036238a-bee3-4a03-8069-881e6f4b0d5c +md""" +### Logical Operations + +Logical operators (==, <, <=, !=, >, >=) always return a boolean +""" + +# ╔═╡ 6a65838a-9e04-4be9-b1b0-62bd87cceb36 +b = 3 + +# ╔═╡ 44699ee4-e76a-40b8-a7ec-5df93382baec +a == b + +# ╔═╡ 7dd94beb-8cfe-459a-a7bb-07751818822b +2 == 5.2 + +# ╔═╡ 215c56ca-3f9e-44c2-a042-50e80fe128af +nothing == Nothing + +# ╔═╡ 1ce74c6e-c9c0-46bc-a581-ab0032bdb7d5 +2 != 5.2 + +# ╔═╡ 5f3745bb-2434-4555-9620-81110d6f0014 +2 < 5.2 + +# ╔═╡ 59a75dbd-de8b-4e64-8527-de846131a34b +md""" +They can be combined using logical operators '&' (and) and '|' +""" + +# ╔═╡ 5d756046-e6bf-4907-ab2f-ade0089548ea +(2 < 3) & (1 < 2) + +# ╔═╡ de2d6965-9a74-4ef6-baee-63d257eff77c +(2 < 3) | (3 < 2) + +# ╔═╡ 37fcff70-99ba-420b-bfb7-0dc027443851 +md"""### More Julia +""" + +# ╔═╡ b97a0549-8f42-42f7-a53f-ce11a930f160 +# functions + +# ╔═╡ 35fb094f-d8b0-4ab1-8055-31f668dd8561 +# containers + +# ╔═╡ 13a1773d-a5b5-4865-9c90-06a737c9a6de +# arrays + +# ╔═╡ ac1c9204-ad29-4d20-8f5c-c94588e970f2 +# control flow + +# ╔═╡ bc806a5e-f029-40e2-a70a-d77e98d028f6 +TableOfContents() # from PlutoUI + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +Bits = "1654ce90-6ed3-553a-957f-9452c3a40996" +PlutoTeachingTools = "661c6b06-c737-4d37-b85c-46df65de6f69" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" + +[compat] +Bits = "~0.2.0" +PlutoTeachingTools = "~0.2.13" +PlutoUI = "~0.7.54" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "0ebe67608050fc8f5fcb26233086d0ae1d16f134" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.Bits]] +deps = ["Test"] +git-tree-sha1 = "525d055f0c6b9476e6dcf032286383ea941a395c" +uuid = "1654ce90-6ed3-553a-957f-9452c3a40996" +version = "0.2.0" + +[[deps.CodeTracking]] +deps = ["InteractiveUtils", "UUIDs"] +git-tree-sha1 = "c0216e792f518b39b22212127d4a84dc31e4e386" +uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" +version = "1.3.5" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JuliaInterpreter]] +deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] +git-tree-sha1 = "e49bce680c109bc86e3e75ebcb15040d6ad9e1d3" +uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" +version = "0.9.27" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] +git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.1" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoweredCodeUtils]] +deps = ["JuliaInterpreter"] +git-tree-sha1 = "0b8cf121228f7dae022700c1c11ac1f04122f384" +uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" +version = "2.3.2" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlutoHooks]] +deps = ["InteractiveUtils", "Markdown", "UUIDs"] +git-tree-sha1 = "072cdf20c9b0507fdd977d7d246d90030609674b" +uuid = "0ff47ea0-7a50-410d-8455-4348d5de0774" +version = "0.0.5" + +[[deps.PlutoLinks]] +deps = ["FileWatching", "InteractiveUtils", "Markdown", "PlutoHooks", "Revise", "UUIDs"] +git-tree-sha1 = "8f5fa7056e6dcfb23ac5211de38e6c03f6367794" +uuid = "0ff47ea0-7a50-410d-8455-4348d5de0420" +version = "0.1.6" + +[[deps.PlutoTeachingTools]] +deps = ["Downloads", "HypertextLiteral", "LaTeXStrings", "Latexify", "Markdown", "PlutoLinks", "PlutoUI", "Random"] +git-tree-sha1 = "542de5acb35585afcf202a6d3361b430bc1c3fbd" +uuid = "661c6b06-c737-4d37-b85c-46df65de6f69" +version = "0.2.13" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Revise]] +deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] +git-tree-sha1 = "6990168abf3fe9a6e34ebb0e05aaaddf6572189e" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "3.5.10" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" +""" + +# ╔═╡ Cell order: +# ╟─28618afa-99f6-11ee-102b-49f1a1b27f4a +# ╟─753379cc-d977-4ce9-9ded-b4699601046a +# ╟─550e6844-efaf-48a8-91f8-c27d40b7e3c3 +# ╟─4a5d8ba0-dcc7-4ef3-9ebb-c8fad4a2b4eb +# ╟─ce753fef-a72a-4546-a8dd-1bcb490777df +# ╟─9ab5c25e-206c-4bdf-ad3f-6e237ab32814 +# ╟─ae2bf128-f87e-4b59-a3b1-a71de9a72bbc +# ╠═7dffaab1-b630-43e3-b33a-e6fe83d3c6da +# ╟─605859a4-af1c-48dd-a174-14e77b56ff81 +# ╟─0169f5f3-fe98-45c3-a945-026b24e31e26 +# ╟─064ddccb-7679-4dc7-a443-d784e54947d0 +# ╠═28df9d8a-eea7-4d43-8def-58ab0221a61e +# ╟─1750789d-d2f1-45d7-a3ff-554e061efade +# ╠═ad4ba04b-83b1-4394-a3d6-0429b4693129 +# ╠═2b045036-f24c-4fc6-8e89-06c3d3ee0cca +# ╠═35cdd77b-66bc-49a7-89c0-acc7f4cb570c +# ╠═19f6a557-00fc-4a26-b828-aa843df67024 +# ╟─c2320d66-897a-46d7-97f6-020f9271dd05 +# ╟─7c24504b-040d-4a5b-acce-b972b8330e5f +# ╟─0014eaac-8106-4357-b27e-69ba81d10ae1 +# ╟─49a15cab-0eda-4abb-9fe5-b166d070fe7b +# ╠═340c206c-edcc-4510-9828-ec7a69ba471e +# ╠═d25e5c35-b828-414f-a8a9-3b65de626464 +# ╠═51887f62-310c-44d8-a2a2-57ad0072a56c +# ╠═decd77fe-d205-4f9b-8c96-35c865faf6b5 +# ╠═43c15289-e95e-4d45-8416-44b0617297ca +# ╠═4dafa1c3-bca1-467a-9cba-ae9624d1b6d8 +# ╟─71a3ac4a-7393-48dc-a174-6e256e1a06c1 +# ╠═011f4cfc-8586-4737-ab4e-3a61c47dc39e +# ╠═53e05778-b13a-40b7-a2e0-f6a5bf0f26c3 +# ╠═dd652d05-4837-4ca8-8109-bac0485d7fa6 +# ╠═4d889960-c823-4be2-84da-07a7a517af44 +# ╠═0b9a5da1-bfcc-4797-8372-ea859faabb61 +# ╠═c6cd1035-acae-468c-8f37-0ec42cd1af8b +# ╟─2d5dcd90-6619-41d6-8900-50b1de500484 +# ╟─dcedd483-eb89-4e43-8dd2-e7a2ba2bf354 +# ╠═ab5e8fd2-87a4-4657-9ae5-1093639a514b +# ╠═4468a778-9b2a-468c-98ae-26a16916d12f +# ╠═6b600525-6ce4-40ce-ad26-6fecafa9bbac +# ╠═2451a56f-d9a0-4493-a2e1-fa4c9758215d +# ╟─b82920bc-4309-4c73-b348-589ae810af93 +# ╟─40b2b811-de3d-4533-84d5-60297274f4ee +# ╠═adb98511-bd5d-434a-b8a8-5fd31abf4bbe +# ╠═a546e01e-0df1-4eef-ae59-b076666d0e8d +# ╠═3d1b8158-89c2-4081-9f4e-6ed576eafce6 +# ╠═3a19647e-beeb-457f-b0ef-bf57489dc21e +# ╟─0036238a-bee3-4a03-8069-881e6f4b0d5c +# ╠═6a65838a-9e04-4be9-b1b0-62bd87cceb36 +# ╠═44699ee4-e76a-40b8-a7ec-5df93382baec +# ╠═7dd94beb-8cfe-459a-a7bb-07751818822b +# ╠═215c56ca-3f9e-44c2-a042-50e80fe128af +# ╠═1ce74c6e-c9c0-46bc-a581-ab0032bdb7d5 +# ╠═5f3745bb-2434-4555-9620-81110d6f0014 +# ╟─59a75dbd-de8b-4e64-8527-de846131a34b +# ╠═5d756046-e6bf-4907-ab2f-ade0089548ea +# ╠═de2d6965-9a74-4ef6-baee-63d257eff77c +# ╟─37fcff70-99ba-420b-bfb7-0dc027443851 +# ╠═b97a0549-8f42-42f7-a53f-ce11a930f160 +# ╠═35fb094f-d8b0-4ab1-8055-31f668dd8561 +# ╠═13a1773d-a5b5-4865-9c90-06a737c9a6de +# ╠═ac1c9204-ad29-4d20-8f5c-c94588e970f2 +# ╟─a40c20dc-0473-4b14-b229-c2416f43422d +# ╟─bc806a5e-f029-40e2-a70a-d77e98d028f6 +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 diff --git a/notebooks/day_1_2_recursive_sequences.jl b/notebooks/day_1_2_recursive_sequences.jl new file mode 100644 index 0000000..6b990c9 --- /dev/null +++ b/notebooks/day_1_2_recursive_sequences.jl @@ -0,0 +1,1660 @@ +### A Pluto.jl notebook ### +# v0.19.35 + +using Markdown +using InteractiveUtils + +# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). +macro bind(def, element) + quote + local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end + local el = $(esc(element)) + global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) + el + end +end + +# ╔═╡ beb4fa95-7863-4440-8c4c-0532f3fc8124 +using Plots + +# ╔═╡ a40c20dc-0473-4b14-b229-c2416f43422d +begin + using PlutoUI + using PlutoTeachingTools +end + +# ╔═╡ 28618afa-99f6-11ee-102b-49f1a1b27f4a +md"""# Essential numerical tools and perturbation analysis (1.b) + +## Recursive sequences + +Pablo Winant + + +African Econometric Society Worskhop 14/12/23 +""" + +# ╔═╡ 70b629dd-88fe-451d-ad20-094e9cb04b7a +md""" +## Another Day in the Life of a Computational Economist + +![My Younger Self](https://www.mosphere.fr/eco309/slides/impossible.jpg) +[The Impossible Task](https://www.mosphere.fr/eco309/slides/waiting_for_convergence.mp4)" + +""" + +# ╔═╡ 1eea851f-4bfa-47dd-af11-745b97e8fc58 +md"""## A Recursive Sequence + +Consider: + +- a function +$$f: \mathbf{R}^n\rightarrow \mathbf{R}^n$$ +- the recursive sequence $(x_n)$ defined by $x_0 \in \mathbf{R^n}$ and +$$x_n = f(x_{n-1})$$. + +We want to compute a fixed point $\overline{x}$ of $f$ + +$$f(\overline{x}) = \overline{x}$$ + +and study its properties. +""" + +# ╔═╡ 78c4ae5b-f0c8-4206-b6dd-ffd482f8a58c +aside(md"For a serious mathematical treatment, one needs assumptions on $f$, like continuity of differentiability, and on the metric space which contains $x$. It is not essential for today's discussion though.") + +# ╔═╡ 76439219-2485-4715-a78b-5470dd57cf68 +md""" +## Motivation + +Some models are classically expressed in such a way. + +Example: Solow Model +""" + + +# ╔═╡ 73fddc42-36fa-4402-8056-7fa0c3f49223 +TwoColumn( + md""" + - capital accumulation: $k_t = (1-\delta)k_{t-1} + i_{t-1}$ + - production: $y_t = k_t^\alpha$ + - consumption: $c_t = (1-{\color{red}s})y_t$ + - investment: $i_t = {\color{red}s} y_t$ with ${\color{red}s}\in\mathbf{R}$""", + md"""⏩ after some calculations... + + $$k_{t+1} = (1-δ) k_t + (1- s) k_t^{\alpha}$$ + + $$k_t=f(k_{t-1}, s)$$ + + """ +) + +# ╔═╡ 789a43f5-404b-461e-b939-42a6dad88291 +md"""## Code: Solow model + +Let's code the solow model +""" + +# ╔═╡ 62e0bb3e-3755-4fa3-84de-08230cc67ae4 +md"""__First__, we use a namedtuple to store the model parameters""" + +# ╔═╡ 2c6d2d67-879b-40e6-94bc-599ec8579c03 +# different options to code the model +p_array = [0.96, 0.1, 0.3, 4] + +# ╔═╡ c8ddf5af-df31-4084-8dbb-245a86ec7d34 +p_tuple = (0.96, 0.1, 0.3, 4, "Baby 🦈") + +# ╔═╡ ce55c7cf-26d9-4dbd-b203-80ce9bc1c3fc +p_dict = Dict( :β=>0.96, :δ=>0.1, :α=>0.3, :γ=>4 ) + +# ╔═╡ c0f5a512-6da7-4413-805b-7c3b9d4523ed +p_dict[:α] + +# ╔═╡ ac3b5367-9606-4f50-b63b-4c2328e485d3 +md"Namedtuples are great!" + +# ╔═╡ 62cb18bd-b252-46e2-bc4f-6d1aa176de23 +# elements from named tuples can be accessed in many different ways +# try to recover the value of $\alpha$ + +# ╔═╡ 534f95a7-3b58-4970-993b-e97dc8405191 +p0 = (; β=0.96, δ=0.1, α=0.3, γ=4 ) + +# ╔═╡ e7d239e9-5c19-4274-88ee-6e40d4a7175b +p0[1] + +# ╔═╡ 6b8a9044-c58b-4a7c-a650-ca17977e12de +p0.α + +# ╔═╡ cfc9324e-5d10-48fb-b0ab-1ec5ae572cb2 +# to avoid typing repetitive code, we can use keyword unpacking +# α = p0.α +# β = p0.β + (; β, δ, α, γ) = p0 + +# ╔═╡ 26261167-d0bc-4b31-8970-a58b2035832d +α + +# ╔═╡ 479f10f1-f3c8-4aed-aa54-c63332c1f8cd +# one can easily create another tuple with some changed parameters +# merge(p0, (;δ=0.2) ) + +# ╔═╡ d68d883a-d066-4cf4-b127-ba6658a219f0 +merge(p0, (;δ=0.2, α=0.35)) + +# ╔═╡ ee158e59-5ef3-4ba2-8289-3e3ef86edd7a +md"""__Second__, we write a function to compute the model transition""" + +# ╔═╡ f70278f0-b528-46f1-8fdf-8d2e6874681d +function f(k, p; s=0.5) + + # k: capital (float) + # p: parameters (namedtuple) + # s: saving rate (float) + + # unpack the tuple + (;α, δ) = p + + # compute next state + kn = k*(1-δ) + k^α*s + + return kn + +end + +# ╔═╡ ba81d320-2e76-4424-824b-71117b3c425a +f(0.5, p0) #; s=0.2) + +# ╔═╡ a289f9cf-9074-4d4a-969f-fd29ded5f7e9 +# to play with the parameters one can use a pluto slider + +# ╔═╡ 45b1ea85-3366-4ca7-92ac-b0ef32c115f8 +@bind s_sl Slider(0:0.01:0.5) + +# ╔═╡ f1ae7a2c-49bb-4d15-9105-7205c1283dc5 +f(0.5, p0; s=s_sl) + +# ╔═╡ 6bdbcbdd-6d31-401b-b9f4-6bbcf59a9fb7 +md"__bonus: make a nice graph__" + +# ╔═╡ c48eb8e2-f021-4532-8cad-1510bbe73d8d +kvec = range(0.0001, 1.5; length=100) + +# ╔═╡ 4c8b1cf6-b6cf-4bd9-a3a2-a513b42522f5 +k1vec = [f(k, p0; s=s_sl) for k in kvec] + +# ╔═╡ 3485f870-2374-42f6-baf1-8ded09d3855e +#[1,2,3,4].^2 +#(u->f(u,p0; s=s_sl)).(kvec) + +# ╔═╡ 37437389-be0c-457e-9762-4690f1e7ad9b +begin + pl0 = plot(kvec, k1vec) + plot!(pl0, kvec, kvec; color=:black, linestyle=:dash) +end + +# ╔═╡ 54b7784d-0b8a-49a1-b51e-701ad6449bc3 +md"""__Third__ we can simulate the model over $T$ periods.""" + +# ╔═╡ d287f783-0120-4e33-b4c0-7c1b8bcb2ab2 +function simulate0(k0, T, p; s=0.5) + + # simulation vector + sim = [k0] + + for i ∈ 1:T # same as for i in ... or for i=... + # in Julia, intervals contain the lower and upper bound + k1 = f(k0, p; s=s) + + # add new value to simulation vector + push!(sim, k1) + + k0 = k1 + end + + return sim +end + +# ╔═╡ b2e41ac0-187e-4c9f-b5f8-a943552219ac +# ╠═╡ disabled = true +#=╠═╡ +sim = simulate0(0.5, 100, p0;) + + ╠═╡ =# + +# ╔═╡ 0bd6b9c2-463c-4c1e-8632-61933b42a76e +md"""__Fourth__: look at what you've done! + +What happens if capital is higher? If saving rate is lower?""" + +# ╔═╡ 5105935d-377f-41b9-91de-6cdf15256c2a +begin + pl = plot( + simulate0(0.5, 100, p0;); + label="baseline", title="Convergence of Solow Model", xaxis="Time", yaxis="k" + ) + plot!(pl, simulate0(6.0, 100, p0;); label="high initial capital"); + plot!(pl, simulate0(6.0, 100, p0;s=0.3); label="lower initial saving"); + +end + +# ╔═╡ 24405c44-57dc-40f2-a66f-94b85111a799 +md""" +## Local Analysis + +Suppose there is a steady-state $\overline{x}$ such that $f(\overline{x}) = \overline{x}$. + +Then stability of $\overline{x}$ is characterized by the derivative $f'(x)$. + +In general $f'(\overline{x})$ is a matrix $L \in R^n\times R^n$. It is *defined* by the relation: $$f(\overline{x}+u) = f(\overline{x}) + L.u + o(u)$$ + +The spectral radius $\rho(L)$ of matrix $L$ is decisive: +- if strictly smaller than 1, then $(x_n)$ is locally stable +- if strictly bigger than 1, $f$ is locally unstable. +- if equal to 1, anything can happen (it depends on the problem) + +""" + +# ╔═╡ cbbdaf62-8631-425c-95e5-d30b959f2bd6 +aside(tip(md"The spectral radius of a matrix is equal to the norm of its biggest eigenvalue")) + +# ╔═╡ 7cc223d9-a4a4-4485-b8b3-8ee9331a2bdc +Foldable( + "Informal (and incorrect) intuition.", + md"""Close to the steady-state, we can write + +$x_{n+1} - x = f(x_n) - f(x) \approx L.(x_n-x)$ + +It follows: + +$x_{n+k} - x \approx L^k (x_n-x)$ + +Then define a basis of eigenvectors $e_1, ... e_n$ of $L$ associated with complex eigenvalues $\lambda_1, ... \lambda_n$ + +Use this base to write $x_n-x = a_1 e_1 + ... + a_n e_n$ and compute: + +$L^k .(x_n-x) = L^k a_1 e_1 + ... + L^k a_n e_n = \lambda_1^k a_1 e_1 + ... + \lambda_n^k a_n e_n$. + +This shows that if all eigenvalues are strictly smaller than 1 the residual converges to zero. + +If one eigenvalue $\lambda_p$ is greater than 1 then initial value $\epsilon e_p$ will lead to divergence, for small $\epsilon$. + +""" +) + + +# ╔═╡ d41df209-f894-401c-b0af-1e7bae8f94d5 +md""" +## Assessing Convergence + +We are often interested in monitoring the speed of convergence for a given algorithm. + +Since $\overline{x}$ is in general not known (would be too easy), the solution error $\epsilon_n=|x_n-\overline{x}|$ is not available. + +We look instead at __successive approximation errors__: + +$\eta_n = |x_n-x_{n-1}|$ + +When there is no more progress $\eta_n=0$ implies $x_n=f(x_{n-1})=x_{n-1}$ so that $x_{n-1}$ is a fixed point. + + +In particular, we measure how quickly they decrease by measuring the __ratio of successive approximation errors__. + +$\lambda_n = \frac{|x_n-x_{n-1}|}{|x_{n-1}-x_{n-2}|}$ + +When the ratio stays strictly below 1, that is if we know $\forall n>N, \; \lambda_n<\overline{\lambda}<1$, the algorithm is converging properly. + +A ratio oscillating around 1., or converging to 1. signals convergence problems. +""" + +# ╔═╡ 2a481921-ad35-41d1-98f3-26f3ee72a723 +Foldable("Some details", md"""We have indeed: + +$\forall n, \; |x_{n+k}-x_{n+k-1}| \leq \overline{\lambda} |x_{n+k-1}-x_{n+k-2}|\leq \overline{\lambda}^k |x_{n+1}-x_{n}|$ + +And we can get an upper bound on the solution error: + + +$|x_n - x| \leq |x_n- x_{n+1}| + |x_{n+1} - x_{n+2}| + |x_{n+2} - x_{n+3}| + ...$ +$|x_n - x| \leq |x_n - x_{n+1}| + \overline{\lambda} |n_t - x_{n+1}| + \overline{\lambda}^2 |x_n - x_{n+1}| + ...$ +$|x_n - x| \leq \frac{1}{1-\overline{\lambda} } |x_n - x_{n+1}|$ + +""" +) + +# ╔═╡ 55c1c9ee-945f-47bb-8395-a9bdae699584 +md""" +## In practice + +- Problem: + - Suppose one is trying to find $x$ solving the model $G(x)=0$ + - An iterative algorithm provides a function $f$ defining a recursive series $x_{n+1}$. +- The best practice consists in monitoring at the same time: + - the success criterion: $$\epsilon_n = |G(x_n)|$$ + - have you found the solution? + - the successive approximation errors + $$\eta_n = |x_{n+1} - x_n|$$ + - are you making progress? + - the ratio of successive approximation errors + $$\lambda_n = \frac{\eta_n}{\eta_{n-1}}$$ + - what kind of convergence? + - (if $|\lambda_n|<1$: OK, otherwise: ❓) +""" + +# ╔═╡ 2517ccf7-c961-4c5f-9dfa-2b5207e442e7 +md"""## Exercise 1 + +__Modify the `simulate` function so that it prints convergence metrics.__ +""" + +# ╔═╡ 8bab0ae2-ed99-4cb5-8852-59dfc281fd03 +function simulate1(k0, T, p; s=0.5, verbose=true, τ_η=1e-8) + + # simulation vector + sim = [k0] + + η0 = NaN + for i ∈ 1:T # same as for i in ... or for i=... + # in Julia, intervals contain the lower and upper bound + k1 = f(k0, p; s=s) + + # add new value to simulation vector + push!(sim, k1) + + η = abs(k1 - k0) + if η < τ_η + return (sim, i) + end + λ = η / η0 + + if (verbose) + println("Iteration $i: η=$η, λ=$λ") + end + + k0 = k1 + η0 = η + end + + error("No convergence") + # return sim, -1 +end + +# ╔═╡ 374428bd-9d5f-451a-afa0-4534bfce41f2 +sim1 = simulate1(0.5, 1000, p0;) + +# ╔═╡ 404ed441-dec5-4326-b6d2-7dfcba49ff34 +simulate1(0.5, 10, p0;) # no convergence in 10 iterations + +# ╔═╡ fbf63f54-9b75-4b14-9f30-99f3fd6c3524 +md""" +## Convergence Rates + +Convergence of sequence $x_n$ towards $x^{\star}$ can be classified as: + +- linear +$${\lim}_{n\rightarrow\infty} \frac{|x_{n+1}-x^{\star}|}{|x_{n}-x^{\star}|} = \mu \in R^+$$ +- superlinear: +$${\lim}_{n\rightarrow\infty} \frac{|x_{n+1}-x^{\star}|}{|x_{n}-x^{\star}|} = 0$$ +- quadratic: +$${\lim}_{n\rightarrow\infty} \frac{|x_{n+1}-x^{\star}|}{|x_{n}-x^{\star}|^{\color{red}2}} = \mu \in R^+$$ + +Linear convergence is also called geometric convergence. It is slooooooow. + +""" + +# ╔═╡ 89823425-ba38-4dfa-bfdb-9b00492c79f6 +md"""## Improve Convergence + +There are tricks to improve convergence rate. + +Define a new function $g$ with the same steady-state as $f$ +""" + +# ╔═╡ cee4d3d1-8f25-40d7-a571-7f64b18d1061 +tip(md"""Consider the following iteration: + +$$x_{n+1} = (1-\lambda) x_n + \lambda f(x_n)$$ + +Parameter $\lambda$ is the learning rate: +- acceleration: $\lambda>1$ +- dampening: $\lambda<1$ + +$g(x) = (1-\lambda)x + \lambda f(x)$ +""") + + +# ╔═╡ 59b2616d-95cf-443a-9b36-12041487d191 +tip(md"""Suppose $f$ is differentiable $\mathbf{R}\rightarrow \mathbf{R}.$ + +Define: + $$g(x)=x-\frac{f(x)-x}{f^{\prime}(x)-1}$$ + +Function $g$ corresponds to the Newton iterations. It If $f^{\prime}(\overline{x})\neq0$, it converges *quadratically*. +""") + +# ╔═╡ f460aa97-75ab-4b6f-9cb8-c01850489318 +md"""## Exercise 2 (Bonus) + +Suppose the goal is to compute the steady-state. + +Propose a way to accelerate convergence of the simulate1 function. + + +""" + +# ╔═╡ 8b1da76c-92e9-47bb-81e9-58715894c40e +# Your code +function simulate2(k0, T, p; s=0.5, verbose=true) +end + + +# ╔═╡ c3289bca-8eb5-4d67-a5b0-9ed7e6558285 +TableOfContents() # from PlutoUI + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +PlutoTeachingTools = "661c6b06-c737-4d37-b85c-46df65de6f69" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" + +[compat] +Plots = "~1.39.0" +PlutoTeachingTools = "~0.2.13" +PlutoUI = "~0.7.54" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "116d2879bc76442b1aeaff03e19d373457fb9809" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.8+0" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.16.1+1" + +[[deps.CodeTracking]] +deps = ["InteractiveUtils", "UUIDs"] +git-tree-sha1 = "c0216e792f518b39b22212127d4a84dc31e4e386" +uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" +version = "1.3.5" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.24.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.10.0" + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + + [deps.ColorVectorSpace.weakdeps] + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.10" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "886826d76ea9e72b35fcd000e535588f7b60f21d" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.1" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.Contour]] +git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.2" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.15" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.5.0+0" + +[[deps.FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.1" + +[[deps.FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.4.4+1" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.13.93+0" + +[[deps.Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.13.1+0" + +[[deps.FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.10+0" + +[[deps.GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] +git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.3.8+0" + +[[deps.GR]] +deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] +git-tree-sha1 = "27442171f28c952804dede8ff72828a96f2bfc1f" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.72.10" + +[[deps.GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.72.10+0" + +[[deps.Gettext_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" +uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" +version = "0.21.0+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.76.5+0" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.14+0" + +[[deps.Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "abbbb9ec3afd783a7cbd82ef01dcd088ea051398" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.1" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] +git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "2.8.1+1" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.JLFzf]] +deps = ["Pipe", "REPL", "Random", "fzf_jll"] +git-tree-sha1 = "a53ebe394b71470c7f97c2e7e170d51df21b17af" +uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" +version = "0.1.7" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "60b1194df0a3298f460063de985eae7b01bc011a" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.0.1+0" + +[[deps.JuliaInterpreter]] +deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] +git-tree-sha1 = "e49bce680c109bc86e3e75ebcb15040d6ad9e1d3" +uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" +version = "0.9.27" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.1+0" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "3.0.0+1" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "15.0.4+0" + +[[deps.LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.1+0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] +git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.1" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.2+1" + +[[deps.Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.8.7+0" + +[[deps.Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.6.0+0" + +[[deps.Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.42.0+0" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.35.0+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.5.1+1" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.36.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.26" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.LoweredCodeUtils]] +deps = ["JuliaInterpreter"] +git-tree-sha1 = "0b8cf121228f7dae022700c1c11ac1f04122f384" +uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" +version = "2.3.2" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.Measures]] +git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.2" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.1.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.5+1" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.3.2+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pipe]] +git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" +uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" +version = "1.3.0" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.42.2+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlotThemes]] +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "3.1.0" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] +git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.3.5" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.39.0" + + [deps.Plots.extensions] + FileIOExt = "FileIO" + GeometryBasicsExt = "GeometryBasics" + IJuliaExt = "IJulia" + ImageInTerminalExt = "ImageInTerminal" + UnitfulExt = "Unitful" + + [deps.Plots.weakdeps] + FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" + GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.PlutoHooks]] +deps = ["InteractiveUtils", "Markdown", "UUIDs"] +git-tree-sha1 = "072cdf20c9b0507fdd977d7d246d90030609674b" +uuid = "0ff47ea0-7a50-410d-8455-4348d5de0774" +version = "0.0.5" + +[[deps.PlutoLinks]] +deps = ["FileWatching", "InteractiveUtils", "Markdown", "PlutoHooks", "Revise", "UUIDs"] +git-tree-sha1 = "8f5fa7056e6dcfb23ac5211de38e6c03f6367794" +uuid = "0ff47ea0-7a50-410d-8455-4348d5de0420" +version = "0.1.6" + +[[deps.PlutoTeachingTools]] +deps = ["Downloads", "HypertextLiteral", "LaTeXStrings", "Latexify", "Markdown", "PlutoLinks", "PlutoUI", "Random"] +git-tree-sha1 = "542de5acb35585afcf202a6d3361b430bc1c3fbd" +uuid = "661c6b06-c737-4d37-b85c-46df65de6f69" +version = "0.2.13" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.Qt6Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" +uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" +version = "6.5.3+1" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] +git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.6.12" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Revise]] +deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] +git-tree-sha1 = "6990168abf3fe9a6e34ebb0e05aaaddf6572189e" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "3.5.10" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.2" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "3c793be6df9dd77a0cf49d80984ef9ff996948fa" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.19.0" + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + InverseFunctionsUnitfulExt = "InverseFunctions" + + [deps.Unitful.weakdeps] + ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.UnitfulLatexify]] +deps = ["LaTeXStrings", "Latexify", "Unitful"] +git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" +uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" +version = "1.6.3" + +[[deps.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + +[[deps.Wayland_jll]] +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.21.0+1" + +[[deps.Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.25.0+0" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "801cbe47eae69adc50f36c3caec4758d2650741b" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.12.2+0" + +[[deps.XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] +git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.34+0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "522b8414d40c4cbbab8dee346ac3a09f9768f25d" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.4.5+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Libdl", "Pkg"] +git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.0.10+1" + +[[deps.Xorg_libSM_jll]] +deps = ["Libdl", "Pkg", "Xorg_libICE_jll"] +git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.3+0" + +[[deps.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.6+0" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.11+0" + +[[deps.Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.0+4" + +[[deps.Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.4+0" + +[[deps.Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.4+4" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "5.0.3+4" + +[[deps.Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.7.10+4" + +[[deps.Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] +git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.4+4" + +[[deps.Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[deps.Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.10+4" + +[[deps.Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.1+0" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.15.0+0" + +[[deps.Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.2+0" + +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.4+0" + +[[deps.Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] +git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.9+1" + +[[deps.Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.1+1" + +[[deps.Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.6+0" + +[[deps.Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.39.0+0" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.5.0+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.5+0" + +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] +git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.9+0" + +[[deps.fzf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a68c9655fbe6dfcab3d972808f1aafec151ce3f8" +uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" +version = "0.43.0+0" + +[[deps.gperf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" +uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" +version = "3.1.1+0" + +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.4.0+0" + +[[deps.libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.15.1+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.11.0+0" + +[[deps.libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.2+0" + +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.18.0+0" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "93284c28274d9e75218a416c65ec49d0e0fcdf3d" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.40+0" + +[[deps.libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] +git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.7+1" + +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.6+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" + +[[deps.x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "2021.5.5+0" + +[[deps.x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "3.5.0+0" + +[[deps.xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.4.1+1" +""" + +# ╔═╡ Cell order: +# ╟─28618afa-99f6-11ee-102b-49f1a1b27f4a +# ╟─70b629dd-88fe-451d-ad20-094e9cb04b7a +# ╟─1eea851f-4bfa-47dd-af11-745b97e8fc58 +# ╟─78c4ae5b-f0c8-4206-b6dd-ffd482f8a58c +# ╟─76439219-2485-4715-a78b-5470dd57cf68 +# ╟─73fddc42-36fa-4402-8056-7fa0c3f49223 +# ╟─789a43f5-404b-461e-b939-42a6dad88291 +# ╟─62e0bb3e-3755-4fa3-84de-08230cc67ae4 +# ╠═2c6d2d67-879b-40e6-94bc-599ec8579c03 +# ╠═c8ddf5af-df31-4084-8dbb-245a86ec7d34 +# ╠═ce55c7cf-26d9-4dbd-b203-80ce9bc1c3fc +# ╠═c0f5a512-6da7-4413-805b-7c3b9d4523ed +# ╟─ac3b5367-9606-4f50-b63b-4c2328e485d3 +# ╠═62cb18bd-b252-46e2-bc4f-6d1aa176de23 +# ╠═534f95a7-3b58-4970-993b-e97dc8405191 +# ╠═e7d239e9-5c19-4274-88ee-6e40d4a7175b +# ╠═6b8a9044-c58b-4a7c-a650-ca17977e12de +# ╠═cfc9324e-5d10-48fb-b0ab-1ec5ae572cb2 +# ╠═26261167-d0bc-4b31-8970-a58b2035832d +# ╠═479f10f1-f3c8-4aed-aa54-c63332c1f8cd +# ╠═d68d883a-d066-4cf4-b127-ba6658a219f0 +# ╟─ee158e59-5ef3-4ba2-8289-3e3ef86edd7a +# ╠═f70278f0-b528-46f1-8fdf-8d2e6874681d +# ╠═ba81d320-2e76-4424-824b-71117b3c425a +# ╠═a289f9cf-9074-4d4a-969f-fd29ded5f7e9 +# ╠═45b1ea85-3366-4ca7-92ac-b0ef32c115f8 +# ╠═f1ae7a2c-49bb-4d15-9105-7205c1283dc5 +# ╠═6bdbcbdd-6d31-401b-b9f4-6bbcf59a9fb7 +# ╠═c48eb8e2-f021-4532-8cad-1510bbe73d8d +# ╠═4c8b1cf6-b6cf-4bd9-a3a2-a513b42522f5 +# ╠═3485f870-2374-42f6-baf1-8ded09d3855e +# ╠═37437389-be0c-457e-9762-4690f1e7ad9b +# ╠═54b7784d-0b8a-49a1-b51e-701ad6449bc3 +# ╠═d287f783-0120-4e33-b4c0-7c1b8bcb2ab2 +# ╠═b2e41ac0-187e-4c9f-b5f8-a943552219ac +# ╟─0bd6b9c2-463c-4c1e-8632-61933b42a76e +# ╠═beb4fa95-7863-4440-8c4c-0532f3fc8124 +# ╠═5105935d-377f-41b9-91de-6cdf15256c2a +# ╟─24405c44-57dc-40f2-a66f-94b85111a799 +# ╟─cbbdaf62-8631-425c-95e5-d30b959f2bd6 +# ╟─7cc223d9-a4a4-4485-b8b3-8ee9331a2bdc +# ╟─d41df209-f894-401c-b0af-1e7bae8f94d5 +# ╟─2a481921-ad35-41d1-98f3-26f3ee72a723 +# ╟─55c1c9ee-945f-47bb-8395-a9bdae699584 +# ╠═2517ccf7-c961-4c5f-9dfa-2b5207e442e7 +# ╠═8bab0ae2-ed99-4cb5-8852-59dfc281fd03 +# ╠═374428bd-9d5f-451a-afa0-4534bfce41f2 +# ╠═404ed441-dec5-4326-b6d2-7dfcba49ff34 +# ╟─fbf63f54-9b75-4b14-9f30-99f3fd6c3524 +# ╟─89823425-ba38-4dfa-bfdb-9b00492c79f6 +# ╠═cee4d3d1-8f25-40d7-a571-7f64b18d1061 +# ╟─59b2616d-95cf-443a-9b36-12041487d191 +# ╠═f460aa97-75ab-4b6f-9cb8-c01850489318 +# ╠═8b1da76c-92e9-47bb-81e9-58715894c40e +# ╟─a40c20dc-0473-4b14-b229-c2416f43422d +# ╟─c3289bca-8eb5-4d67-a5b0-9ed7e6558285 +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 diff --git a/notebooks/day_1_3_maximization.jl b/notebooks/day_1_3_maximization.jl new file mode 100644 index 0000000..5c8ad03 --- /dev/null +++ b/notebooks/day_1_3_maximization.jl @@ -0,0 +1,1860 @@ +### A Pluto.jl notebook ### +# v0.19.35 + +using Markdown +using InteractiveUtils + +# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). +macro bind(def, element) + quote + local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end + local el = $(esc(element)) + global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) + el + end +end + +# ╔═╡ e6db91a9-b40a-46a3-9160-f8dc36c36ba2 +using Plots + +# ╔═╡ 3916ec03-5ebb-4275-ac8c-8f5f951a0999 +using Optim + +# ╔═╡ a40c20dc-0473-4b14-b229-c2416f43422d +begin + using PlutoUI + using PlutoTeachingTools +end + +# ╔═╡ 28618afa-99f6-11ee-102b-49f1a1b27f4a +md"""# Essential numerical tools and perturbation analysis (1.c) + +## Optimization + +Pablo Winant + + +African Econometric Society Worskhop 14/12/23 +""" + +# ╔═╡ 55d1d974-2a73-42be-a3fa-846715ead255 +md"""## Introduction + +Optimization is *everywhere* in economics: + +- model an agent's behaviour: what would a rational agent do? + - consumer maximizes utility from consumption + - firm maximizes profit +- an economist tries to solve a model: + - find prices that clear the market +""" + +# ╔═╡ 0e482209-dcef-4f23-8781-b26751a2fcd9 +md"""## A Tale of Two Optimization Problems + +""" + +# ╔═╡ 08678ea9-c399-423e-9f2f-2252b578c1ed +TwoColumn( + md""" +minimization/maximization. + +$\min_{x\in X} f(x) \text{ or } \max_{x\in X} f(x)$ + """, + md""" +root finding: + +$\text{find}\; x \in X \; \text{such that} f(x)=0$, +""", + +) + +# ╔═╡ bb42d425-a057-4b5e-be2a-ccd8ac1a12d9 +md""" +Often a minimization problem can be reformulated as a root-finding problem + +$$x_0 = {argmin}_{x\in X} f(x) \overbrace{\iff}^{??} f^{\prime} (x_0) = 0$$ +""" + +# ╔═╡ 350ece58-d567-4ffb-952c-5ba3056e1edf +warning_box(md"""When using first order conditions to minimize a function one must pay attention to the two caveats: +- that the root does not correspond to a local *maximum* +- that the minimum is *global* (for $\forall x\in X$) not local +""") + +# ╔═╡ 3f560d65-eb9b-44ea-bb7b-4cee64f97d56 +Foldable("Local/Global Illustration", md""" +![Local vs Global Maximum](https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Extrema_example_original.svg/1280px-Extrema_example_original.svg.png) +""" +) + +# ╔═╡ f0cc7230-08cf-4be7-9625-715a60828a24 +md""" +## Optimization tasks come in many flavours + +""" + +# ╔═╡ fdcd3001-47d8-4054-83e2-58c78ffb9c16 +Foldable("Continuous versus discrete optimization",md""" +- Choice is picked from a given set ($x\in X$) which can be: + - continuous: choose amount of debt $b_t \in [0,\overline{b}]$, of capital $k_t \in R^{+}$ + - discrete: choose whether to repay or default $\delta\in{0,1}$, how many machines to buy ($\in N$), at which age to retire... + - a combination of both: mixed integer programming + +- Discrete optimization requires a lot of combinatorial thinking + - ...if needed, we just test all choices until we find the best one +- Sometimes a discrete choice can be approximated by a mixed strategy (i.e. a random strategy). + - Instead of $\delta\in{0,1}$ we choose $x$ in $prob(\delta=1)=\sigma(x)$ + - with $\sigma(x)=\frac{2}{1+\exp(-x)}$ + + +""") + +# ╔═╡ 6dda9f47-b2da-40b6-8157-bb2aaa5aa631 +Foldable("""Constrained and Unconstrained optimization""", md""" +- Unconstrained optimization: $x\in R$ +- Constrained optimization: $x\in X$ + - budget set: $p_1 c_1 + p_2 c_2 \leq I$ + - positivity of consumption: $c \geq 0$. +- In good cases, the optimization set is *convex*... + - pretty much always in this course +""") + + +# ╔═╡ 8f84d0a3-5ac3-4590-a43a-03b75af15312 +Foldable("Stochastic vs Deterministic", +md""" +- Common case, especially in machine learning +$$f(x) = E_{\epsilon}[ \xi (\epsilon, x)]$$ +- One wants to maximize (resp solve) w.r.t. $x$ but it is costly to compute expectation precisely using Monte-Carlo draws (there are other methods). +- A *stochastic* optimization method allows to use noisy estimates of the expectation, and will still converge in expectation. +""") + +# ╔═╡ efb31f8c-45a3-4662-b23e-71dc679f6a3e +Foldable("Local vs global Algorithms", +md""" +- In principle, there can be many roots (resp maxima) within the optimization set. + +- Algorithms that find them all are called "global". For instance: + - grid search + - simulated annealing + +- We deal only with local algorithms, and consider local convergence properties. + - ->then it might work or not + - to perform global optimization just restart from different points.) +""") + +# ╔═╡ 06508677-bdb6-4373-aa6b-3465bc492864 +md"""## Math vs practice + +- The full mathematical treatment will typically assume that $f$ is smooth ($\mathcal{C}_1$ or $\mathcal{C}_2$ depending on the algorithm). + +- In practice we often don't know about these properties + - we still try and check that we have a local optimal + +- So: fingers crossed +""" + +# ╔═╡ 402c3ddb-71c9-4d15-8c63-6d4571452098 +Foldable("A complicated surface", tip(md""" +Here is the surface (a cut) representing the objective that a deep neural network training algorithm tries to minimize. + +![Is that C1?](https://www.mosphere.fr/eco309/slides/nonsmooth.png) + +And yet, neural networks do great things! + +""")) + +# ╔═╡ 176fbed4-5c20-4010-986d-5bf5097d7ed3 +md"""## What you need to know + +- handcode simple algos (Newton, Gradient Descent) + - very useful 👍 +- understand the general principle of the various algorithms to compare them in terms of + - robustness + - efficiency + - accuracy +- then you can just switch the various options, when you use a library... + - root-finding: [Roots.jl](https://github.com/JuliaMath/Roots.jl) (1d) and [NLsolve.jl](https://github.com/JuliaNLSolvers/NLsolve.jl) + - optimization: [Optim.jl](https://github.com/JuliaNLSolvers/Optim.jl) + - more advanced modeling: [JuMP.jl](https://github.com/jump-dev/JuMP.jl) (comparable to GAMS) +""" + +# ╔═╡ 1fced9b0-8947-4567-803d-ab6aaf7a8840 +md"""## Unconstrained Optimization + + +- Minimize $f(x)$ for $x \in \mathbf{R}^n$ given initial guess $x_0 \in \mathbf{R}^n$ +- If you have intuitions from the 1d case, they still apply + - replace derivatives by gradient, jacobian and hessian + - recall that matrix multiplication is not commutative +- Some specific problems: + - update speed can be specific to each dimension + - saddle-point issues (for minimization) + +""" + +# ╔═╡ bf71d540-6301-4473-a884-7bc381787403 +md""" +## Quick terminology + +Function $f: R^p \rightarrow R^q$ + +- *Jacobian*: $J(x)$ or $f^{\prime}\_x(x)$, $p\times q$ matrix such that: + $$J(x)_{ij} = \frac{\partial f(x)_i}{\partial x_j}$$ +- *Gradient*: $\nabla f(x) = J(x)$, jacobian when $q=1$ +- *Hessian*: denoted by $H(x)$ or $f^{\prime\prime}_{xx}(x)$ when $q=1$: +$$H(x)_{jk} = \frac{\partial f(x)}{\partial x_j\partial x_k}$$ + +In the following explanations, $|x|$ denotes the supremum norm, but most of the +following explanations also work with other norms. +""" + +# ╔═╡ f29e49ca-d8b7-4f43-961f-23785cd138e8 +md"""## Newton-Raphson Root-Finding + +- Algorithm: + - start with $x_n$ + - compute $x_{n+1} = x_n- J(x_{n})^{-1}f(x_n)=f^{\text{newton}}(x_n)$ + - stop if $|x_{n+1}-x_n|<\eta$ or $|f(x_n)| < \epsilon$ + +- Convergence: __quadratic__ +""" + +# ╔═╡ dcd99d29-308b-4fbc-9d23-666a8bf01c68 +Foldable("Newton Raphson Illustration", md"""![Newton-Raphson](https://upload.wikimedia.org/wikipedia/commons/8/8c/Newton_iteration.svg) + """ +) + +# ╔═╡ 55f48089-e0cc-4f6c-8a95-4b0ba67d80cb +md"""## Newton-Raphson Root Finding (2) + +- what matters is the computation of the step $\Delta_n = {\color{\red}{J(x_{n})^{-1}}} f(x_n)$ +- don't compute $J(x_n)^{-1}$ + - it takes less operations to compute $X$ in $AX=Y$ than $A^{-1}$ then $A^{-1}Y$ + - in Julia: `X = A \ Y` +- strategies to improve convergence: + - *dampening*: $x_n = (1-\lambda)x_{n-1} - \lambda \Delta_n$ + - *backtracking*: choose $k$ such that $|f(x_n-2^{-k}\Delta_n)|$<$|f(x_{n-1})|$ + - *linesearch*: choose $\lambda\in[0,1]$ so that $|f(x_n-\lambda\Delta_n)|$ is minimal +""" + +# ╔═╡ 210d296d-9f18-4517-ac31-8c1bdf4d5caa +md"""## Exercise 1: Simple Newton Algorithm + +__Choose a two dimensional function with a zero.__ + +__Write a method `zero_newton(f::Function, x0::Vector{Float64})` which computes the zero of a vector valued function `f` starting from initial point `x0`.__ + +__Change the signature of the function `zero_newton(f::Function, x0::Vector{Float64}, backtracking=true)` and implement backtracking in each iteration.__ + +""" + +# ╔═╡ 19566fca-e16c-4200-a2de-fd1538133ec8 +function ϕ(x::Vector{Float64}) + y = [x[1]^2 + x[2]^2 - 0.5 , x[1] + x[2] - 1 ] + dy = [ (2*x[1]) 1.0 ; 1.0 (2*x[1]) ] + return (y, dy) +end + +# ╔═╡ b6f5f907-1b73-4339-a432-52f0290b2a6d +ϕ([0.2, 0.1]) + +# ╔═╡ 041efe89-59e5-47b1-b017-9eb0809d0729 +# what are the zeros of ϕ? + +# ╔═╡ 4b69133c-f1a8-48c0-b707-84caf5287e27 +function zero_newton(f::Function, x0::Vector{Float64}) +end + +# ╔═╡ d7e3e3bf-cad3-4473-94b9-612d35052128 +md"""## Multidimensional Gradient Descent + +- Minimize $f(x) \in R$ for $x \in R^n$ given $x_0 \in R^n$ +- Algorithm + - start with $x_n$ + - set $x_{n+1} = (1-\lambda) x_n - \lambda \nabla f(x_n)$ + - stop if $|x_{n+1}-x_n|<\eta$ or $|f(x_n)| < \epsilon$ + +- Comments: + - lots of variants + - __automatic differentiation__ software makes gradient easy to compute + - convergence is typically __linear__ +""" + +# ╔═╡ b1840ead-1a33-482f-9831-4aed1263ffc0 +Foldable("Gradient Descent Illustration", md"""![](https://www.mosphere.fr/eco309/slides/contours_evaluation_optimizers.gif) +""") + +# ╔═╡ 38235a31-a1e1-4c3d-a7f8-fdc74698dbed +md"""## Multidimensional Newton Minimization + + +- Algorithm: + - start with $x_n$ + - compute $x_{n+1} = x_n-{\color{\red}{H(x_{n})^{-1}}}\color{\green}{ J(x_n)'}$ + - stop if $|x_{n+1}-x_n|<\eta$ or $|f(x_n)| < \epsilon$ +- Convergence: __quadratic__ + + +""" + +# ╔═╡ 702005cf-22f0-4dca-b0b4-ff7d7f5731db +Foldable("Newton Illustration", + md"""![Multidimensional Newton](https://jermwatt.github.io/machine_learning_refined/mlrefined_images/math_optimization_images/Fig_2_11.png)""") + +# ╔═╡ 57a2d454-bb74-4794-a05e-09e8665f2125 +md"""Practical Problems + - hessian $H(x_{n})$ is hard to compute efficiently + - rather unstable +""" + +# ╔═╡ 07fa813b-90a4-4352-82d7-c32adf7b873c +md""" +There are ways to approximate the hessian without a full evaluation +- quasi-newton +- gauss-newton +- Levenberg-Marquardt +""" + +# ╔═╡ 0876dbbb-3295-44ca-b8bd-c193396116ae +md"""## Exercise 2: Profit optimization by a monopolist + + + +A monopolist produces quantity $q$ of goods X at price $p$. Its cost function is $c(q) = 0.5 + q (1-qe^{-q})$ + +The consumer's demand for price $p$ is $x(p)=2 e^{-0.5 p}$ (constant elasticity of demand to price). + +__Write down the profit function of the monopolist and find the optimal production (if any) numerically. You can use the `Optim.jl` library.__ +""" + +# ╔═╡ e8f9baba-2935-4725-9d15-10b33f00b6f7 +hint(md"""Try this code to define profits: +``` +p(q) = -2log(q/2) +c(q) = 0.5 + q*(1-q*exp(-q)) +R(q) = q*p(q) +profits(q) = R(q) - c(q) +``` +""") + +# ╔═╡ 7d6a8db5-5f15-4858-b2f7-927e56f9b863 +begin + p(q) = -2log(q/2) + c(q) = 0.5 + q*(1-q*exp(-q)) + R(q) = q*p(q) + profits(q) = R(q) - c(q) +end + +# ╔═╡ 4f39404c-c4f6-4926-af00-66f08d39b9ff +@bind q_sl Slider(0.001:0.01: 0.5) + +# ╔═╡ 735644f6-974f-457b-83fd-c509e9663da1 +profits(q_sl) + +# ╔═╡ cf4134b2-79e0-4d42-ac37-9afa3bc95126 +begin + qvec = 0.001:0.01: 1.0 + πvec = profits.(qvec) +end + +# ╔═╡ 4ce88942-9315-498c-8e80-bd6c51f5bb5c +plot(qvec, πvec) + +# ╔═╡ ae53858e-f949-499a-a0d7-40ed81c12f50 +res = optimize(u->-profits(u[1]) , [0.25]) + +# ╔═╡ 09906237-c7af-4d99-966f-552b34a2c65f +min0 = res.minimizer + +# ╔═╡ 6d665833-4c62-4bad-a1c6-43e6dafa8d4f +println("Profit is maximum for q=$min0") + +# ╔═╡ 7b6bbd92-f211-444b-b176-324df69e29f3 +md"""## Dealing with constraints + + +Consider the optimization problem: + +$$\max U(x_1, x_2)$$ + +subject to to the constraint $p_1 x_1 + p_2 x_2 \leq B$ + +where $U(.)$ is concave, $p_1$, $p_2$ and $B$ are given. + +This is a constrained maximization problem. Some optimization algorithms are equipped to deal with the constraint. + +One can also reformulate the maximization problem as a first order system. +""" + +# ╔═╡ d12be4be-eb6f-4b6e-8cd9-6c315461166a +md"""## Karush-Kuhn-Tucker conditions + +- If $(x^{\star},y^{\star})$ is optimal there exists $\lambda$ such that: + - $(x^{\star},y^{\star})$ maximizes lagrangian $\mathcal{L} = U(x_1, x_2) + \lambda (B- p_1 x_1 - p_2 x_2)$ + - $\lambda \geq 0$ + - $B- p_1 x_1 - p_2 x_2 \geq 0$ + - $\lambda (B - p_1 x_1 - p_2 x_2 ) = 0$ +- The three latest conditions are called "complementarity" or "slackness" conditions + - they are equivalent to $\min(\lambda, B - p_1 x_1 - p_2 x_2)=0$ + - we denote $\lambda \geq 0 \perp B- p_1 x_1 + p_2 x_2 \geq 0$ +- Lagrange multiplier $\lambda$ can be interpreted as the welfare gain of relaxing the constraint. +""" + +# ╔═╡ 6f1fa4c9-9e3b-477b-9b3f-067bbb601934 +md""" +## Karush-Kuhn-Tucker conditions + +- We can get first order conditions that factor in the constraints: + - $U^{\prime}_x - \lambda p_1 = 0$ + - $U^{\prime}_y - \lambda p_2 = 0$ + - $\lambda \geq 0 \perp B-p_1 x_1 -p_2 x_2 \geq 0$ +- It is now a nonlinear system of three equations in three unknowns with complementarities + - a.k.a. Nonlinear Complementarity Problem (NCP) + - there are specific solution methods to deal with it + - and commercial solvers (knitro, PATH) + - but one can often use a simple, easy trick... +""" + +# ╔═╡ a1f23501-f7b0-412c-ab65-e994928435f4 +md"""## Smooth method + +- Consider the *Fisher-Burmeister* function $$\phi(a,b) = a+b-\sqrt{a^2+b^2}$$ + - It is infinitely differentiable, except at $(0,0)$ + - Show that $\phi(a,b) = 0 \iff \min(a,b)=0 \iff a\geq 0 \perp b \geq 0$ +- After substitution in the original system, we obtain: + - $U^{\prime}_x - \lambda p_1 = 0$ + - $U^{\prime}_y - \lambda p_2 = 0$ + - $\phi(\lambda, B-p_1 x_1 -p_2 x_2) = 0$ +- And we can use our preferred nonlinear solver +""" + +# ╔═╡ a71b8a8c-1cda-4efa-b8af-f41ef3966a96 +aside(tip(md"Fun fact: the formulation with a $\min$ is nonsmooth but also works quite often")) + +# ╔═╡ 74958a24-35cf-4d80-bb93-b3fcde432ef7 +md"""## Exercise 3: Constrained Optimization +Consider the function $f(x,y) = 1-(x-0.5)^2 -(y-0.3)^2$. + +__Use Optim.jl to maximize $f$ without constraint. Check you understand diagnostic informations returned by the optimizer.__ +""" + +# ╔═╡ e94f658e-18fb-4fbd-9ec9-d5cf69f494ab + + +# ╔═╡ 18bb0544-8808-4047-b230-a839d7b842db +md"""__Now, consider the constraint $x<0.3$ and maximize $f$ under this new constraint.__""" + +# ╔═╡ 12d93cba-6c9f-4238-9a5d-be2f5c3565c1 + + +# ╔═╡ 68bfec70-3891-4ea9-8267-136f56873bd3 +md"""__Reformulate the problem as a root finding problem with lagrangians. Write the complementarity conditions.__""" + +# ╔═╡ 80117855-5187-4f68-9ddc-29914fdaaaec + + +# ╔═╡ 9af7a3ce-4dc0-4123-b738-fcf2462d3200 +md"""__Solve using NLSolve.jl__""" + +# ╔═╡ fbf38f23-a959-44e9-9e99-ca734742c338 + + +# ╔═╡ 38abb4cc-3c89-4c74-86fe-b0f07db2ee6f +md"""__Adapt the `zero_newton` function from before to incorporate bound informations, and use the Fisher-Burmeister transform to solve the system.__""" + +# ╔═╡ c0abd95f-e901-45ba-bcda-ea09993cb98c +TableOfContents() # from PlutoUI + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +Optim = "429524aa-4258-5aef-a3af-852621145aeb" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +PlutoTeachingTools = "661c6b06-c737-4d37-b85c-46df65de6f69" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" + +[compat] +Optim = "~1.7.8" +Plots = "~1.39.0" +PlutoTeachingTools = "~0.2.13" +PlutoUI = "~0.7.54" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "cce6978b9bfd2be3e2039ac07f8d8aa0a96247cd" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "cde29ddf7e5726c9fb511f340244ea3481267608" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "3.7.2" + + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" + + [deps.Adapt.weakdeps] + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "247efbccf92448be332d154d6ca56b9fcdd93c31" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.6.1" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.8+0" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.16.1+1" + +[[deps.CodeTracking]] +deps = ["InteractiveUtils", "UUIDs"] +git-tree-sha1 = "c0216e792f518b39b22212127d4a84dc31e4e386" +uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" +version = "1.3.5" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.24.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.10.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.10" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.0" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "886826d76ea9e72b35fcd000e535588f7b60f21d" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.1" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.ConstructionBase]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.5.4" + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseStaticArraysExt = "StaticArrays" + + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.Contour]] +git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.2" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.15" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.5.0+0" + +[[deps.FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.1" + +[[deps.FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.4.4+1" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FillArrays]] +deps = ["LinearAlgebra", "Random"] +git-tree-sha1 = "5b93957f6dcd33fc343044af3d48c215be2562f1" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.9.3" + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + + [deps.FillArrays.weakdeps] + PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] +git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.21.1" + + [deps.FiniteDiff.extensions] + FiniteDiffBandedMatricesExt = "BandedMatrices" + FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" + FiniteDiffStaticArraysExt = "StaticArrays" + + [deps.FiniteDiff.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.13.93+0" + +[[deps.Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.36" + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + + [deps.ForwardDiff.weakdeps] + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.13.1+0" + +[[deps.FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.10+0" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[deps.GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] +git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.3.8+0" + +[[deps.GR]] +deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] +git-tree-sha1 = "27442171f28c952804dede8ff72828a96f2bfc1f" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.72.10" + +[[deps.GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.72.10+0" + +[[deps.Gettext_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" +uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" +version = "0.21.0+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.76.5+0" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.14+0" + +[[deps.Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "abbbb9ec3afd783a7cbd82ef01dcd088ea051398" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.1" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] +git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "2.8.1+1" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.JLFzf]] +deps = ["Pipe", "REPL", "Random", "fzf_jll"] +git-tree-sha1 = "a53ebe394b71470c7f97c2e7e170d51df21b17af" +uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" +version = "0.1.7" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "60b1194df0a3298f460063de985eae7b01bc011a" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.0.1+0" + +[[deps.JuliaInterpreter]] +deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] +git-tree-sha1 = "e49bce680c109bc86e3e75ebcb15040d6ad9e1d3" +uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" +version = "0.9.27" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.1+0" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "3.0.0+1" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "15.0.4+0" + +[[deps.LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.1+0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] +git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.1" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.2+1" + +[[deps.Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.8.7+0" + +[[deps.Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.6.0+0" + +[[deps.Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.42.0+0" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.35.0+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.5.1+1" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.36.0+0" + +[[deps.LineSearches]] +deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] +git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" +uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" +version = "7.2.0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.26" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.LoweredCodeUtils]] +deps = ["JuliaInterpreter"] +git-tree-sha1 = "0b8cf121228f7dae022700c1c11ac1f04122f384" +uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" +version = "2.3.2" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.Measures]] +git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.2" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.1.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NLSolversBase]] +deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] +git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" +uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" +version = "7.8.3" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.5+1" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.Optim]] +deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] +git-tree-sha1 = "01f85d9269b13fedc61e63cc72ee2213565f7a72" +uuid = "429524aa-4258-5aef-a3af-852621145aeb" +version = "1.7.8" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.3.2+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+0" + +[[deps.Parameters]] +deps = ["OrderedCollections", "UnPack"] +git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pipe]] +git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" +uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" +version = "1.3.0" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.42.2+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlotThemes]] +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "3.1.0" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] +git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.3.5" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.39.0" + + [deps.Plots.extensions] + FileIOExt = "FileIO" + GeometryBasicsExt = "GeometryBasics" + IJuliaExt = "IJulia" + ImageInTerminalExt = "ImageInTerminal" + UnitfulExt = "Unitful" + + [deps.Plots.weakdeps] + FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" + GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.PlutoHooks]] +deps = ["InteractiveUtils", "Markdown", "UUIDs"] +git-tree-sha1 = "072cdf20c9b0507fdd977d7d246d90030609674b" +uuid = "0ff47ea0-7a50-410d-8455-4348d5de0774" +version = "0.0.5" + +[[deps.PlutoLinks]] +deps = ["FileWatching", "InteractiveUtils", "Markdown", "PlutoHooks", "Revise", "UUIDs"] +git-tree-sha1 = "8f5fa7056e6dcfb23ac5211de38e6c03f6367794" +uuid = "0ff47ea0-7a50-410d-8455-4348d5de0420" +version = "0.1.6" + +[[deps.PlutoTeachingTools]] +deps = ["Downloads", "HypertextLiteral", "LaTeXStrings", "Latexify", "Markdown", "PlutoLinks", "PlutoUI", "Random"] +git-tree-sha1 = "542de5acb35585afcf202a6d3361b430bc1c3fbd" +uuid = "661c6b06-c737-4d37-b85c-46df65de6f69" +version = "0.2.13" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PositiveFactorizations]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" +uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" +version = "0.2.4" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.Qt6Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" +uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" +version = "6.5.3+1" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] +git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.6.12" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Revise]] +deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] +git-tree-sha1 = "6990168abf3fe9a6e34ebb0e05aaaddf6572189e" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "3.5.10" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.1" + +[[deps.Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.3.1" + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + + [deps.SpecialFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.2" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.2" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "3c793be6df9dd77a0cf49d80984ef9ff996948fa" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.19.0" + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + InverseFunctionsUnitfulExt = "InverseFunctions" + + [deps.Unitful.weakdeps] + ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.UnitfulLatexify]] +deps = ["LaTeXStrings", "Latexify", "Unitful"] +git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" +uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" +version = "1.6.3" + +[[deps.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + +[[deps.Wayland_jll]] +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.21.0+1" + +[[deps.Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.25.0+0" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "801cbe47eae69adc50f36c3caec4758d2650741b" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.12.2+0" + +[[deps.XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] +git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.34+0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "522b8414d40c4cbbab8dee346ac3a09f9768f25d" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.4.5+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Libdl", "Pkg"] +git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.0.10+1" + +[[deps.Xorg_libSM_jll]] +deps = ["Libdl", "Pkg", "Xorg_libICE_jll"] +git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.3+0" + +[[deps.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.6+0" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.11+0" + +[[deps.Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.0+4" + +[[deps.Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.4+0" + +[[deps.Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.4+4" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "5.0.3+4" + +[[deps.Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.7.10+4" + +[[deps.Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] +git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.4+4" + +[[deps.Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[deps.Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.10+4" + +[[deps.Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.1+0" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.15.0+0" + +[[deps.Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.2+0" + +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.4+0" + +[[deps.Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] +git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.9+1" + +[[deps.Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.1+1" + +[[deps.Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.6+0" + +[[deps.Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.39.0+0" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.5.0+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.5+0" + +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] +git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.9+0" + +[[deps.fzf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a68c9655fbe6dfcab3d972808f1aafec151ce3f8" +uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" +version = "0.43.0+0" + +[[deps.gperf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" +uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" +version = "3.1.1+0" + +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.4.0+0" + +[[deps.libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.15.1+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.11.0+0" + +[[deps.libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.2+0" + +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.18.0+0" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "93284c28274d9e75218a416c65ec49d0e0fcdf3d" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.40+0" + +[[deps.libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] +git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.7+1" + +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.6+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" + +[[deps.x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "2021.5.5+0" + +[[deps.x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "3.5.0+0" + +[[deps.xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.4.1+1" +""" + +# ╔═╡ Cell order: +# ╟─28618afa-99f6-11ee-102b-49f1a1b27f4a +# ╟─55d1d974-2a73-42be-a3fa-846715ead255 +# ╟─0e482209-dcef-4f23-8781-b26751a2fcd9 +# ╟─08678ea9-c399-423e-9f2f-2252b578c1ed +# ╟─bb42d425-a057-4b5e-be2a-ccd8ac1a12d9 +# ╟─350ece58-d567-4ffb-952c-5ba3056e1edf +# ╟─3f560d65-eb9b-44ea-bb7b-4cee64f97d56 +# ╟─f0cc7230-08cf-4be7-9625-715a60828a24 +# ╟─fdcd3001-47d8-4054-83e2-58c78ffb9c16 +# ╟─6dda9f47-b2da-40b6-8157-bb2aaa5aa631 +# ╟─8f84d0a3-5ac3-4590-a43a-03b75af15312 +# ╟─efb31f8c-45a3-4662-b23e-71dc679f6a3e +# ╟─06508677-bdb6-4373-aa6b-3465bc492864 +# ╟─402c3ddb-71c9-4d15-8c63-6d4571452098 +# ╟─176fbed4-5c20-4010-986d-5bf5097d7ed3 +# ╟─1fced9b0-8947-4567-803d-ab6aaf7a8840 +# ╟─bf71d540-6301-4473-a884-7bc381787403 +# ╟─f29e49ca-d8b7-4f43-961f-23785cd138e8 +# ╟─dcd99d29-308b-4fbc-9d23-666a8bf01c68 +# ╟─55f48089-e0cc-4f6c-8a95-4b0ba67d80cb +# ╟─210d296d-9f18-4517-ac31-8c1bdf4d5caa +# ╠═19566fca-e16c-4200-a2de-fd1538133ec8 +# ╠═b6f5f907-1b73-4339-a432-52f0290b2a6d +# ╠═041efe89-59e5-47b1-b017-9eb0809d0729 +# ╠═4b69133c-f1a8-48c0-b707-84caf5287e27 +# ╟─d7e3e3bf-cad3-4473-94b9-612d35052128 +# ╟─b1840ead-1a33-482f-9831-4aed1263ffc0 +# ╟─38235a31-a1e1-4c3d-a7f8-fdc74698dbed +# ╟─702005cf-22f0-4dca-b0b4-ff7d7f5731db +# ╟─57a2d454-bb74-4794-a05e-09e8665f2125 +# ╟─07fa813b-90a4-4352-82d7-c32adf7b873c +# ╟─0876dbbb-3295-44ca-b8bd-c193396116ae +# ╟─e8f9baba-2935-4725-9d15-10b33f00b6f7 +# ╠═7d6a8db5-5f15-4858-b2f7-927e56f9b863 +# ╠═4f39404c-c4f6-4926-af00-66f08d39b9ff +# ╠═735644f6-974f-457b-83fd-c509e9663da1 +# ╠═cf4134b2-79e0-4d42-ac37-9afa3bc95126 +# ╠═e6db91a9-b40a-46a3-9160-f8dc36c36ba2 +# ╠═4ce88942-9315-498c-8e80-bd6c51f5bb5c +# ╠═3916ec03-5ebb-4275-ac8c-8f5f951a0999 +# ╠═ae53858e-f949-499a-a0d7-40ed81c12f50 +# ╠═09906237-c7af-4d99-966f-552b34a2c65f +# ╠═6d665833-4c62-4bad-a1c6-43e6dafa8d4f +# ╟─7b6bbd92-f211-444b-b176-324df69e29f3 +# ╟─d12be4be-eb6f-4b6e-8cd9-6c315461166a +# ╟─6f1fa4c9-9e3b-477b-9b3f-067bbb601934 +# ╟─a1f23501-f7b0-412c-ab65-e994928435f4 +# ╟─a71b8a8c-1cda-4efa-b8af-f41ef3966a96 +# ╟─74958a24-35cf-4d80-bb93-b3fcde432ef7 +# ╠═e94f658e-18fb-4fbd-9ec9-d5cf69f494ab +# ╟─18bb0544-8808-4047-b230-a839d7b842db +# ╠═12d93cba-6c9f-4238-9a5d-be2f5c3565c1 +# ╟─68bfec70-3891-4ea9-8267-136f56873bd3 +# ╠═80117855-5187-4f68-9ddc-29914fdaaaec +# ╟─9af7a3ce-4dc0-4123-b738-fcf2462d3200 +# ╠═fbf38f23-a959-44e9-9e99-ca734742c338 +# ╟─38abb4cc-3c89-4c74-86fe-b0f07db2ee6f +# ╟─a40c20dc-0473-4b14-b229-c2416f43422d +# ╟─c0abd95f-e901-45ba-bcda-ea09993cb98c +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 diff --git a/notebooks/pablo_winant.png b/notebooks/pablo_winant.png new file mode 100644 index 0000000..3c0a968 Binary files /dev/null and b/notebooks/pablo_winant.png differ diff --git a/notebooks/plot.png b/notebooks/plot.png new file mode 100644 index 0000000..080f740 Binary files /dev/null and b/notebooks/plot.png differ diff --git a/pdf/day_1_1_intro.pdf b/pdf/day_1_1_intro.pdf new file mode 100644 index 0000000..7a9203e Binary files /dev/null and b/pdf/day_1_1_intro.pdf differ diff --git a/pdf/day_1_2_recursive_sequences.pdf b/pdf/day_1_2_recursive_sequences.pdf new file mode 100644 index 0000000..1ae6f86 Binary files /dev/null and b/pdf/day_1_2_recursive_sequences.pdf differ diff --git a/pdf/day_1_3_maximization.pdf b/pdf/day_1_3_maximization.pdf new file mode 100644 index 0000000..b709f4e Binary files /dev/null and b/pdf/day_1_3_maximization.pdf differ diff --git a/web/day_1_1_intro.html b/web/day_1_1_intro.html new file mode 100644 index 0000000..4a3f57a --- /dev/null +++ b/web/day_1_1_intro.html @@ -0,0 +1,15 @@ + + + + + +
\ No newline at end of file diff --git a/web/day_1_2_recursive_sequences.html b/web/day_1_2_recursive_sequences.html new file mode 100644 index 0000000..032b619 --- /dev/null +++ b/web/day_1_2_recursive_sequences.html @@ -0,0 +1,15 @@ + + + + + +
\ No newline at end of file diff --git a/web/day_1_3_maximization.html b/web/day_1_3_maximization.html new file mode 100644 index 0000000..ed86f0b --- /dev/null +++ b/web/day_1_3_maximization.html @@ -0,0 +1,15 @@ + + + + + +
\ No newline at end of file