From f884688f49c2d5142c7368b9175943bec672d023 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sun, 24 Nov 2024 20:33:58 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20OlivierH?= =?UTF-8?q?nt/Computer-assisted-proofs-in-nonlinear-analysis@72f03bf8de164?= =?UTF-8?q?8de71c60bf570d00badcadf32ea=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {cheat_sheet => cheatsheets}/index.html | 8 +- .../algebraic_exercise1_3399836e.plutostate | Bin 6805 -> 0 bytes .../algebraic_exercise1_59ba77c2.plutostate | Bin 0 -> 6805 bytes .../algebraic_exercise2_5c8a0894.plutostate | Bin 27027 -> 0 bytes .../algebraic_exercise2_bd5de5de.plutostate | Bin 0 -> 20715 bytes ...435.jl => algebraic_exercise2_bd6add9f.jl} | 12 +- ...> algebraic_exercise3_1636fb20.plutostate} | Bin 28352 -> 28400 bytes ...2ad.jl => algebraic_exercise3_2b53f781.jl} | 12 +- ...> algebraic_exercise4_513c6709.plutostate} | Bin 12173 -> 12173 bytes .../cheat_sheet_3be14bf4.plutostate | Bin 119865 -> 0 bytes .../cheatsheets_1ae6b137.plutostate | Bin 0 -> 159936 bytes ...et_f8537198.jl => cheatsheets_36103bb1.jl} | 181 ++---- ...te_dimension_exercise1_71195e01.plutostate | Bin 0 -> 4306 bytes ...te_dimension_exercise1_e0458cc5.plutostate | Bin 4306 -> 0 bytes ...=> finite_dimension_exercise2_3531bb76.jl} | 12 +- ...e_dimension_exercise2_bca74ccc.plutostate} | Bin 44043 -> 44115 bytes ...=> finite_dimension_exercise3_a9859f5b.jl} | 12 +- ...e_dimension_exercise3_cc9650b2.plutostate} | Bin 30808 -> 30856 bytes ...e_dimension_exercise4_56a0be01.plutostate} | Bin 33605 -> 33653 bytes ...=> finite_dimension_exercise4_f1da905e.jl} | 12 +- ...te_dimension_exercise5_20281c31.plutostate | Bin 0 -> 3519 bytes ...te_dimension_exercise5_bab7415c.plutostate | Bin 3519 -> 0 bytes ...inite_dimension_lecture_notes_89e4e102.jl} | 91 +-- ...mension_lecture_notes_8ba333e8.plutostate} | Bin 244745 -> 246974 bytes ...9.jl => fourier_lecture_notes_04f17b1b.jl} | 123 ++-- ...fourier_lecture_notes_73861375.plutostate} | Bin 294840 -> 296339 bytes ...inverse_lecture_notes_57b370b0.plutostate} | Bin 292741 -> 293518 bytes ...1.jl => inverse_lecture_notes_9c6da622.jl} | 109 ++-- ...8377e.jl => ivp_lecture_notes_18286ffe.jl} | 546 ++++++++++++++---- .../ivp_lecture_notes_727c5350.plutostate | Bin 0 -> 275827 bytes .../ivp_lecture_notes_cd2ce1aa.plutostate | Bin 130235 -> 0 bytes .../manifolds_exercise1_0ff6ae7a.plutostate | Bin 3942 -> 0 bytes .../manifolds_exercise1_dacbb802.plutostate | Bin 0 -> 3942 bytes .../manifolds_exercise2_64d68034.plutostate | Bin 3182 -> 0 bytes .../manifolds_exercise2_e625e451.plutostate | Bin 0 -> 3182 bytes ...nifolds_lecture_notes_06068aa0.plutostate} | Bin 195015 -> 195138 bytes ...jl => manifolds_lecture_notes_38b0714b.jl} | 12 +- ...heory_manifolds_lecture_notes_69d5e312.jl} | 12 +- ...nifolds_lecture_notes_91a322af.plutostate} | Bin 124054 -> 124174 bytes homework/algebraic_exercise1/index.html | 6 +- homework/algebraic_exercise2/index.html | 6 +- homework/algebraic_exercise3/index.html | 6 +- homework/algebraic_exercise4/index.html | 6 +- .../finite_dimension_exercise1/index.html | 6 +- .../finite_dimension_exercise2/index.html | 6 +- .../finite_dimension_exercise3/index.html | 6 +- .../finite_dimension_exercise4/index.html | 6 +- .../finite_dimension_exercise5/index.html | 6 +- homework/manifolds_exercise1/index.html | 6 +- homework/manifolds_exercise2/index.html | 6 +- index.html | 4 +- installation/index.html | 4 +- .../finite_dimension_lecture_notes/index.html | 6 +- mod2/inverse_lecture_notes/index.html | 10 +- mod3/ivp_lecture_notes/index.html | 6 +- mod4/fourier_lecture_notes/index.html | 6 +- mod5/manifolds_lecture_notes/index.html | 6 +- .../theory_manifolds_lecture_notes/index.html | 6 +- pluto_export.json | 2 +- pp_search_data.json | 2 +- 60 files changed, 765 insertions(+), 495 deletions(-) rename {cheat_sheet => cheatsheets}/index.html (90%) delete mode 100644 generated_assets/algebraic_exercise1_3399836e.plutostate create mode 100644 generated_assets/algebraic_exercise1_59ba77c2.plutostate delete mode 100644 generated_assets/algebraic_exercise2_5c8a0894.plutostate create mode 100644 generated_assets/algebraic_exercise2_bd5de5de.plutostate rename generated_assets/{algebraic_exercise2_0992f435.jl => algebraic_exercise2_bd6add9f.jl} (98%) rename generated_assets/{algebraic_exercise3_dfcfe85e.plutostate => algebraic_exercise3_1636fb20.plutostate} (72%) rename generated_assets/{algebraic_exercise3_598382ad.jl => algebraic_exercise3_2b53f781.jl} (98%) rename generated_assets/{algebraic_exercise4_3934de66.plutostate => algebraic_exercise4_513c6709.plutostate} (63%) delete mode 100644 generated_assets/cheat_sheet_3be14bf4.plutostate create mode 100644 generated_assets/cheatsheets_1ae6b137.plutostate rename generated_assets/{cheat_sheet_f8537198.jl => cheatsheets_36103bb1.jl} (91%) create mode 100644 generated_assets/finite_dimension_exercise1_71195e01.plutostate delete mode 100644 generated_assets/finite_dimension_exercise1_e0458cc5.plutostate rename generated_assets/{finite_dimension_exercise2_e5fb57de.jl => finite_dimension_exercise2_3531bb76.jl} (98%) rename generated_assets/{finite_dimension_exercise2_1a7568c0.plutostate => finite_dimension_exercise2_bca74ccc.plutostate} (73%) rename generated_assets/{finite_dimension_exercise3_b24354b1.jl => finite_dimension_exercise3_a9859f5b.jl} (98%) rename generated_assets/{finite_dimension_exercise3_e04cbd1e.plutostate => finite_dimension_exercise3_cc9650b2.plutostate} (74%) rename generated_assets/{finite_dimension_exercise4_c3766b47.plutostate => finite_dimension_exercise4_56a0be01.plutostate} (73%) rename generated_assets/{finite_dimension_exercise4_5b236b0f.jl => finite_dimension_exercise4_f1da905e.jl} (98%) create mode 100644 generated_assets/finite_dimension_exercise5_20281c31.plutostate delete mode 100644 generated_assets/finite_dimension_exercise5_bab7415c.plutostate rename generated_assets/{finite_dimension_lecture_notes_9efa3c98.jl => finite_dimension_lecture_notes_89e4e102.jl} (97%) rename generated_assets/{finite_dimension_lecture_notes_387bce5f.plutostate => finite_dimension_lecture_notes_8ba333e8.plutostate} (64%) rename generated_assets/{fourier_lecture_notes_71bf24d9.jl => fourier_lecture_notes_04f17b1b.jl} (96%) rename generated_assets/{fourier_lecture_notes_aad0d178.plutostate => fourier_lecture_notes_73861375.plutostate} (68%) rename generated_assets/{inverse_lecture_notes_24c12318.plutostate => inverse_lecture_notes_57b370b0.plutostate} (70%) rename generated_assets/{inverse_lecture_notes_32c0e051.jl => inverse_lecture_notes_9c6da622.jl} (96%) rename generated_assets/{ivp_lecture_notes_c988377e.jl => ivp_lecture_notes_18286ffe.jl} (72%) create mode 100644 generated_assets/ivp_lecture_notes_727c5350.plutostate delete mode 100644 generated_assets/ivp_lecture_notes_cd2ce1aa.plutostate delete mode 100644 generated_assets/manifolds_exercise1_0ff6ae7a.plutostate create mode 100644 generated_assets/manifolds_exercise1_dacbb802.plutostate delete mode 100644 generated_assets/manifolds_exercise2_64d68034.plutostate create mode 100644 generated_assets/manifolds_exercise2_e625e451.plutostate rename generated_assets/{manifolds_lecture_notes_68e46875.plutostate => manifolds_lecture_notes_06068aa0.plutostate} (66%) rename generated_assets/{manifolds_lecture_notes_4be04f1f.jl => manifolds_lecture_notes_38b0714b.jl} (99%) rename generated_assets/{theory_manifolds_lecture_notes_31ef69bc.jl => theory_manifolds_lecture_notes_69d5e312.jl} (99%) rename generated_assets/{theory_manifolds_lecture_notes_30f27933.plutostate => theory_manifolds_lecture_notes_91a322af.plutostate} (80%) diff --git a/cheat_sheet/index.html b/cheatsheets/index.html similarity index 90% rename from cheat_sheet/index.html rename to cheatsheets/index.html index 4564495..8e7eb93 100644 --- a/cheat_sheet/index.html +++ b/cheatsheets/index.html @@ -1,7 +1,7 @@ -Cheat sheet — Computer-assisted proofs in nonlinear analysis +Cheatsheets — Computer-assisted proofs in nonlinear analysis @@ -59,7 +59,7 @@

Computer-assisted proofs in nonlinear analysis
  • Welcome

  • @@ -71,7 +71,7 @@

    Module 1: finite-dimensional problems

  • Module 2: algebraic equations

  • @@ -99,7 +99,7 @@

    Module 5: invariant manifolds of equilibria

    - +
    diff --git a/generated_assets/algebraic_exercise1_3399836e.plutostate b/generated_assets/algebraic_exercise1_3399836e.plutostate deleted file mode 100644 index 4e35bdd6b1f076d4a9c13c45b847ef87c75fd54e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6805 zcmdT|y>Hye6}OD!fNYm8fKm+Pg>g2-U2;FQ)(7rvAV7fFaqJ?67ak4C;gS-+%o$3% zSS?^DPKv99OOP&|Y{@6v=Q9*J*B#_E!5yxT(G|0zRh0^9loe7nDhe%? z8a1^xL#pMlV0KRqF~hNm;4XE2cs!)rz84XhW-)Nu8MbseWcLlG)D( zPd>1@=Sola^OoKq#8NG#TB_BQiVnflEv=+zx>YUL%av-ia(W!I7|HD4=r~$4GrFmj zYRXKhUQ#MX4f1W2HN~JcozzQpRi)KaCn;?fu^s?ZBhO zDE56C6<333xp*z`!kE)YA&kLJqox8D0*fh*ulRxQIzA=v(I;*PzK`3TMTVSGPDR`n z)g$5<7-Ah64x?IO$$b{OF%R$xjTi)fYeg++jY6gViA>7>b}Bv#W8HO_O-&r=OVr@( z{v%%xms=n0t`bLt9a}+!LmGJwL^tsF_NPaGzerKM9zs>$2ShnPv$1?sNUoq&HH8I0s*S`S~xHQM?%iB76lNcN6|vkH_#EMqtu|iSwR0H8qvHe7RJ(d>P%ggH^&I@;Vz0LjG2}U0c0x>m5sb(Q`QEk&9N>}*S$>_3HBJSfC>I)()K6z+i)fbs(au)Mz`@@?28PJtGV&u71}`bCl2 zdC4)rQz#ETN3NofJGwX5(C~Voth=%WYP5T`_x_1>T)AnrP0t0 zMboIIXtk2A=naGD8mZOFhWbbke3RXOD%l0d3F?5bfUM zL`D5}Ll4Z(!NjXM(^)|VXlyn=<&kJv93-a}=E4Plu_*9c3#Ebp82NgHZ{{E*et#SQ z)6~K-2D*4bE0t$&h(~oc4Z~LRc++N&&{Q&?*+_0w%renl8a+sa zn63yJTX+GyDb6o=DLMMky$uh}MNb4r6a^E#l*cB>x|A)Tcf9b+5BLB2)vHTC`u-~$ z=rK8l*dULwMd9oO<+b+|jzU}D$=wITaH8y!adH>2CyGy;+P*&b z-jD4+9X~|iW!houe?Br?FgVDT{%9IS0f@1^Y~-D(@b^3aHJ1L)ncMxxU&hZ|7X6Yb za})o1ahA+w(F&O|cX0mWQz5H-1hRzI7_sq2sgGpOAA>9@M@AUv6M8b}dIA$8q{@)d z5u#=2dmksIR?ezoMmX2*8%pKPh%RsPe;|Dl&&EO2L>#4Pb*Pa>Og>6AjSNKL6v`P0 zt7P~f4J90Xx|MQ-~Q(O*l3(( zFJ;=(-}~FQXWG*lG-9?rJ@Lm=_q29oPY&F$*@%1CNrlB_oB-|?hJ|CUI-#6+B>|f zc(84Ogyw)naGm*^PsO#gxFg1X?CCU`cqA`=CmwN!yY%zhL&v86EeYJAY;e+IA8&ea Zd*jm5lfD)9*d-m%_0N(ATrvv<_#en4Q@a2F diff --git a/generated_assets/algebraic_exercise1_59ba77c2.plutostate b/generated_assets/algebraic_exercise1_59ba77c2.plutostate new file mode 100644 index 0000000000000000000000000000000000000000..eef8ec2f06f0ae7fe09841a92652509bbf01e644 GIT binary patch literal 6805 zcmdT}&2QVt6;Fb0fvTsTdN5E793jZMrX=dqjz6%Q^wOdU(gcehB7`22LuqW1!*GVS z1X+O7rakP*NP8*J-kjL^+}*(4bZ-j>*h_##ug;+;&~pz3`UmvQkg_COj%n-A)(2ZA z=i|+LzxU?%e)`+FA3QRdZ}W}k7I9r8Bs_8jf3Tl*W@b!VFIKggVy&o^t!hcbR!P?^ zQZ;d{SSu7r<;al(_z!sU$2aB2cptqJF zt;xk~whorx)s4D`Mbk7dUDS)Exf}9NWe(NZDhW9e@zXlYNIu%ciHG!mm*y^Atm^P9 zp6L=t)Z=-mh3eEtLp$7x$K4%zc(Cm>x`OJ{sJk%U75>f6L&3Ajxf54eQY&jKZ3iZBl8fK#VwC|G*idM$60Pl)b)=059 zTP;*)aHUjE3Gde@!n-&U-tz!ye;CT|K{5nWj$fQckP+%oXpM@dN|I|hvYKragv^dC zff{s`_{eOJ&X!9T%Z0fXnnG>(q|X_Esk7%uADXVpodlY9ebnkfR)aSxq1uKE332aU zgl&`ndAg5Ljs@ioC0v~-0V{SJ#0;@K8GsD{KFVh@#o#nanz>{!>DH6yJ@1VV{9FJ2 z`Tt%C)ks;c}&{70P5*ua$5O+h!`@@3*0Pw_UQB z@i5fJP6ok`hg;ejwMFv^(hG$`(3(pghYjj$vZ7u=80y2&V^y>UpUYyTVHZl!6|@|2 zL7nzorVI5d+3;*7YvJkSnIf0QW2qu{Ve;WPk#o#hjGcm`Rf^TBRyLt-nT}r6bknJn zYNc|eQchX2E<8N3WR(U=*3XF;m3YaWc>LwtOFD#od(;Bz=CrV?52d;5ahWh$^5#5# zQB)V~eeVx8mF&R-GD8EGT2Ne=k7Nh6C#+*o)bf;o)H8RTLb4_N(oWJR2xpxVh6Hg8DXTZKh*T zC)%0jRvgpLH0Aq5JJT$Z+Rpn=K9WpZc@!9Nin4y9eQ6d+ZQrPP?<%O07O^5(N(~m; zB>eq;HjQJ_vHo<3O6RX#)wVPlv@XPD*jC-k+jGg!6W(N@2%ua1G9j4MGT>;TMLE%P z%kE3yn-<}5TNCje=x##5ePc_`+5cU>$vl#m%`OS^Yb;#JUt=EhyCl?P;X>9PaM;#v|VhRvMpvMxkuMwW!Wy`25?a|N7>G=jtIehw@f`^C}qv ztzY63zVSH($fFPgBbF!l{ikX@gSUO_-GzzF#GQgSaYy%liK&dXx_ueYh!FWq5ED9D zXigY%s1Hpiy1CLw2nBeY=W@A;JH?_0i_8|hg@uKQJEd7KbFk)5rOC=VSoxU2Fr}yr zK!jv@y6G?{TI-lgT|nqzAz)+HbA*r!4S&LFV|vZ8Nlld;G!Oda>4w) z{pry!3^Ni2m}SD|?E@)f@0rS8>O;v%O&Cr`4Yn+1ll^~s_T=PbW@<{$O-&83$fLSk zCbP7(B;~ivFd^*R=pJz4juPKGpu2UuodtNV^tH~gwAQ)R?FnjX?y)l3k=3LU(Me>5 zE{dhG`9r!`SDKm09F@Z|aLyf%2yA14e=YBaHA708Z+3e6)80!dB^jV^0S~5ufFOX2 zAdoH~;7z)_>p?#VX?Twc!n^YqdQm72N8ym{3GT|CLL2Hw?6Oi%J{-`2M*G%XD0G#s z(}705i$2?i3jN*~Dfy3o$`?g$M)Rf8j)znXoTMnBtvBvJkRq5b+j`(gCQ z9r-~ko*mVAOFMFz{x=sA+{5RAUb@q3qdQl-myguR54&h#phF%T_s@Eq#gMZ5OsQ&{ zGu0UlV+@LsP8_X7OjE0r^r~5#C5~R2eMUj$Ctd&-O}KYZ4evj5;42yd#U1F=Z$6XM zSMpH9k35rv=N~B&dH#{0!X;nb9{RSXC)+|_yCragKiu{}pms^|NpBVY*u`yNV=v-A JK)q#3{RaqFP1^tf literal 0 HcmV?d00001 diff --git a/generated_assets/algebraic_exercise2_5c8a0894.plutostate b/generated_assets/algebraic_exercise2_5c8a0894.plutostate deleted file mode 100644 index d96d656f4d0d1ba39651868c75e0ad6776c0389a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27027 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 diff --git a/generated_assets/algebraic_exercise2_bd5de5de.plutostate b/generated_assets/algebraic_exercise2_bd5de5de.plutostate new file mode 100644 index 0000000000000000000000000000000000000000..83aa20fa12fd26e94b95b924614853bc2e2387bb GIT binary patch literal 20715 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 literal 0 HcmV?d00001 diff --git a/generated_assets/algebraic_exercise2_0992f435.jl b/generated_assets/algebraic_exercise2_bd6add9f.jl similarity index 98% rename from generated_assets/algebraic_exercise2_0992f435.jl rename to generated_assets/algebraic_exercise2_bd6add9f.jl index 3557d60..67a351e 100644 --- a/generated_assets/algebraic_exercise2_0992f435.jl +++ b/generated_assets/algebraic_exercise2_bd6add9f.jl @@ -157,9 +157,9 @@ version = "0.21.4" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LaTeXStrings]] git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" @@ -222,9 +222,9 @@ version = "1.11.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -348,9 +348,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" diff --git a/generated_assets/algebraic_exercise3_dfcfe85e.plutostate b/generated_assets/algebraic_exercise3_1636fb20.plutostate similarity index 72% rename from generated_assets/algebraic_exercise3_dfcfe85e.plutostate rename to generated_assets/algebraic_exercise3_1636fb20.plutostate index 9898a9820f089108e4d37ef4c45d8672e398ace9..8c3eb4c252046eddd45249594c8149a3038969af 100644 GIT binary patch delta 1168 zcmc)JOH30%7zc1>whurX11f?E2+}q&+S&(bwI~4(#KePyLM0&U>~>lfw!00xH5y_} zjMa+~%Xjcf;)C$;fvZO&KJcOjP4s}V7~%~t?af4ET$Xw(Nj-U+OftXuGXMX~XHYhS znB|fR$oB7mMT;Gtk%`*daUo8pRC-R`Kd8pV*%4V*iJ}NGiPCwus+Y_S>$_P8O(IT-Y1AF!lFdmXdlBF)k82Bvo?gvYiSTsJ?;6v-{V z-GJ-GZs1}L#`Jr^Fim1PD$<-iRoE<@0nB!7?`eOr{`c|1 zK5PoPAv@q;m?t-lnL})6k>*!(e_=EI(+vlS6PrtP@d&&cI$mdFKW${65Q!ia48OUx zEmK&8DaH*G!**s*wjKsZaO<4$DiNBXQiMvpK$WZT&f|@$xdyxtk0BRL;6_q@Ag<-8%6>6 zP=AZ@x;;>_Yp0fKn8c__TRAjc_Kych8C-XTYu9f)^XR0QROJvQ{GcGkLb5C>pB?{e zC|iE0Nh%RegbQ81E%&&ja-K~Pewf6laszVK4%^InpQS`n&1ZJF=ZD7j0$K}9>j{@* zBe9jf%vxevdB}$0G1CZDeRq5_lB`lrmWTBZv1AYUqh3lm-bD!Uxx8K)b@>i(ewU{? P;^CrA5kC!32ui6xQku<9 delta 1173 zcmc(dPiPZC6o)gLHJCQF>Ay6!2ernaLSm9OZC4>p57L804~eas!@8TDwA*ZUm&``= zU=gu+60Pr21VK;1MDV6}1=DR6gedLF+swfG=6mn=zAmHL zW#oEqsk@)Vio#1+$Et+Yq>RZ$h*o>)_XZyV5qscB-8f9UJy5J4gAUhDVCyfy?xs9M z?OupCoTrOT5d{9`XVl>iAgIQDkZkEkL$uVwBin#>EEDXYg=m6ZJHv-~?$`6TZM_WY zgzJMhs{;OTYoeXYRBfkop}PzU(ZHdCeWNvcc;ASzgTQj}F< z2&y3q20WKS;d|!2JbFXUU|uDQ7K;V#J=pd7j+i57cwI=Qg&|C?Oquz}s-82}l9AFi z3>9%JqRwGILq}6r5$KtDGZ0~9xo=9<3@mC|nwO;|j}&ajVkZ~yah#a+1%o){3w5Oe zzV3FB3#9^>OLm8Ei<&Btb4By3EG9Xn{1=T@A4fY%I?fWA82kv~%l-y_d@EBHo;2`j zW8bimQ6S=U+2$7>4%(iA;%wPc%xan;5F!t$7|+5FN6gB4^6=KVpI)koZ3K9Ys{|ZX z{E)5nq6v88JODiQjz?~+-*OLscm?YE(=xw0V`&8kI@)Drm@lUBB74@le)vE^sAOE) z9J6lvG;9K2B0IBwVC0!6B4IfS0sNJ!Fzy=aCm268@aVC1%w5@4wYgUBvG7;evHW&Xz@6!CjgU=@#A+3)6 E1S9&wga7~l diff --git a/generated_assets/algebraic_exercise3_598382ad.jl b/generated_assets/algebraic_exercise3_2b53f781.jl similarity index 98% rename from generated_assets/algebraic_exercise3_598382ad.jl rename to generated_assets/algebraic_exercise3_2b53f781.jl index ee86c78..c218d6d 100644 --- a/generated_assets/algebraic_exercise3_598382ad.jl +++ b/generated_assets/algebraic_exercise3_2b53f781.jl @@ -171,9 +171,9 @@ version = "0.21.4" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LaTeXStrings]] git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" @@ -236,9 +236,9 @@ version = "1.11.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -362,9 +362,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" diff --git a/generated_assets/algebraic_exercise4_3934de66.plutostate b/generated_assets/algebraic_exercise4_513c6709.plutostate similarity index 63% rename from generated_assets/algebraic_exercise4_3934de66.plutostate rename to generated_assets/algebraic_exercise4_513c6709.plutostate index 5119e55d8d2dd181094e5b200ec235427baf05a8..494bad648bca37dd7cefe27948066da4bb325a85 100644 GIT binary patch delta 832 zcmeB;?~RwZ#~`>gDL*fzxM59lYEDjkQEG8%PDydw#C>X$`J@-fF3HWzOyPO@6GT%FMrx7i=b*&QnGr%{;#y zhnfC*!OYCJI>F|dYTRZb(!8iGILv#^q&Inywkk98l@lN{Cnrg%Y+fqvPprAyEpeDD z%cVEDO-hxSr7axnR(Ite%tX4iGy#X17X|btUsMO0c}f9jrj_tUa5_jyElABvNzF^n zOf7EPxX+7mas>0T$?KR_f&4Pjre!h*)3VL~m?an|-`7)`EY5mDVqH!mF#3xV%TnV@ zfNAEm<4s`7m^1I?=KHK%jLPdX^MJ_$n7}}C@p;APHf^Xnum&ucSCR=#FDZv78?ZlQ zOU^NKF?N|O&S4E>MsTFUm`I{5oF%*vwF%2p^AeMCCQs%x;$NFoT3i`lkeHmEn4VfZ zVe(5hciz=t|77MBl!BAB`sUx<8(B8jitc9IEF_%G1dbaSu3e0q*9fFBO|}r{S2j$u pFf%kX(oIZEG}1LROij}@PBXLAO|vvgF-S5dIW;FIJ|(pvH7_MKFF7-{xNWi`zuII^sg}u?#8ozL6jx!Kd{%1N zuA`MZWusk&{F)1fCiF)>qJ zn^am{8DEf?oSm4ST0CJj*y)*h1*IhrM{ho+wTlt#>QjoFST;B4q%mza*T`ntT%)#| zaq=@gehV|BBm;9Z3tdagq-0$~!_+igLknXdH_ad^)g&z?$;`-XX;OY(N^!#)u;E3i z#icnw(>E*fmoh1CC`c_T&MYp8&nk`wy0#?s(2`uB^H!FmR+Q*xl;q}2UMMEUcJj=j zOUkb%KNOVYTT_&uUy@i{oSB}NntEVzf|TB54Ix!#)>Mbd0YWw)mrk@>K)kW__p7iO zdsgo$E>&ih mx7k2LttNNND2eAJ0;9V)u`Csw5KlYa1jcTR?ykua`lSHzT2gcX diff --git a/generated_assets/cheat_sheet_3be14bf4.plutostate b/generated_assets/cheat_sheet_3be14bf4.plutostate deleted file mode 100644 index 8d6c0b4907f5aef1ebd38240ae6a9163ffa56fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119865 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 diff --git a/generated_assets/cheatsheets_1ae6b137.plutostate b/generated_assets/cheatsheets_1ae6b137.plutostate new file mode 100644 index 0000000000000000000000000000000000000000..1ce4bbd5aaab2cec5cbe719d00d4755ff6e628fc GIT binary patch literal 159936 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 I0wT-*545;?jQ{`u literal 0 HcmV?d00001 diff --git a/generated_assets/cheat_sheet_f8537198.jl b/generated_assets/cheatsheets_36103bb1.jl similarity index 91% rename from generated_assets/cheat_sheet_f8537198.jl rename to generated_assets/cheatsheets_36103bb1.jl index 713b6f0..956c93d 100644 --- a/generated_assets/cheat_sheet_f8537198.jl +++ b/generated_assets/cheatsheets_36103bb1.jl @@ -3,7 +3,7 @@ #> [frontmatter] #> order = 2 -#> title = "Cheat sheet" +#> title = "Cheatsheets" #> tags = ["welcome"] #> layout = "layout.jlhtml" @@ -22,65 +22,15 @@ main { """ -# ╔═╡ a517be42-d53a-470f-93d6-7a7723eb6ef1 -using Plots - -# ╔═╡ 800c404b-d415-4a93-a5c4-e2296068a534 -md"### Julia" - -# ╔═╡ 35f3b473-cfa8-4a89-bb98-e6cdfa7b58fe -β = 2.0 # typed by `\beta` - -# ╔═╡ 2cc0471a-2fb6-44a3-bf3a-91ccbd7b30a9 -v₂⁵ = 1.0 # typed by `v\_2\^5` - -# ╔═╡ 0d676f02-c414-4141-832b-4d1cee545d55 -[1.0, 2.0] - -# ╔═╡ f5f84a05-f4a2-4af9-815b-b77739f0fa2d -[1.0 ; 2.0] - -# ╔═╡ 876d8811-24ca-45cb-b4a2-4fbca624d851 -[1.0 ; [2.0, 3.0]] - -# ╔═╡ 8e8d5bca-caf5-4595-88f2-4362acd46340 -zeros(2) - -# ╔═╡ b9e52603-8407-44ba-adba-750a6356ecef -zeros(2, 2) - -# ╔═╡ 11447066-650e-421d-b31d-8abd3be68b75 -zeros(Complex{Float64}, 2, 2) - -# ╔═╡ d9290871-6a83-4832-81e2-f277cd948dd3 -[1.0 2.0 ; 3.0 4.0] - -# ╔═╡ ca2a7bbc-cbba-4c67-a739-121e436f0103 -inv([1.0 2.0 ; 3.0 4.0]) - -# ╔═╡ 3a1ce528-fefc-4489-86ee-3358d69123cd -md"### LinearAlgebra" +# ╔═╡ 334ef43a-796d-471a-a82d-d608b92cdc14 +md"### Cheatsheets" -# ╔═╡ 727d1133-f88b-4713-a254-a61e0b6c8f79 -using LinearAlgebra - -# ╔═╡ 848982e9-d97f-4859-b8b0-8f53e9187380 -norm([1.0 ; 2.0], 1) - -# ╔═╡ 4868fa5c-bbdf-4cd8-8751-3d87281438d4 -opnorm([1.0 0.0 ; 2.0 2.0], 1) - -# ╔═╡ ef9684a1-e6ad-4d99-94ec-19f0d44d1ba7 -norm(interval([1.0, 2.0]), 1) - -# ╔═╡ 6f11b2b7-c58c-4796-b9f5-f438b0c86e42 -I - -# ╔═╡ c3b0849a-f58b-40e5-b3ec-97566eadb27f -I + zeros(2, 2) - -# ╔═╡ 9ce060ea-53a4-4854-a53c-b58d29cb4f2b -I + zeros(3, 3) +# ╔═╡ 8407f06b-2392-49de-a734-b0339f7376fa +md""" +- [Fast track to Julia](https://juliadocs.github.io/Julia-Cheat-Sheet/) +- [MATLAB-Julia-Python comparative cheatsheet](https://cheatsheets.quantecon.org/) +- [Plots.jl cheatsheet](https://github.com/sswatson/cheatsheets/blob/master/plotsjl-cheatsheet.pdf) +""" # ╔═╡ 55933fb6-6db8-4fad-9753-c317916660e4 md"### IntervalArithmetic" @@ -121,6 +71,9 @@ project(Multiplication(x), Taylor(5), Taylor(5)) # ╔═╡ 1547e260-583c-41ca-bbbe-29b79707708f y = Sequence(Fourier(1, 1.0), [im*0.5, 0.0, -im*0.5]) # sin(t) +# ╔═╡ a517be42-d53a-470f-93d6-7a7723eb6ef1 +using Plots + # ╔═╡ bf2d955d-9d9c-4ad3-85d5-d36696699b9b plot(LinRange(-π, π, 101), t -> real(y(t))) @@ -140,13 +93,12 @@ norm(interval(x), Ell1(GeometricWeight(ν))) PLUTO_PROJECT_TOML_CONTENTS = """ [deps] IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" RadiiPolynomial = "f2081a94-c849-46b6-8dc9-07bb90ed72a9" [compat] IntervalArithmetic = "~0.22.19" -Plots = "~1.40.8" +Plots = "~1.40.9" RadiiPolynomial = "~0.8.15" """ @@ -156,7 +108,7 @@ PLUTO_MANIFEST_TOML_CONTENTS = """ julia_version = "1.11.1" manifest_format = "2.0" -project_hash = "dc12ca8b0abbedf806f9d667185e7c46d0bcb38a" +project_hash = "69e9f279b7847e8728d04e6f4a576daf96c7465e" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -201,21 +153,25 @@ version = "0.7.6" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "13951eb68769ad1cd460cdb2e64e5e95f1bf123d" +git-tree-sha1 = "c785dfb1b3bfddd1da557e861b919819b82bbe5b" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.27.0" +version = "3.27.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" +git-tree-sha1 = "c7acce7a7e1078a20a285211dd73cd3941a871d6" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" +version = "0.12.0" +weakdeps = ["StyledStrings"] + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" +version = "0.11.0" [deps.ColorVectorSpace.extensions] SpecialFunctionsExt = "SpecialFunctions" @@ -302,15 +258,15 @@ version = "0.0.20230411+0" [[deps.ExceptionUnwrapping]] deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" +version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +git-tree-sha1 = "cc5231d52eb1771251fbd37171dbc408bcc8a1b6" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" +version = "2.6.4+0" [[deps.FFMPEG]] deps = ["FFMPEG_jll"] @@ -347,9 +303,9 @@ version = "1.3.7" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +git-tree-sha1 = "fa8e19f44de37e225aa0f1695bc223b05ed51fb4" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" +version = "2.13.3+0" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -383,15 +339,15 @@ 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 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" +git-tree-sha1 = "b36c7e110080ae48fdef61b0c31e6b17ada23b33" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.5+0" +version = "2.82.2+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" +version = "1.3.14+1" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -399,10 +355,10 @@ 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 = "bc3f416a965ae61968c20d0ad867556367f2817d" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "6c4d6a1babbbee6f283b3da64ac895f0a3bfbc96" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.9" +version = "1.10.11" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -440,9 +396,9 @@ version = "0.2.2" [[deps.JLFzf]] deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "39d64b09147620f5ffbf6b2d3255be3c901bec63" +git-tree-sha1 = "71b48d857e86bf7a1838c4736545699974ce79a2" uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.8" +version = "0.1.9" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -568,9 +524,9 @@ version = "1.17.0+1" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +git-tree-sha1 = "84eef7acd508ee5b3e956a2ae51b05024181dee0" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] @@ -580,9 +536,9 @@ version = "4.7.0+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +git-tree-sha1 = "edbf5309f9ddf1cab25afc344b1e8150b7c832f9" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -756,9 +712,9 @@ version = "1.4.3" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "45470145863035bb124ca51b320ed35d071cc6c2" +git-tree-sha1 = "dae01f8c2e069a683d3a6e17bbae5070ab94786f" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.8" +version = "1.40.9" [deps.Plots.extensions] FileIOExt = "FileIO" @@ -1033,9 +989,9 @@ version = "1.31.0+0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "6a451c6f33a176150f315726eba8b92fbfdb9ae7" +git-tree-sha1 = "a2fccc6559132927d4c5dc183e3e01048c6dcbd6" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.4+0" +version = "2.13.5+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] @@ -1069,9 +1025,9 @@ version = "1.8.6+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "2b0e27d52ec9d8d483e2ca0b72b3cb1a8df5c27a" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.11+1" [[deps.Xorg_libXcursor_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] @@ -1081,9 +1037,9 @@ version = "1.2.0+4" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "02054ee01980c90297412e4c809c8694d7323af3" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.4+1" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -1123,9 +1079,9 @@ version = "0.9.11+0" [[deps.Xorg_libpthread_stubs_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +git-tree-sha1 = "fee57a273563e273f0f53275101cd41a8153517a" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.1.1+1" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] @@ -1189,9 +1145,9 @@ version = "2.39.0+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "b9ead2d2bdb27330545eb14234a2e300da61232e" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.5.0+1" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -1212,9 +1168,9 @@ version = "3.2.9+0" [[deps.fzf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "936081b536ae4aa65415d869287d43ef3cb576b2" +git-tree-sha1 = "6e50f145003024df4f5cb96c7fce79466741d601" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.53.0+0" +version = "0.56.3+0" [[deps.gperf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1312,26 +1268,8 @@ version = "1.4.1+1" # ╔═╡ Cell order: # ╟─7fc40507-eda3-474d-a454-04e9173a7adb -# ╠═a517be42-d53a-470f-93d6-7a7723eb6ef1 -# ╟─800c404b-d415-4a93-a5c4-e2296068a534 -# ╠═35f3b473-cfa8-4a89-bb98-e6cdfa7b58fe -# ╠═2cc0471a-2fb6-44a3-bf3a-91ccbd7b30a9 -# ╠═0d676f02-c414-4141-832b-4d1cee545d55 -# ╠═f5f84a05-f4a2-4af9-815b-b77739f0fa2d -# ╠═876d8811-24ca-45cb-b4a2-4fbca624d851 -# ╠═8e8d5bca-caf5-4595-88f2-4362acd46340 -# ╠═b9e52603-8407-44ba-adba-750a6356ecef -# ╠═11447066-650e-421d-b31d-8abd3be68b75 -# ╠═d9290871-6a83-4832-81e2-f277cd948dd3 -# ╠═ca2a7bbc-cbba-4c67-a739-121e436f0103 -# ╟─3a1ce528-fefc-4489-86ee-3358d69123cd -# ╠═727d1133-f88b-4713-a254-a61e0b6c8f79 -# ╠═848982e9-d97f-4859-b8b0-8f53e9187380 -# ╠═4868fa5c-bbdf-4cd8-8751-3d87281438d4 -# ╠═ef9684a1-e6ad-4d99-94ec-19f0d44d1ba7 -# ╠═6f11b2b7-c58c-4796-b9f5-f438b0c86e42 -# ╠═c3b0849a-f58b-40e5-b3ec-97566eadb27f -# ╠═9ce060ea-53a4-4854-a53c-b58d29cb4f2b +# ╟─334ef43a-796d-471a-a82d-d608b92cdc14 +# ╟─8407f06b-2392-49de-a734-b0339f7376fa # ╟─55933fb6-6db8-4fad-9753-c317916660e4 # ╠═a8e34042-0132-4134-a1b4-8cda345c4009 # ╠═24ba79d7-b92c-4f42-a940-24907321104e @@ -1345,6 +1283,7 @@ version = "1.4.1+1" # ╠═a9bf21bb-1a92-4942-b76a-aef1ffc98887 # ╠═0cdf0577-d1b3-4c42-8090-6b3bc198b044 # ╠═1547e260-583c-41ca-bbbe-29b79707708f +# ╠═a517be42-d53a-470f-93d6-7a7723eb6ef1 # ╠═bf2d955d-9d9c-4ad3-85d5-d36696699b9b # ╠═6c89b8af-6c6c-46da-a441-52f75930b377 # ╠═cdb5640a-2778-4285-a0cc-6c669bed839f diff --git a/generated_assets/finite_dimension_exercise1_71195e01.plutostate b/generated_assets/finite_dimension_exercise1_71195e01.plutostate new file mode 100644 index 0000000000000000000000000000000000000000..2c05acd024cad86059eadccd9470525cdf806a4d GIT binary patch literal 4306 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 diff --git a/generated_assets/finite_dimension_exercise2_e5fb57de.jl b/generated_assets/finite_dimension_exercise2_3531bb76.jl similarity index 98% rename from generated_assets/finite_dimension_exercise2_e5fb57de.jl rename to generated_assets/finite_dimension_exercise2_3531bb76.jl index 9f5aec5..29223dd 100644 --- a/generated_assets/finite_dimension_exercise2_e5fb57de.jl +++ b/generated_assets/finite_dimension_exercise2_3531bb76.jl @@ -212,9 +212,9 @@ version = "0.21.4" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LaTeXStrings]] git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" @@ -277,9 +277,9 @@ version = "1.11.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -403,9 +403,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" diff --git a/generated_assets/finite_dimension_exercise2_1a7568c0.plutostate b/generated_assets/finite_dimension_exercise2_bca74ccc.plutostate similarity index 73% rename from generated_assets/finite_dimension_exercise2_1a7568c0.plutostate rename to generated_assets/finite_dimension_exercise2_bca74ccc.plutostate index 025b12a51bfb53de9868cd2239cc695c00e9a1d9..ee6570808147aed98c33f0d09ea7f3ad73bc38c2 100644 GIT binary patch delta 1589 zcmc(eTSyd97{{G6)F$=*7%T$}Hss6;x(E1YJnT=<*g9oJYA~pankJVh7(alD@lI?!$fAtC8k*5mLLwcgPo3!+ifb|fk?mc z@z)v)X8$1$TALl{R;P&^Yb#9u>txzDO{d6{K4CTO#Aps4U0~6AugR2ZS(0|jMg0T3 za|XOqeP$uscX}%-WT&8Hd3%_Sa6Xf-(k*z4I=7+kRR(WWa-R#3Lf;kUTt-W#W zS7?eJAp^0!6y$a<2Q~g_>h*wVG)@yMv7j3@ed2vHG@89~*8o|UaFNQmAuC1`4T-5U zLD8N^MMY7zdEs-{%mYQ2jhgxgA!Dvc9VC=XpklIkS9MS&ozkcE1?Qqt0&tjb7Lmk}vDd_30T>Q;g}mV&`DLH564 nagLPb=Y2k>D2gs8&*NgJoA=~7T{&(k$L-E?^Enb!cDMWj_Mn2& delta 1620 zcmc(fUr19?9LK$PL-J3VMN`{@&UWuq+SJ+1MMe6uAeE>=gw(p%o#xH$ZtdJz_D~T$ z)S_DbGAPviUu|m1fzXIZ1#@Wx6;cvXK|KXw4;4|-cGZVsfqU}poCD|c`+m>w`#UdQ z(dS;#s+olJfm-Br+U&@KL^~2|1%&-X!>*+uS91?MJq+2Z)kQYl3{Yyp-JY2lZfSC2Rf6B3?_9=iP@E$L$;Lm)0B~< zpAII)duMq2U{dB>%>#Xvf`~Y8xzmAoFE`CBouUO7X-8E{_%7=Cce#l~j&~yaXs;k* zi4!G(lOWV$G~JQ+k)TL|3)w{cEFmF*%B)mQ_3=L3X!CHj^_&CYKuAuLAbNZf_JfAi z!Oq~RNR$}((e{mada@NHx4W7m6|F!=V$%#$YAt*XUIl9kOV)IxC@dk-Eg|0RuD1#H z*IHD@mzMBGq&J)ST77XbI;bxyD&zF#ja;$GxWR5RA!9f17VY?CuUy)Tu+KSHno62qRbV4F(1J`jRC$Sv-C$_ z6iK$PdZLJf+4VgZvq806p}ewM)|i-48He#pyS%Z0KeYzl}F-WKE5y$ zi#eEXrArHC-nLeDU~Ap7Mf)BfJVD1ohH?y0mZViu{Y+Q}TQaNS5IVirAEo}&^=fEi z43L+lrAu0)Q1ViJS+RI(*l~X%mez@ED~+pUmDZGaT66|mqCC~#Il4JFZgwclW1%Ef zt5ombA=61y>h5?FD6vp@NOuMUOD*dxsCD3v4VOLjo%?%4gNvKeBEi0wz?#$hFYIbIFX8i+! zT7p471gD@kg`&+(x9n2%l0@|oDP<6pQBl-eF9p36g^jDdt*|}ycDaZ1yWctAcVB-+ z=e{B4y(J%JIyZyHme4Q86e_$Lm7-+AAbm!8ml2gGyH(Y|x-LZ&LLNZ5xT#?NlfU`& z%Uc@h)+OEGPw2dEV1qn_F=Y$<>IpK;y%BJ#wQ$B>LVt8_v}eQ&^yghl&$Pz{BFnr4 z19lgTiyZUrSvWUB{^otZ)1zVNpa+hIIR-6^QK#z3bo`55tMHPVIezqhO5RL( zZ&7NSiPSbV8B0pqbp{&k&Q*BPNGrQ7J1=1Zcfl}IOvO`CYlcIM*H(efFdh&Lj$xkU zFA1fK5y6%bGtj?hK0VX1;*kh-?WOQt;TX2wX~K7|pH7)45{)P#Q3Q$TBjD+9K?^$s zgZ9$t+6DyMnG#sE4#OatfV0eXsBh<>$$Fl?V0R-J?Ja{m+gw3X#%9`d+(UT7jOc9L zf*Hi7yFck$TLp66loT_CW=xi9yrMt1SS(0M-f>T+3W_0_5fvXn(6Jv4&~XQkY+_&Q zfrcPmlik6toT0oZ_V@bZx;iVWf${1qjMq~EAADQstNgeX`RKrgMAknx;4GMMw-+wI zc>H#Y95d85f`u+giL|MztiR#@m#CZ-QE{T+kPMfDmAO-)nBLE8SU8CzM85!Q9gR6R zmj9rl#SDFfdOD7wCHE-T7PQi`!vzTX4$Ye0aWs77DKZWG45OX7#WmG_!RxPdV~i`^ bUM~r|t7<|OZeO@c5Cfqd82bp!^^X1l>IKRU delta 1160 zcmeD9$av!eBlA55!O0h;L?>UCR@uBs+J$lQV_B8Shh$qPzn9xE*|At{vXpGgImbqLCo9ElCV`4Pg%onR9ajaUyzubotU0lJYjWmDo{~oUO{O| zar@+p(rTLz76da*)+sp+j3!`|l<(gxR4l~^il@!erKcG;+vmqHPCix6Z(*5aVw{#@ zp=)WGl&ouLn3|?*Y-o_Ao0MdjWS(MVl9p<0urw(@FQvF)4cLyN)Z)?{m?f;tqU?$r z3Q~)TGmA^&vx?(^jxR|)v?Lek+La}#6(#x^CAm41KXQw)ojh}-g*j!iJdY&bnxg#t zlEmWT%=Em})B}_2xPqD2mdu^p$73^Dfcps1<{eZGO~huNY?0pNG#*uEru^w(GePO~ z8lRdH4tK5syR#rCF*6V5(2zA<*bGkO4`R`?samz!PIx{W(at>5V*MJMX^v9C%&hrO zHuv%9F%oUqLDe10uo-43t2fz?PnDUa^)ArQwwu53PhcX!&~im=hRT%cO%@Xd8v1k_ zI3VrwRW{nKCB?BbIF|90%}y^LAZUh!87G$u`*CsMv9K%^chy1i`2XDpN{p_U-J`MrUW$8Ds5Y zns|tU>~}DNtWdH{`{N6ui$u{OjWRD`r3I3Q2#TO2f@~b^*1&e^Hq2u_^L>23PrA5o zT^ycqWWfXSW?g?mNzfYxO&JBpjD$MWoJ<--*OfYr(uW|V*5pjg7B9@dy3S> zNYCc8HfB`fVeF(I-|s70G~saKb6TW`e~#IZ!`cDtTs>_?JT1R-<5BbJ!qBPs1il{Yuk}JSBnif-M-(MCrvt- zx4w)^E1&4dtFgiEA|Af00dBO-%vaKl$6>a{2Oqgk@H$5zpSup($k+X~6Er*mlg*8w% z<#4P;ZN=+nir z*ytgS3*Xd|28|_?4U!U{@=+?wp?GaLNC*iBLm^rl6a*3rigAI+R45h;sQ|+r7k&dz C72SaV delta 1214 zcmey`#&ooeiTNIb;NTVkoV-*0?B;nIVT_Xxm%2}u*79LY-~87Xcj1YvYtUHOt{X$ zk%`f4@&TvCTn2ik($U72xm*gH`7+lrF&b^&o1Mrx*)!FXbbUKGWg+$^YzoLJEy)i_ zO-#lim8c-uBByCvaX?F zYMQR0Ws;??MT%jvg=MOliKVI0MCRLy8wyg3iZhE#;%s$pW&Hd~1sG^Ggzoi!;;nQd191wky+{T)?Qx%=mff%xZoNY~TZtC2T|+ zc=F4i$=D3+tkat;CZom_yA5RKCKh9M5{x{244aYN6?&78a;q}0FS`T|%qkf#B^-%p z6*v(UBNL8Xya7Y7sdz^j!f%XJHUTD5BRns3qCWX&qqpkddmv`&5Z z^0l)mq~Q0LBhgYzt1{)B@mBwuNOh9xZ9tZYZlHIrb{~qF2^i} zb+f7z>NvU~h0s(fTn})6Gong6=(3}6mC`g$9-J8b_DAE@Z@;{gfK&{p=aqvq8v6G_ zs+=T3mz+?Dwi5u=DWcV1&2VFWKE!_ZApwNj5!~^aqHYAfV=SN{bj5h`@W8g@SW=S9o(1>_~Ys^1P&*yEd78|=8i{un-@4VV* zH&rB}vIPWhdLktr<;CezGK;x}2+h7^qHSJ%sYJ^Y;9QCJ+T-tDKGE)Gi9bw8;2wj# ztZ`{8k>G)ko4^Snm6$lpdwqX}v}H0;X$dqQ){hg@WN|Z1o*lcee%#bPma$yQR~vup zUmpB(`*(5mc5FcEEx^RRWWd7d_k|I#}rH!=c8MR6dtG{N2Y2GsZ!!Aw3f}*!PQbI zVknuW0J5|oWV>`y#Ml==T84#{2H!#pB2X5RJ{LS<94Jn58uf5~zsr^MvLmyj{?hTA zLniMSmKS`jQ!d(#Vy%8FLq*XJ4Dra?!NJFGUeDt3??>V8vn;O`SGb$BTbFM$Ol~B( z%nygFhu^=k*13@lVw1pz3< zRU2_(Wb;Gga^@Xce!*hgQpp@3i9Veyv$ob@h(32mPu+x|Z zSkxkp&fsDDHgJk^7GQ(lu`u%YQ&1x6{6Bm>jf{!4!>~efKzqW|tb;-0ttX)6ut2cd z43-4D_A@Y_Sp}Y{k?nh^YD^s?GvJX}_C97Yty5-{Gy^$p9Z)6q6II>0Vwz9tlvg`>T2A524 z7#|-m{AU^!4_}KxQ=e-3l_A~*$B60ewOx7Gzh#u3gYr{(k|i3kLC+E22m`a7kM1w+ zVUwqM4Y65^eS-|vUv8y`y6zl*&puCPMk?-|Ou@Z7F_LW)Mx>!GdyzVuFj}lw$SJ}K z{}8{8UEXtygb(a$B2}3-WjxJjc3IPw cy0RJzKaId%-!-JJMHGdnzB&BE=4&$dPj(jpGynhq literal 0 HcmV?d00001 diff --git a/generated_assets/finite_dimension_exercise5_bab7415c.plutostate b/generated_assets/finite_dimension_exercise5_bab7415c.plutostate deleted file mode 100644 index 30179c2e98e945e4e28105ecb94e7aa9b9992421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3519 zcmdT`&u`pB6mCI1us6=RjM7yBf%kX1+H4ZF>WM>9RUv^Cr0Ljx_D6j2`%5IzWxgTB05YzAJVGF53h;Iq2ZXf}L@HKrO)r2(yKv(B2#cdu+G3Oulj zfOa5NTpRAawwA@?e!d{vzFZXAC}1(Q3pI^dvUD#^o*lciaiU}5h~oJ2Zjl8L9IyC+ zQ*Taz)2O#xhqan@2cUi&pPKb*Q2X2b@&w79-{rLvv7cqP9)jVBWq)})g97^CrG`sE zrSd^t%Lh!pZ`_WUHnbxRRS-$$Q^R9;cxe2)l_=?f)|eJEsb0s6!qmc*gqhCn=jD!! zp{!CNK$RDz>XuK*I7tmChiQ$c3BH37WS|``93e%-1u&cxEE?eaL0{L(%eKt63b^0~ zsE_#yZNWj9l*ctpl@_9#Nt7B%d!X#pdaqKdwn~lWjSSC!AH};#>PB35z^Bq(0MF>9 zRpBPx@ak8Kj9bKLAQeqO#T4S5ASj0IE(Oh@0;|} z9mF~22ql%NLDco78`+*z4}|y2D-(r@`AR%7UyVN)r9dzRB25Pr5z>GwWmgj;i3L)3 z$eC_PBxcAg({!m+nwYQEVhqx%#Iv)r6Z7>}T-cBKuFXdnj&FIq-S_9JBBBq6|hKhs zd`owELK(WLr+8w9n>KSah6rKa$!FJB9%GZI_>8bwk9~^_YO4ptbdV3$1b{#vEm{*s zQ1x8;PMt{Qa-5Z<*ryl7+trI?mV6Yaq)!ETv+CgGtzu>)Xho!mGev?ZGlBnTMm-i0 zPYQ#`BXdcyUTPIfh10A%-gW;arb)z92n25iG9?}prNT?%x4GwO)OHTR@jBEh70+q4 zT+gXi0SmnkuG4huwFdSdHMiofx>ERhX)9wW5gw3hYOUTD$Bs7Y?W%p4YLjC}k5}9KO2es2J5w9p zRog|h7>qNwFTCf3wNl)B?Zt|G&O)ov@xl_xDb<;BGKap02+h3&(bDMy6D^PBH4&nrLpoaS;HRckjzZrhI}mN-CM^%yqd)v(|0JuuxxHi>04NP~F%I Sq_0N|z1G|uU9d;CKJX`E8Uwum diff --git a/generated_assets/finite_dimension_lecture_notes_9efa3c98.jl b/generated_assets/finite_dimension_lecture_notes_89e4e102.jl similarity index 97% rename from generated_assets/finite_dimension_lecture_notes_9efa3c98.jl rename to generated_assets/finite_dimension_lecture_notes_89e4e102.jl index 8dec2f4..07ea721 100644 --- a/generated_assets/finite_dimension_lecture_notes_9efa3c98.jl +++ b/generated_assets/finite_dimension_lecture_notes_89e4e102.jl @@ -52,6 +52,7 @@ x_{n+1} = \mu x_n (1-x_n), \end{align}$ where $\mu$ is a parameter in $[0,4]$ and the initial condition $x_1$ is in $[0,1]$. +This is known as the [logistic map](https://en.wikipedia.org/wiki/Logistic_map). The slider below can be used to vary the value of $\mu$. """ @@ -350,13 +351,13 @@ We apply [Newton's method](https://en.wikipedia.org/wiki/Newton%27s_method) to $ """ # ╔═╡ ef6afc18-f779-4370-8ccc-0a9494341166 -initial_data = [0.5, 1.0, 1.0] +initial_guess = [0.5, 1.0, 0.1] # ╔═╡ a71e7ddf-e4d7-4200-abfb-b248883200e1 F_DF(x) = (F(x, μ), DF(x, μ)) # returns `F` and `DF` at `μ = 3.9` # ╔═╡ b1ff2f19-31b7-4064-9ac0-e600ccd937d9 -x_bar, success = newton(F_DF, initial_data) +x_bar, success = newton(F_DF, initial_guess) # ╔═╡ 8cc5d9d9-6630-43eb-85b7-2e658da6ec03 md""" @@ -514,7 +515,7 @@ RadiiPolynomial = "f2081a94-c849-46b6-8dc9-07bb90ed72a9" [compat] IntervalArithmetic = "~0.22.19" -Plots = "~1.40.8" +Plots = "~1.40.9" PlutoTeachingTools = "~0.3.1" PlutoUI = "~0.7.60" RadiiPolynomial = "~0.8.15" @@ -526,7 +527,7 @@ PLUTO_MANIFEST_TOML_CONTENTS = """ julia_version = "1.11.1" manifest_format = "2.0" -project_hash = "1a1b737c05ad4a7fb0176fc3b1dfa13537ea0f84" +project_hash = "06e17a9b7d31c4ac898dcef66dc31f92b0175889" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] @@ -583,9 +584,9 @@ version = "0.7.6" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "13951eb68769ad1cd460cdb2e64e5e95f1bf123d" +git-tree-sha1 = "c785dfb1b3bfddd1da557e861b919819b82bbe5b" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.27.0" +version = "3.27.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -689,15 +690,15 @@ version = "0.0.20230411+0" [[deps.ExceptionUnwrapping]] deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" +version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +git-tree-sha1 = "cc5231d52eb1771251fbd37171dbc408bcc8a1b6" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" +version = "2.6.4+0" [[deps.FFMPEG]] deps = ["FFMPEG_jll"] @@ -734,9 +735,9 @@ version = "1.3.7" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +git-tree-sha1 = "fa8e19f44de37e225aa0f1695bc223b05ed51fb4" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" +version = "2.13.3+0" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -770,15 +771,15 @@ 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 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" +git-tree-sha1 = "b36c7e110080ae48fdef61b0c31e6b17ada23b33" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.5+0" +version = "2.82.2+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" +version = "1.3.14+1" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -786,10 +787,10 @@ 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 = "bc3f416a965ae61968c20d0ad867556367f2817d" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "6c4d6a1babbbee6f283b3da64ac895f0a3bfbc96" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.9" +version = "1.10.11" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -845,9 +846,9 @@ version = "0.2.2" [[deps.JLFzf]] deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "39d64b09147620f5ffbf6b2d3255be3c901bec63" +git-tree-sha1 = "71b48d857e86bf7a1838c4736545699974ce79a2" uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.8" +version = "0.1.9" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -869,9 +870,9 @@ version = "3.0.4+0" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -979,9 +980,9 @@ version = "1.17.0+1" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +git-tree-sha1 = "84eef7acd508ee5b3e956a2ae51b05024181dee0" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] @@ -991,9 +992,9 @@ version = "4.7.0+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +git-tree-sha1 = "edbf5309f9ddf1cab25afc344b1e8150b7c832f9" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -1028,9 +1029,9 @@ version = "1.1.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -1178,9 +1179,9 @@ version = "1.4.3" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "45470145863035bb124ca51b320ed35d071cc6c2" +git-tree-sha1 = "dae01f8c2e069a683d3a6e17bbae5070ab94786f" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.8" +version = "1.40.9" [deps.Plots.extensions] FileIOExt = "FileIO" @@ -1308,9 +1309,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.RoundingEmulator]] git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" @@ -1490,9 +1491,9 @@ version = "1.31.0+0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "6a451c6f33a176150f315726eba8b92fbfdb9ae7" +git-tree-sha1 = "a2fccc6559132927d4c5dc183e3e01048c6dcbd6" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.4+0" +version = "2.13.5+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] @@ -1526,9 +1527,9 @@ version = "1.8.6+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "2b0e27d52ec9d8d483e2ca0b72b3cb1a8df5c27a" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.11+1" [[deps.Xorg_libXcursor_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] @@ -1538,9 +1539,9 @@ version = "1.2.0+4" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "02054ee01980c90297412e4c809c8694d7323af3" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.4+1" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -1580,9 +1581,9 @@ version = "0.9.11+0" [[deps.Xorg_libpthread_stubs_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +git-tree-sha1 = "fee57a273563e273f0f53275101cd41a8153517a" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.1.1+1" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] @@ -1646,9 +1647,9 @@ version = "2.39.0+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "b9ead2d2bdb27330545eb14234a2e300da61232e" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.5.0+1" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -1669,9 +1670,9 @@ version = "3.2.9+0" [[deps.fzf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "936081b536ae4aa65415d869287d43ef3cb576b2" +git-tree-sha1 = "6e50f145003024df4f5cb96c7fce79466741d601" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.53.0+0" +version = "0.56.3+0" [[deps.gperf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] diff --git a/generated_assets/finite_dimension_lecture_notes_387bce5f.plutostate b/generated_assets/finite_dimension_lecture_notes_8ba333e8.plutostate similarity index 64% rename from generated_assets/finite_dimension_lecture_notes_387bce5f.plutostate rename to generated_assets/finite_dimension_lecture_notes_8ba333e8.plutostate index 14e190f59723573ba31e0c7626b0b2c55dba586e..b22fc1829f7f0e5fd56c5740f3c8c3260b247f17 100644 GIT binary patch delta 15027 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 RuF27u=#Ld)<}U7)e*@Y5WaR(= delta 13193 zcmeHOd02i&A3i$FG(qv1`-GWD-L%Gm=S!(2&qlzGxgA zT18Nat-;W1t01b@+LzerqPAMP5!CNJXOc+LtDWiJ%^!2t``q_D_dV}<&bc?+r`4JE zpmw8+)#|OYSQ8SWW35iBJ=SWs*sRGHtM#J=i_l8)b3-{@n2%=BrN1CK&EABD1+KQ) zZ7!P`E-<^yG<+3mMVoI%jp(H9D39h'tZ7s<$+L2~i?ZRle}j})RiwJTkfLvw#Y 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 K} \overset{\text{def}}{=} I - \Pi_K$. +together with its complement $\Pi_{> K} \overset{\text{def}}{=} I - \Pi_K$, where $I$ is the identity operator. """ # ╔═╡ 872359fa-dcb9-47da-9612-f46d6291fad5 @@ -287,18 +287,17 @@ c = Sequence(Fourier(1, 1.0), [0.5, 0.0, 0.5]) K = 10 # ╔═╡ 3fdf17d9-f6ac-46ba-a42d-8739a688794d -initial_data = zeros(ComplexF64, Fourier(K, 1.0)); +initial_guess = zeros(ComplexF64, Fourier(K, 1.0)); # ╔═╡ 60a73d6b-b56e-405d-8cda-ad4ac3c57257 F_DF(x) = (F(x, β, c, space(x)), DF(x, β, space(x), space(x))) # ╔═╡ f05c0ebc-a3c6-49c6-a131-0eafd00ad098 -x_bar, success = newton(F_DF, initial_data) +x_bar, success = newton(F_DF, initial_guess) # ╔═╡ d5800e45-8809-46d6-9f41-7565e5b1cbfd begin - plot(LinRange(0, 2π, 201), t -> real(x_bar(t)); - color = :royalblue1, linewidth = 3, label = "x_bar") + plot(LinRange(0, 2π, 201), t -> real(x_bar(t)); linewidth = 3, label = "x_bar") xlims!(0, 2π) xlabel!("t") end @@ -307,8 +306,8 @@ end md""" ###### Initializing Newton's method -WHere we were a bit lucky that a simple guess sufficed for Newton to converge. -For other parameter values one may need to study the solutions of the ODE in more detail using numerical integration. +Here we were a bit lucky that a simple guess sufficed for Newton to converge. +For other parameter values, however, we may need to study the solutions of the ODE in more detail using numerical integration. """ # ╔═╡ a74b307d-20a3-424c-9e65-23b3bae465aa @@ -330,12 +329,12 @@ By construction, we can write $A$ in the block diagonal form ```math A = \begin{pmatrix} -\Pi_K A_K \Pi_K & 0 \\ +A_K & 0 \\ 0 & \Pi_{>K} \end{pmatrix}. ``` -Next, since the operator $\Pi_K DF(\bar{x}) \Pi_K$ is a finite dimensional square matrix, we define $A_K$ to be its numerical inverse. +Next, since the operator $\Pi_K DF(\bar{x}) \Pi_K$ is a finite-dimensional square matrix, we define $A_K$ to be its numerical inverse. """ # ╔═╡ e37811fa-cd67-424e-8707-25ad8534d293 @@ -392,7 +391,7 @@ We choose a value for the weight $\nu$ for the Banach space $\ell^1_{\nu, \mathb """ # ╔═╡ 16678eaf-9b67-4fe0-ae0b-82f7bbc5e229 -ν = interval(1.1) # does not have to be exactly 1/10 +ν = interval(1.1) # does not have to be exactly 11/10 # ╔═╡ 58eceacb-d59b-4f4d-afdd-f616a241f2ca X = Ell1(GeometricWeight(ν)) @@ -418,13 +417,13 @@ We conclude that $\|A F(\bar{x})\|_X = \|\Pi_{2K} A \Pi_{2K} F(\bar{x})\|_X $ re function bound_Y(x_bar, β, c, A, X) K = order(x_bar) space = Fourier(2K, frequency(x_bar)) - + Fx = F(x_bar, β, c, space) - + Id = interval(I) ext_A = complex(project(Id, space, space)) ext_A[-K:K,-K:K] = coefficients(A) - + return norm(ext_A * Fx, X) end @@ -486,7 +485,7 @@ function bound_Z₁(x_bar, β, A, X) K = order(x_bar) domain = Fourier(2K, frequency(x_bar)) codomain = Fourier(3K, frequency(x_bar)) - + DFx = DF(x_bar, β, domain, codomain) Id = interval(I) @@ -519,6 +518,9 @@ Assume $N \ge \sqrt{\beta_2}$. Then $\|A \Lambda^{-1}\|_{\mathscr{B}(\ell^1_{\nu, \mathbb{Z}})} = \max\left( \|A_K \Lambda^{-1} \|_{\mathscr{B}(\ell^1_{\nu, \mathbb{Z}})}, |\lambda_{K+1}|^{-1} \right)$ (Hint: consider $\|A \Lambda^{-1} e_k\|_{\mathscr{B}(\ell^1_{\nu, \mathbb{Z}})}$ for $|k|\le K$ and for $|k| > K$ separately). """ +# ╔═╡ 8c31a57c-0f2a-49a1-8567-c49409a9ab85 +R = Inf + # ╔═╡ 271decf5-68cb-4c8f-9452-6354477f6131 function bound_Z₂(β, A, X) K = order(domain(A)) @@ -538,7 +540,7 @@ This function returns an interval of existence, within which all contained value """ # ╔═╡ 60b43603-9937-4869-b5fc-f74c1c18e710 -ie = interval_of_existence(Y, Z₁, Z₂, Inf) +ie = interval_of_existence(Y, Z₁, Z₂, R) # ╔═╡ 238c9111-7dda-40e8-8297-9776fe77f7d9 r = inf(ie) @@ -595,7 +597,7 @@ PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" RadiiPolynomial = "f2081a94-c849-46b6-8dc9-07bb90ed72a9" [compat] -Plots = "~1.40.8" +Plots = "~1.40.9" PlutoTeachingTools = "~0.3.1" PlutoUI = "~0.7.60" RadiiPolynomial = "~0.8.15" @@ -607,7 +609,7 @@ PLUTO_MANIFEST_TOML_CONTENTS = """ julia_version = "1.11.1" manifest_format = "2.0" -project_hash = "50ac00f186507245d93fbdb4571657e0e99c4371" +project_hash = "0985837f4b65ce9132896b14b5d018b306672fae" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] @@ -664,9 +666,9 @@ version = "0.7.6" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "13951eb68769ad1cd460cdb2e64e5e95f1bf123d" +git-tree-sha1 = "c785dfb1b3bfddd1da557e861b919819b82bbe5b" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.27.0" +version = "3.27.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -770,15 +772,15 @@ version = "0.0.20230411+0" [[deps.ExceptionUnwrapping]] deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" +version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +git-tree-sha1 = "cc5231d52eb1771251fbd37171dbc408bcc8a1b6" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" +version = "2.6.4+0" [[deps.FFMPEG]] deps = ["FFMPEG_jll"] @@ -815,9 +817,9 @@ version = "1.3.7" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +git-tree-sha1 = "fa8e19f44de37e225aa0f1695bc223b05ed51fb4" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" +version = "2.13.3+0" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -851,15 +853,15 @@ 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 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" +git-tree-sha1 = "b36c7e110080ae48fdef61b0c31e6b17ada23b33" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.5+0" +version = "2.82.2+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" +version = "1.3.14+1" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -867,10 +869,10 @@ 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 = "bc3f416a965ae61968c20d0ad867556367f2817d" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "6c4d6a1babbbee6f283b3da64ac895f0a3bfbc96" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.9" +version = "1.10.11" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -926,9 +928,9 @@ version = "0.2.2" [[deps.JLFzf]] deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "39d64b09147620f5ffbf6b2d3255be3c901bec63" +git-tree-sha1 = "71b48d857e86bf7a1838c4736545699974ce79a2" uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.8" +version = "0.1.9" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -950,9 +952,9 @@ version = "3.0.4+0" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1060,9 +1062,9 @@ version = "1.17.0+1" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +git-tree-sha1 = "84eef7acd508ee5b3e956a2ae51b05024181dee0" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] @@ -1072,9 +1074,9 @@ version = "4.7.0+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +git-tree-sha1 = "edbf5309f9ddf1cab25afc344b1e8150b7c832f9" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -1109,9 +1111,9 @@ version = "1.1.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -1259,9 +1261,9 @@ version = "1.4.3" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "45470145863035bb124ca51b320ed35d071cc6c2" +git-tree-sha1 = "dae01f8c2e069a683d3a6e17bbae5070ab94786f" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.8" +version = "1.40.9" [deps.Plots.extensions] FileIOExt = "FileIO" @@ -1389,9 +1391,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.RoundingEmulator]] git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" @@ -1571,9 +1573,9 @@ version = "1.31.0+0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "6a451c6f33a176150f315726eba8b92fbfdb9ae7" +git-tree-sha1 = "a2fccc6559132927d4c5dc183e3e01048c6dcbd6" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.4+0" +version = "2.13.5+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] @@ -1607,9 +1609,9 @@ version = "1.8.6+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "2b0e27d52ec9d8d483e2ca0b72b3cb1a8df5c27a" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.11+1" [[deps.Xorg_libXcursor_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] @@ -1619,9 +1621,9 @@ version = "1.2.0+4" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "02054ee01980c90297412e4c809c8694d7323af3" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.4+1" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -1661,9 +1663,9 @@ version = "0.9.11+0" [[deps.Xorg_libpthread_stubs_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +git-tree-sha1 = "fee57a273563e273f0f53275101cd41a8153517a" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.1.1+1" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] @@ -1727,9 +1729,9 @@ version = "2.39.0+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "b9ead2d2bdb27330545eb14234a2e300da61232e" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.5.0+1" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -1750,9 +1752,9 @@ version = "3.2.9+0" [[deps.fzf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "936081b536ae4aa65415d869287d43ef3cb576b2" +git-tree-sha1 = "6e50f145003024df4f5cb96c7fce79466741d601" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.53.0+0" +version = "0.56.3+0" [[deps.gperf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1876,7 +1878,7 @@ version = "1.4.1+1" # ╠═df46f5c1-dbc6-4cf1-8e97-36b22c6b4c51 # ╠═f0e42405-8068-455b-b17c-ede3e259f01d # ╟─f5cc03ca-09eb-4419-9d51-78c956ee73d9 -# ╟─58ad1864-9446-489c-b175-bb6bed64b385 +# ╠═58ad1864-9446-489c-b175-bb6bed64b385 # ╟─4412ca19-ade5-41f1-a178-f65b030e144f # ╟─4a9daa68-86ed-4327-98fc-03d436885d2e # ╠═095cd71f-1df2-4375-b400-9df58b585ea2 @@ -1914,6 +1916,7 @@ version = "1.4.1+1" # ╠═47ef9015-eae8-4b29-807f-d223754701d3 # ╟─1d43be44-58d5-43a5-a850-791077493097 # ╟─6f346c67-879a-4427-afd4-6acdeb17af21 +# ╠═8c31a57c-0f2a-49a1-8567-c49409a9ab85 # ╠═271decf5-68cb-4c8f-9452-6354477f6131 # ╠═0d7146b3-3015-416b-aae8-697ac0850603 # ╟─27019122-b944-4adc-b453-02af8eb378ac diff --git a/generated_assets/fourier_lecture_notes_aad0d178.plutostate b/generated_assets/fourier_lecture_notes_73861375.plutostate similarity index 68% rename from generated_assets/fourier_lecture_notes_aad0d178.plutostate rename to generated_assets/fourier_lecture_notes_73861375.plutostate index 404aeb3d3a73921bb69dab519b65ea0f02901eb3..beda10295e4b6e40c694c6cf3d3f151ffc0968ac 100644 GIT binary patch delta 14847 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 delta 13818 zcmeHOcU)A*+Rn^5RF!4{8-gwv3$P1P1x1ZSRP2gk!37pwVV9L%6x0N;$GUoyiQeB$ z#EznyG2D(*{5*7JsCtgarp9CteBiNse8vqVvo&@7IVQAW;&%x*BFhfr05an!kfa^O>qzAlAj!On!&F{h9UQeuD0Xq$q$&La@UAYXY-QVM<Cjja6VQ|yY! zaew43yBLI2iBPosV2UshLB-N{gi;hCuWBGPL9XiH@a7}Kq7ANovd8L)6a% z6Ff?v3D>}jYlj3+Ob!eaJmuk50T$j+mEcYct%V$NGNjQW_ri*BMChMd6?q z*J_^3`$vHLI4dVvsgNuOE<;U0}>Hz>)m7 zkaZN&sai-oSV&5i_YuQU2l7oHF;JxODA_(;>`I>W6}QnSG(c`VLlhBNnJ7LZpB0Ha zc@%ofBCa5&VsR%8LiaTi7gq071AigBweZ>(dm@Muq zwih4<WIz0AH63568bE+}9+e_Taqs(p=aRzZ1 z2WNbVS)4-_`im(jO}^zXjz&PQ^%c9zAzj6CM6!E|XGn?)x&m=#02vf0c4`o+48F-S z=rmc;TRcblHWqitizCEU&Sd^DaWjoBPqV<%#aCP@*KaDG7g=N}Z|pCgMC3(d=!=yM zZz4ttt}ZU5bCKAZ{IiLeOV;>``{k+x(G3$fgILZ&P5HLB*apdu)M7V8q?HgW^_nhj zl&^$|+c1wd)h2NfDQ^Q^q|v4vJ6Uu^ENtwc7LW3<@q=+-!h*%m+lmoRj)siZty{ZF zE$6h9ecl##Bl&ncF$hvhZ>9;pik}N*A4z4MGA98J@O;BbHxuxSrVA_ zAYwo91JHS4Kk*M9LmE?HK7^CCDPpJ)qEVC5FtH2iRE$*e_wS2$5ZV6@^l8n{&;?zB zSinL+c}xefOq2@-ie3&Z{*z-ziq{Ye09&*b-{jA1#KJz3k_@gs zB-UiH14<@HgOZ5zaIv}Imt&MeAc1*E=#wU{B6nwsZk;=+qdG-)3Jnd4P7BorX*9ab zAa$5V9h4cSO;<-{WJZTYhptP@F=m*H%Gr8?z$GvH)q<*=JGq(AdYeg?Yu1}BsT0hp zuvRU)uhtr1ac;8c@+~2zYzY3PYqOd-9?f(QKDuGKCu-_eo|}_n(VETraYmi)3xfQ` zU@3g63dcSn{ykBgJbDO9cJTinyk(4cyv2~sX?4##wQXpNw)8X(CJ8AhKyZ2xA^D?N zl4pd7c=l*?%YN>-@l9-T-#vqaOHzSaB&n2o*Jo%`9XyV9yl0E`WxNDCR&gLl=x%0)IcMQ>MY z@3y1aDqBrjzXXwnHbZS499B<$afQp|i&ogL(BK=LZ4vt>L0?w2g1!joIP1%kQtXcG z=Z%_k#TIY&8a!AKD`qlJmw6(i{qxT;YnsLu<^Du)b-5P`#5$d^aqbyfr0F^-R>{7YK&wx8YM*W?&m4liDZgO@x}iJ6*PPR!{SYj9m?&Bs5p zMcZX24BExDSS1FXzVRz1mY+^VJw*Ej9vpSw7P0FzAU;t<*Y@s2=J4Y|$Y8$?jzfhi zTfD9G!25VG%(5+0DXp|;y15Rly??oBgH^K57=q^ngT4>ff8#0i6ePLBNhF@ai<>Y~g{fvXI<=SHOq?>};lTL$X+Ze6Mgbvg}h$$Vm z+LAb(tel7j;hra%y0YUqG|{;ZtgGUKD67|N@~+iGL_@CTph2iu@JL1u_2}|uCXB*`bk~>dQPz8`me`o#QqRl!lZ7+a9S4z2##StQC%uCo~PAi z0525UU|rrG#!oDG%7i}YjLPgEzaXz18-&E#6UMK;D?NV#qA0D@uDA}T+K`j^wpc4F zpz}kf!=wm$n~}DjS%Px5DmfJ z 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 B8+rf$ diff --git a/generated_assets/inverse_lecture_notes_32c0e051.jl b/generated_assets/inverse_lecture_notes_9c6da622.jl similarity index 96% rename from generated_assets/inverse_lecture_notes_32c0e051.jl rename to generated_assets/inverse_lecture_notes_9c6da622.jl index 8b2e1bd..58b39ac 100644 --- a/generated_assets/inverse_lecture_notes_32c0e051.jl +++ b/generated_assets/inverse_lecture_notes_9c6da622.jl @@ -4,7 +4,7 @@ #> [frontmatter] #> chapter = 2 #> order = 0.5 -#> title = "Inverse function" +#> title = "Algebraic equations" #> tags = ["lecture", "module2"] #> layout = "layout.jlhtml" @@ -57,8 +57,8 @@ end # ╔═╡ d794367f-d346-416f-b8f1-1f442f876e20 md""" -We follow the same strategy outlined in Module 1, with some key adaptations: -1. Identify a appropriate Banach space (an additional step compared to the previous module on finite-dimensional problems). +We follow the same strategy outlined in Module 1, with some key adaptations. +1. Identify an appropriate Banach space (an additional step compared to the previous module on finite-dimensional problems). 2. Reformulate the problem as a zero-finding problem $F(x) = 0$. 3. Compute an approximate zero $\bar{x}$. 4. Construct an approximate inverse $A$ of $DF(\bar{x})$. @@ -70,7 +70,7 @@ md"## Sequence space" # ╔═╡ 65cebd36-0474-42ee-b983-70c5f9c1614f md""" -The sequence space we are interested in is the one of analytic functions with radius of convergence strictly greater than $1$. +The space we are interested in is the one of analytic functions with radius of convergence strictly greater than $1$. The first step is to discretize this space as the sequence space ```math @@ -130,7 +130,7 @@ x_n, & n \le N, \\ \end{cases} ``` -together with its complement $\Pi_{> N} \overset{\text{def}}{=} I - \Pi_N$. +together with its complement $\Pi_{> N} \overset{\text{def}}{=} I - \Pi_N$, where $I$ is the identity operator. The projections let us break down the problem into two parts: a finite-dimensional part, handled by the computer, and an infinite-dimensional part (often called the *tail*), handled entirely by pen-and-paper analysis. """ @@ -148,7 +148,7 @@ md"## Zero-finding problem" # ╔═╡ b6655a7c-32d0-473a-ac1d-ddb96e31de81 md""" -Writing $v(t) = \sum_{n \ge 0} y_n t^n$ with $y \overset{\text{def}}{=} (2, 1, 0, \dots) \in \ell^1_\mathbb{N}$, and substituting $u(t) = \sum_{n \ge 0} x_n t^n$ into the algebraic equation leads to the infinite set of equations +Writing $v(t) = \sum_{n \ge 0} y_n t^n$ with $y \overset{\text{def}}{=} (2, 1, 0, \dots) \in \ell^1_\mathbb{N}$, and substituting $u(t) = \sum_{n \ge 0} x_n t^n$ into the algebraic equation leads to the infinite set of equations ```math (x * y)_0 = 1, \qquad (x * y)_n = 0, \quad n \ge 1. @@ -165,7 +165,7 @@ F(x) \overset{\text{def}}{=} x * y - 1. md""" !!! note "Remark" Here we slightly abuse notation by identifying the constant $1$ with its sequence of Taylor coefficients $(1, 0, \dots) \in \ell^1_\mathbb{N}$. - This is consistent with the convention that $1$ denotes the identity element of the algebra $(\ell^1_\mathbb{N}, 1)$. + This is consistent with the convention that $1$ denotes the identity element of the algebra $(\ell^1_\mathbb{N}, *)$. """ # ╔═╡ 0dab4ba7-4ad0-4ea8-a4c9-5892427969e7 @@ -226,8 +226,7 @@ x_bar = M \ Sequence(Taylor(N), [1.0 ; zeros(N)]) # ╔═╡ d2d76ed8-911d-4247-9460-8c7df7669912 begin - plot(LinRange(-1, 1, 101), t -> x_bar(t); - color = :royalblue1, linewidth = 3, label = "x_bar") + plot(LinRange(-1, 1, 101), t -> x_bar(t); linewidth = 3, label = "x_bar") xlims!(-1, 1) xlabel!("t") end @@ -393,12 +392,12 @@ begin plot([[interval(ts[i], ts[i+1]), rigorous_eval(ix_bar, r, interval(ts[i], ts[i+1]))] for i = 1:length(ts)-1]; label = "", color = :palegreen3) - plot!(ts, t -> x_bar(t); - label = "x_bar", color = :royalblue1, linewidth = 3) - plot!(ts, t -> inv(2+t); label = "1/(2+t)", color = :salmon, linewidth = 3) + plot!(ts, t -> x_bar(t); + label = "x_bar", color = :royalblue1, linewidth = 3, linestyle = :dash) + xlims!(-1, 1) xlabel!("t") end @@ -423,7 +422,7 @@ PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" RadiiPolynomial = "f2081a94-c849-46b6-8dc9-07bb90ed72a9" [compat] -Plots = "~1.40.8" +Plots = "~1.40.9" PlutoTeachingTools = "~0.3.1" PlutoUI = "~0.7.60" RadiiPolynomial = "~0.8.15" @@ -435,7 +434,7 @@ PLUTO_MANIFEST_TOML_CONTENTS = """ julia_version = "1.11.1" manifest_format = "2.0" -project_hash = "50ac00f186507245d93fbdb4571657e0e99c4371" +project_hash = "0985837f4b65ce9132896b14b5d018b306672fae" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] @@ -492,9 +491,9 @@ version = "0.7.6" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "13951eb68769ad1cd460cdb2e64e5e95f1bf123d" +git-tree-sha1 = "c785dfb1b3bfddd1da557e861b919819b82bbe5b" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.27.0" +version = "3.27.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -598,15 +597,15 @@ version = "0.0.20230411+0" [[deps.ExceptionUnwrapping]] deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" +version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +git-tree-sha1 = "cc5231d52eb1771251fbd37171dbc408bcc8a1b6" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" +version = "2.6.4+0" [[deps.FFMPEG]] deps = ["FFMPEG_jll"] @@ -643,9 +642,9 @@ version = "1.3.7" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +git-tree-sha1 = "fa8e19f44de37e225aa0f1695bc223b05ed51fb4" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" +version = "2.13.3+0" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -679,15 +678,15 @@ 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 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" +git-tree-sha1 = "b36c7e110080ae48fdef61b0c31e6b17ada23b33" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.5+0" +version = "2.82.2+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" +version = "1.3.14+1" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -695,10 +694,10 @@ 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 = "bc3f416a965ae61968c20d0ad867556367f2817d" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "6c4d6a1babbbee6f283b3da64ac895f0a3bfbc96" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.9" +version = "1.10.11" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -754,9 +753,9 @@ version = "0.2.2" [[deps.JLFzf]] deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "39d64b09147620f5ffbf6b2d3255be3c901bec63" +git-tree-sha1 = "71b48d857e86bf7a1838c4736545699974ce79a2" uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.8" +version = "0.1.9" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -778,9 +777,9 @@ version = "3.0.4+0" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -888,9 +887,9 @@ version = "1.17.0+1" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +git-tree-sha1 = "84eef7acd508ee5b3e956a2ae51b05024181dee0" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] @@ -900,9 +899,9 @@ version = "4.7.0+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +git-tree-sha1 = "edbf5309f9ddf1cab25afc344b1e8150b7c832f9" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -937,9 +936,9 @@ version = "1.1.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -1087,9 +1086,9 @@ version = "1.4.3" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "45470145863035bb124ca51b320ed35d071cc6c2" +git-tree-sha1 = "dae01f8c2e069a683d3a6e17bbae5070ab94786f" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.8" +version = "1.40.9" [deps.Plots.extensions] FileIOExt = "FileIO" @@ -1217,9 +1216,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.RoundingEmulator]] git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" @@ -1399,9 +1398,9 @@ version = "1.31.0+0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "6a451c6f33a176150f315726eba8b92fbfdb9ae7" +git-tree-sha1 = "a2fccc6559132927d4c5dc183e3e01048c6dcbd6" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.4+0" +version = "2.13.5+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] @@ -1435,9 +1434,9 @@ version = "1.8.6+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "2b0e27d52ec9d8d483e2ca0b72b3cb1a8df5c27a" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.11+1" [[deps.Xorg_libXcursor_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] @@ -1447,9 +1446,9 @@ version = "1.2.0+4" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "02054ee01980c90297412e4c809c8694d7323af3" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.4+1" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -1489,9 +1488,9 @@ version = "0.9.11+0" [[deps.Xorg_libpthread_stubs_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +git-tree-sha1 = "fee57a273563e273f0f53275101cd41a8153517a" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.1.1+1" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] @@ -1555,9 +1554,9 @@ version = "2.39.0+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "b9ead2d2bdb27330545eb14234a2e300da61232e" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.5.0+1" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -1578,9 +1577,9 @@ version = "3.2.9+0" [[deps.fzf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "936081b536ae4aa65415d869287d43ef3cb576b2" +git-tree-sha1 = "6e50f145003024df4f5cb96c7fce79466741d601" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.53.0+0" +version = "0.56.3+0" [[deps.gperf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] diff --git a/generated_assets/ivp_lecture_notes_c988377e.jl b/generated_assets/ivp_lecture_notes_18286ffe.jl similarity index 72% rename from generated_assets/ivp_lecture_notes_c988377e.jl rename to generated_assets/ivp_lecture_notes_18286ffe.jl index fed7c86..7b6223f 100644 --- a/generated_assets/ivp_lecture_notes_c988377e.jl +++ b/generated_assets/ivp_lecture_notes_18286ffe.jl @@ -33,115 +33,408 @@ TableOfContents(title = "Table of Contents"; indent = true, depth = 4, aside = t # ╔═╡ 3e086655-fc49-42bb-803e-27b82c7a7577 md""" In this lecture we will learn how to solve initial value problems for ODEs using Taylor series. +""" + +# ╔═╡ 86c84f47-a64b-43f9-a7e0-2eeb78b0d41c +md"# Motivating example: solving the logistic equation" + +# ╔═╡ ab841d58-1385-4d5b-89aa-7df1e9667978 +md""" +Consider the [initial value problem](https://en.wikipedia.org/wiki/Initial_value_problem) (IVP) for the [logistic equation](https://en.wikipedia.org/wiki/Logistic_function#Logistic_differential_equation): -# Solving the logistic equation +```math +\begin{cases} +u'(t) = u(t) (1 - u(t)), & t \ge 0, \\ +u(0) = ϕ. +\end{cases} +``` + +Given the initial condition $\phi = 1/2$ and $\nu > 0$, we will search for a function $u$ as a power series $u(t) = \sum_{n \ge 0} x_n t^n$, defined for all $t \in [-\nu, \nu]$. + +Of course, this ODE is simple enough to be solvable by hand. +One can verify that $u(t) = 1/(1 + e^{-t})$ is the exact solution. +A numerical plot is displayed below. """ -# ╔═╡ 4e6473ec-02c6-4ed5-ab05-8f0086853313 -f(x) = x * (1 - x) +# ╔═╡ 5fe08415-9185-4054-8dec-a657cfb4484b +begin + plot(LinRange(-2.5, 2.5, 51), t -> 1/(1+exp(-t)); label = "1/(1+exp(-t))", linewidth = 3) + xlims!(-2.5, 2.5) + xlabel!("t") +end -# ╔═╡ abc4b3dd-518c-4239-87bb-e9688b34a8db -Df(x) = 1 - 2x +# ╔═╡ 7cd532e8-f370-47e2-a2c1-3a5004cb8e8c +md""" +We adopt the contraction strategy: +1. Identify an appropriate Banach space. +2. Reformulate the problem as a zero-finding problem $F(x) = 0$. +3. Compute an approximate zero $\bar{x}$. +4. Construct an approximate inverse $A$ of $DF(\bar{x})$. +5. Derive computable formulas for the bounds $Y, Z_1, Z_2$, and verify the radii polynomial inequalities. +""" + +# ╔═╡ 2be11063-c9dd-4c36-af2b-2d80fad17fcb +md"## Sequence space" + +# ╔═╡ 529d0a8a-c650-4b70-bd1c-bdd0621e06df +md""" +We are interested in the space of analytic functions with a radius of convergence strictly greater than some fixed $\nu > 0$. +If $\nu$ is chosen too large, the computer-assisted proof (CAP) will fail. + +The first step is to discretize this space as a sequence space. +However, if the radius of convergence of the function lies in the interval $(0, 1)$, the coefficients of the series grow, which leads to numerical instability. +To mitigate this, it is good practice to re-scale the problem so that the radius of convergence is at least $1$, and we may as well scale it to $1$. +We rescale the time variable by introducing + +```math +w(s) = u(\nu s), \qquad \text{for all } s \in [-1, 1]. +``` + +Then, the sequence space we use is + +```math +\ell^1_\mathbb{N} \overset{\text{def}}{=} \left\{ x \in \mathbb{R}^\mathbb{N} \, : \, \| x \|_1 \overset{\text{def}}{=} \sum_{n \ge 0} |x_n| < \infty \right\}. +``` + +The properties of this space were discussed in Module 2. +Here, we briefly recall them. +Suppose $u(t) = \sum_{n \ge 0} x_n t^n$ and $v(t) = \sum_{n \ge 0} y_n t^n$. +Their product is given by + +```math +u(t) v(t) = \sum_{n \ge 0} (x * y)_n t^n, +``` + +where the convolution operation $x * y$ is given by + +```math +(x * y)_n \overset{\text{def}}{=} \sum_{l=0}^n x_{n-l} y_l, \qquad n \ge 0. +``` + +Moreover, the convolution satisfies the inequality + +```math +\| x * y \|_1 \leq \| x \|_1 \| y \|_1. +``` +""" + +# ╔═╡ 42e2418b-55bc-4e17-8cb7-445f8eee2cc6 +md""" +As discussed in Module 2, infinite-dimensional problems are addressed by decomposing the sequence space into a finite-dimensional subspace and the complementary infinite-dimensional space. +To formalize this, we define the projection operator $\Pi_N : \ell^1_\mathbb{N} \to \ell^1_\mathbb{N}$ which extracts the first $N+1$ coefficients of a sequence. +Specifically, for all $x \in \ell^1_\mathbb{N}$, we have + +```math +(\Pi_N x)_n +\overset{\text{def}}{=} +\begin{cases} +x_n, & n \le N, \\ +0, & n > N. +\end{cases} +``` + +The complementary projection, which removes the first $N+1$ modes, is defined as $\Pi_{> N} \overset{\text{def}}{=} I - \Pi_N$, where $I$ is the identity operator. +""" # ╔═╡ c454f8a4-5553-494a-8d08-7c7d756805a0 +md"## Zero-finding problem" + +# ╔═╡ 0691e2f7-110c-42f7-95f6-056699578782 +md""" +Substituting $w(t) = \sum_{n \ge 0} x_n t^n$ into the ODE, with initial condition $w(0) = \phi$, leads to the recurrence relation + +```math +x_0 = \phi, \qquad x_n = \frac{\nu}{n} (x_{n-1} - (x * x)_{n-1}), \quad n \ge 1. +``` + +We can re-write this set of equations more concisely as + +```math +x = \phi + \nu \Lambda (x - x * x), +``` + +where + +```math +\Lambda x \overset{\text{def}}{=} +\begin{cases} +0, & n = 0, \\ +\displaystyle \frac{1}{n} x_{n-1}, & n \ge 1. +\end{cases} +``` + +We slightly abuse notation and identify $\phi$ with its sequence of Taylor coefficients $(\phi, 0, \dots) \in \ell^1_\mathbb{N}$. + +Therefore, the problem of finding the solution $u$ corresponds to finding a zero of the mapping $F : \ell^1_\mathbb{N} \to \ell^1_\mathbb{N}$ given by + +```math +F(x) \overset{\text{def}}{=} +x - \phi - \nu \Lambda (x - x * x). +``` +""" + +# ╔═╡ 4ee023ac-e513-41f8-bfde-9d2daec71c57 md""" -## Zero-finding problem: Taylor integration +This zero-finding problem is of course identical to integrating first the ODE $u(t) = \phi + \int_0^t u(s)(1-u(s)) \, ds$, and plugging the power series ansatz into it. +In this sense, $\Lambda$ is nothing more than the representation of the integral operator in $\ell^1_\mathbb{N}$. + +An implementation, using the RadiiPolynomial library, of the zero-finding problem $F$ is given below. """ +# ╔═╡ 4e6473ec-02c6-4ed5-ab05-8f0086853313 +f(x) = x * (1 - x) + # ╔═╡ d53d988f-da50-4839-aae6-d7bdac46d4ac -F(x, x0, τ, N) = project(x - x0 - τ * integrate(f(x)), Taylor(N)) +F(x, ϕ, ν, space) = x - ϕ - ν * project(integrate(f(x)), space) + +# ╔═╡ 9516114e-de9b-4705-9197-52737d050602 +md""" +The Fréchet derivative is given by + +```math +DF(x) = I - \nu \Lambda \circ (I - \mathcal{M}_{2x}). +``` +""" + +# ╔═╡ abc4b3dd-518c-4239-87bb-e9688b34a8db +Df(x) = 1 - 2x # ╔═╡ 7e5be3bf-ea25-4269-b05f-8263d5ede515 -DF(x, τ, N, M) = project(I - - τ * (Integral(1) * project(Multiplication(Df(x)), Taylor(N), Taylor(N))), - Taylor(N), Taylor(M)) +DF(x, ν, domain, codomain) = I - + ν * project(Integral(1), domain, codomain) * project(Multiplication(Df(x)), domain, codomain) -# ╔═╡ 8c99fd06-bea2-462e-ba47-aaa9da05d740 -begin -# Numerical approximation +# ╔═╡ e6b00d47-adf6-4935-b3c8-5b30ece1e2f7 +md""" +###### An other contraction argument -N = 140 # order of the Taylor series +We can actually take advantage of the explicit recurrence relation to solve the IVP. +Using interval arithmetic, it’s possible to compute the Taylor coefficients $\tilde{x}_0, \dots, \tilde{x}_N$ exactly, up to any desired order $N > 0$. +Once we have these, we can define the truncated sequence $\hat{x} = (\tilde{x}_0, \dots, \tilde{x}_N, 0, \dots)$, where the terms beyond $N$ are set to zero. +To estimate the truncation error, observe that the recurrence relation naturally leads to a fixed-point operator $T$. +By focusing on the complementary subspace $\Pi_{> N} \ell^1_\mathbb{N}$, we can define $G : \Pi_{> N} \ell^1_\mathbb{N} \to \Pi_{> N} \ell^1_\mathbb{N}$ by -x0 = 0.5 # initial condition +```math +G(h) \overset{\text{def}}{=} T(\hat{x} + h). +``` -τ = 2.5 # time rescaling +Intuitively, $h$ represents the correction to the tail of $\hat{x}$. +The key idea is that, for a sufficiently large $N$, this operator $G$ becomes contracting around $0 \in \Pi_{> N} \ell^1_\mathbb{N}$. -initialguess = ones(Taylor(N)) +There are two main differences with the CAPs done so far: +- we do not construct a Newton-like fixed-point operator, and +- we must solve **exactly** a finite number of equations. -bx, success = newton(x -> (F(x, x0, τ, N), DF(x, τ, N, N)), initialguess) -end +That said, we do not pursue this approach in this lecture, as it is specific to power series. +Our broader goal is to develop techniques that can be applied to other kinds of series. +In particular, [Chebyshev polynomials](https://en.wikipedia.org/wiki/Chebyshev_polynomials) are especially relevant in the context of IVPs. +""" + +# ╔═╡ 3a6bae8b-933e-4384-81a8-e3d3bb5459c7 +md"## Numerical zero" + +# ╔═╡ eef70ab3-fb71-4cfe-bca6-4ab0d578aca3 +N = 20 # order of the Taylor series + +# ╔═╡ 4a173aa3-1672-4a21-a9d0-e64a9336144a +ϕ = 0.5 # initial condition + +# ╔═╡ 8ead7dda-965c-4540-a77d-d37ed4d8aea9 +ν = 2.5 # time rescaling + +# ╔═╡ 5266d1d6-45c5-497b-9d2a-22a6f4423efa +initial_guess = zeros(Taylor(N)); + +# ╔═╡ fc74e5bf-ccfa-460b-a69c-29c50d9400e7 +F_DF(x) = (F(x, ϕ, ν, Taylor(N)), DF(x, ν, Taylor(N), Taylor(N))) + +# ╔═╡ 6edbe03d-77b5-4c8f-884a-fe008a061228 +x_bar, success = newton(F_DF, initial_guess) # ╔═╡ 25e484d2-e228-45a8-9a8f-53ec54326fd9 begin - plot(LinRange(-τ, τ, 101), t -> bx(t/τ); legend = false) + plot(LinRange(-ν, ν, 101), t -> x_bar(t/ν); linewidth = 3, label = "x_bar") + xlims!(-ν, ν) xlabel!("t") - ylabel!("u") - xlims!(-τ, τ) end +# ╔═╡ 3395bf15-3e17-4039-bba1-839933a9f481 +md""" +###### Initializing Newton's method + +In this example, Newton converged with a simple guess. +In general, however, we need to study the solutions of the ODE in more detail using numerical integration. +""" + # ╔═╡ 641caade-ff17-4484-af95-988b92977bb5 +md"## Constructing $A$" + +# ╔═╡ d55fb36b-a0a8-41cd-a50f-9495ede7f2ad md""" -## The Newton-Kantorovich proof +We use the projection to split $A$, the approximate inverse of $DF(\bar{x})$, into a finite part and a tail part: + +```math +A +\overset{\text{def}}{=} +A_N \Pi_N + \Pi_{>N}, +``` + +where $A_N$ is a linear map (constructed below) on $\Pi_N \ell^1_\mathbb{N}$. +By construction, we can write $A$ in the block diagonal form + +```math +A = +\begin{pmatrix} +A_N & 0 \\ +0 & \Pi_{>N} +\end{pmatrix}. +``` + +Next, since the operator $\Pi_N DF(\bar{x}) \Pi_N$ is a finite-dimensional square matrix, we define $A_N$ to be its numerical inverse. """ -# ╔═╡ c4254d37-06d5-4502-9136-717f9404a7ff -function tail(x, N) - # get the tail of a Taylor series - y = zeros(eltype(x), space(x)) - for n = N+1:order(x) - y[n] = x[n] - end - return y -end +# ╔═╡ 29ce245e-e838-42f1-a524-6f8059b0291b +A_N = inv(DF(x_bar, ν, Taylor(N), Taylor(N))) -# ╔═╡ 84d0a349-66a1-45e4-887f-2bd19b5ccf4a -begin - #- approximate inverse +# ╔═╡ 97e52e3e-fd1c-4dff-8102-fd8b509d45f6 +md"## Verifying the contraction" + +# ╔═╡ 43ec73f0-778b-4571-a04f-56832939194e +md""" +We now verify that $T(x) \overset{\text{def}}{=} x - A F(x)$ is a contraction around $\bar{x} \in \Pi_N \ell^1_\mathbb{N}$. +To rigorously compute the bounds $Y, Z_1, Z_2$, we enclose all relevant data into intervals. +""" + +# ╔═╡ 9ec0cbd7-e74d-42b4-b911-9b164a0c7abc +iϕ = interval(0.5) # 0.5 is exactly representable as a Float64 + +# ╔═╡ ddcbee38-f3ec-47ff-81fd-7cae07482929 +iν = interval(2.5) # 2.5 is exactly representable as a Float64 + +# ╔═╡ bc8c3312-e7d8-413e-9c4c-95bf46ba802e +ix_bar = interval(x_bar) + +# ╔═╡ 5b83f453-55a7-4a38-8e74-aea6af53a837 +iA_N = interval(A_N) + +# ╔═╡ 2e0c0dc6-031a-46a8-9c37-27ffab80db2c +md"##### Computing $Y$" + +# ╔═╡ 10898ff1-2a1f-4369-8f3f-0f096eca6b75 +function bound_Y(x_bar, ϕ, ν, A) + N = order(x_bar) + space = Taylor(2N+1) + + Fx = F(x_bar, ϕ, ν, space) + + Id = interval(I) + ext_A = project(Id, space, space) + ext_A[0:N,0:N] = coefficients(A) -A_finite = interval.( inv(DF(bx, τ, N, N)) ) -opnormA_finite = opnorm(A_finite, 1) -opnormA_tail = interval(1) -opnormA = max(opnormA_finite, opnormA_tail) + return norm(ext_A * Fx, 1) end # ╔═╡ 34152734-45ff-4dfe-bc25-3d60ba4c9d19 -begin - #- Y bound +Y = bound_Y(ix_bar, iϕ, iν, iA_N) + +# ╔═╡ e3ae92f8-e06e-4931-b424-38c893001471 +md"##### Computing $Z_1$" + +# ╔═╡ 82b4d717-835e-4577-b4bd-410f5fecab41 +function bound_Z₁(x_bar, ν, A) + N = order(x_bar) + space = Taylor(N+1) + + DFx = DF(x_bar, ν, space, space) -full_F = F(interval.(bx), interval(x0), interval(τ), 2N+1) # the order of F is 2N+1 -Y = norm(A_finite * project(full_F, Taylor(N)), 1) + norm(tail(full_F, N), 1) + Id = interval(I) + ext_A = project(Id, space, space) + ext_A[0:N,0:N] = coefficients(A) + + return opnorm(Id - ext_A * DFx, 1) end # ╔═╡ 4bce0a13-ca2f-46c4-9ef3-12f07d525fbf -begin -#- Z₁ bound +Z₁ = bound_Z₁(ix_bar, iν, iA_N) -Df_bx = Df(interval.(bx)) +# ╔═╡ 765ee153-3a73-4f0e-81ff-a9852461e4ef +md"##### Computing $Z_2$" -Z₁ = opnorm(I - A_finite * DF(interval.(bx), τ, N, N), 1) + - τ * norm(Df_bx, 1) / (interval(N + 1)) +# ╔═╡ 09c77d32-4541-458e-86a0-e4fb3c324e93 +R = Inf +# ╔═╡ b2d7aa0e-f9aa-4dc4-aff7-4474e9a6c9b1 +function bound_Z₂(ν, A) + N = order(domain(A)) + Λ = project(Integral(1), domain(A), domain(A), Interval{Float64}) + return 2ν * max(opnorm(A * Λ, 1), inv(interval(N))) end # ╔═╡ 031ab1e8-d479-4197-919c-20416f19aa9f -begin - #- Z₂ bound +Z₂ = bound_Z₂(iν, iA_N) -Z₂ = 2 * τ * opnormA -end +# ╔═╡ 7b38e714-75bf-4a56-87f1-f8db5db517e3 +md"##### Finishing the CAP" + +# ╔═╡ b53f9f0a-c4d8-4102-ac55-0bc4cea3cbdf +md""" +To determine the values of $r$ that satisfy the radii polynomial inequalities, we use the `interval_of_existence` function from RadiiPolynomial. +This function returns an interval of existence, within which all contained values satisfy the contraction conditions. +""" # ╔═╡ 7fc34159-4b00-4e5e-b969-b4550b38ab53 -#- interval of existence (cf. Radii Polynomial Theorem) -# r_star = Inf # since the second-order derivative is constant -r = interval_of_existence(Y, Z₁, Z₂, Inf) +ie = interval_of_existence(Y, Z₁, Z₂, R) -# ╔═╡ a618d08d-3f68-4a84-ac24-f6fbd2d93818 -md""" -# Next steps and further reading +# ╔═╡ 67008bc9-20ae-435b-9228-438c022fa9f2 +r = inf(ie) -We remark that we need a large number of Taylor coefficients for our proof to succeed despite a relatively small length of integration ($N = 140$ to have last Taylor coefficient of order $10^{-14}$). One should consider using Chebyshev series instead. +# ╔═╡ 559d9d44-3501-4a7c-ad4c-f81d633f1a15 +md""" +To guarantee that the fixed-point of $T$ is a zero of $F$, we must check that $A$ is injective. +This property comes as a by-product of the contraction argument. +Indeed, $\|I - A DF(\bar{x})\| \le Z_1 < 1$ ensures that $A DF(\bar{x})$ is invertible, which implies that $A$ is surjective. +By construction, $A_N$ is surjective and $A$ is injective if and only if $A_N$ is injective. +Since $A_N$ can be represented by a finite square matrix, it follows that $A$ must also be injective. + +Therefore, we have proved the existence of a zero $\tilde{x}$ of $F$ such that + +```math +\tilde{x} = \bar{x} + \gamma, +``` + +where $\gamma \in \ell^1_\mathbb{N}$ is not known explicitly, but satisfies $\| \gamma \|_1 \le r$. +Our choice of norm also gives us a $C^0$-error bound for the function + +```math +\begin{aligned} +\sup_{t \in [-\nu,\nu]} | u(t) - \sum_{n=0}^N \bar{x}_n (t/\nu)^n | +&= \sup_{t \in [-1,1]} | w(t) - \sum_{n=0}^N \bar{x}_n t^n | \\ +&= \sup_{t \in [-1,1]} | \sum_{n \ge 0} \tilde{x}_n t^n - \sum_{n=0}^N \bar{x}_n t^n | \\ +&= \sup_{t \in [-1,1]} | \sum_{n \ge 0} (\tilde{x}_n - \bar{x}_n) t^n | \\ +&\le \| \tilde{x} - \bar{x} \|_1 \\ +&\le r. +\end{aligned} +``` """ +# ╔═╡ fb6bd3c5-6622-457f-b57f-bdd0d395d7ab +begin + rigorous_eval(x, r, t) = interval(x(t), r; format = :midpoint) + + ts = LinRange(-ν, ν, 101) + + plot([[interval(ts[i], ts[i+1]), rigorous_eval(ix_bar, r, interval(ts[i]/ν, ts[i+1]/ν))] for i = 1:length(ts)-1]; + label = "", color = :palegreen3) + + plot!(ts, t -> 1/(1+exp(-t)); + label = "1/(1+exp(-t))", color = :salmon, linewidth = 3) + + plot!(ts, t -> x_bar(t/ν); + label = "x_bar", color = :royalblue1, linewidth = 3, linestyle = :dash) + + xlims!(-ν, ν) + xlabel!("t") +end + # ╔═╡ 00000000-0000-0000-0000-000000000001 PLUTO_PROJECT_TOML_CONTENTS = """ [deps] @@ -151,7 +444,7 @@ PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" RadiiPolynomial = "f2081a94-c849-46b6-8dc9-07bb90ed72a9" [compat] -Plots = "~1.40.8" +Plots = "~1.40.9" PlutoTeachingTools = "~0.3.1" PlutoUI = "~0.7.60" RadiiPolynomial = "~0.8.13" @@ -163,7 +456,7 @@ PLUTO_MANIFEST_TOML_CONTENTS = """ julia_version = "1.11.1" manifest_format = "2.0" -project_hash = "b7ff9acf5880a7313b4c5c9d007db38c60827ca9" +project_hash = "ca5a11d9ce64f34ca8a3fc9b5d5457f0ee3dff36" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] @@ -220,9 +513,9 @@ version = "0.7.6" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "13951eb68769ad1cd460cdb2e64e5e95f1bf123d" +git-tree-sha1 = "c785dfb1b3bfddd1da557e861b919819b82bbe5b" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.27.0" +version = "3.27.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -326,15 +619,15 @@ version = "0.0.20230411+0" [[deps.ExceptionUnwrapping]] deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" +version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +git-tree-sha1 = "cc5231d52eb1771251fbd37171dbc408bcc8a1b6" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" +version = "2.6.4+0" [[deps.FFMPEG]] deps = ["FFMPEG_jll"] @@ -371,9 +664,9 @@ version = "1.3.7" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +git-tree-sha1 = "fa8e19f44de37e225aa0f1695bc223b05ed51fb4" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" +version = "2.13.3+0" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -407,15 +700,15 @@ 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 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" +git-tree-sha1 = "b36c7e110080ae48fdef61b0c31e6b17ada23b33" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.5+0" +version = "2.82.2+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" +version = "1.3.14+1" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -423,10 +716,10 @@ 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 = "bc3f416a965ae61968c20d0ad867556367f2817d" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "6c4d6a1babbbee6f283b3da64ac895f0a3bfbc96" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.9" +version = "1.10.11" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -482,9 +775,9 @@ version = "0.2.2" [[deps.JLFzf]] deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "39d64b09147620f5ffbf6b2d3255be3c901bec63" +git-tree-sha1 = "71b48d857e86bf7a1838c4736545699974ce79a2" uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.8" +version = "0.1.9" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -506,9 +799,9 @@ version = "3.0.4+0" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -616,9 +909,9 @@ version = "1.17.0+1" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +git-tree-sha1 = "84eef7acd508ee5b3e956a2ae51b05024181dee0" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] @@ -628,9 +921,9 @@ version = "4.7.0+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +git-tree-sha1 = "edbf5309f9ddf1cab25afc344b1e8150b7c832f9" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -665,9 +958,9 @@ version = "1.1.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -815,9 +1108,9 @@ version = "1.4.3" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "45470145863035bb124ca51b320ed35d071cc6c2" +git-tree-sha1 = "dae01f8c2e069a683d3a6e17bbae5070ab94786f" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.8" +version = "1.40.9" [deps.Plots.extensions] FileIOExt = "FileIO" @@ -945,9 +1238,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.RoundingEmulator]] git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" @@ -1127,9 +1420,9 @@ version = "1.31.0+0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "6a451c6f33a176150f315726eba8b92fbfdb9ae7" +git-tree-sha1 = "a2fccc6559132927d4c5dc183e3e01048c6dcbd6" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.4+0" +version = "2.13.5+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] @@ -1163,9 +1456,9 @@ version = "1.8.6+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "2b0e27d52ec9d8d483e2ca0b72b3cb1a8df5c27a" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.11+1" [[deps.Xorg_libXcursor_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] @@ -1175,9 +1468,9 @@ version = "1.2.0+4" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "02054ee01980c90297412e4c809c8694d7323af3" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.4+1" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -1217,9 +1510,9 @@ version = "0.9.11+0" [[deps.Xorg_libpthread_stubs_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +git-tree-sha1 = "fee57a273563e273f0f53275101cd41a8153517a" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.1.1+1" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] @@ -1283,9 +1576,9 @@ version = "2.39.0+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "b9ead2d2bdb27330545eb14234a2e300da61232e" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.5.0+1" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -1306,9 +1599,9 @@ version = "3.2.9+0" [[deps.fzf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "936081b536ae4aa65415d869287d43ef3cb576b2" +git-tree-sha1 = "6e50f145003024df4f5cb96c7fce79466741d601" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.53.0+0" +version = "0.56.3+0" [[deps.gperf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1410,20 +1703,55 @@ version = "1.4.1+1" # ╠═4dfe3d7f-aed8-487b-952c-8d8d502a7e46 # ╟─5ed309bf-dc26-4008-b199-f1de5078130e # ╟─3e086655-fc49-42bb-803e-27b82c7a7577 -# ╠═4e6473ec-02c6-4ed5-ab05-8f0086853313 -# ╠═abc4b3dd-518c-4239-87bb-e9688b34a8db +# ╟─86c84f47-a64b-43f9-a7e0-2eeb78b0d41c +# ╟─ab841d58-1385-4d5b-89aa-7df1e9667978 +# ╟─5fe08415-9185-4054-8dec-a657cfb4484b +# ╟─7cd532e8-f370-47e2-a2c1-3a5004cb8e8c +# ╟─2be11063-c9dd-4c36-af2b-2d80fad17fcb +# ╟─529d0a8a-c650-4b70-bd1c-bdd0621e06df +# ╟─42e2418b-55bc-4e17-8cb7-445f8eee2cc6 # ╟─c454f8a4-5553-494a-8d08-7c7d756805a0 +# ╟─0691e2f7-110c-42f7-95f6-056699578782 +# ╟─4ee023ac-e513-41f8-bfde-9d2daec71c57 +# ╠═4e6473ec-02c6-4ed5-ab05-8f0086853313 # ╠═d53d988f-da50-4839-aae6-d7bdac46d4ac +# ╟─9516114e-de9b-4705-9197-52737d050602 +# ╠═abc4b3dd-518c-4239-87bb-e9688b34a8db # ╠═7e5be3bf-ea25-4269-b05f-8263d5ede515 -# ╠═8c99fd06-bea2-462e-ba47-aaa9da05d740 +# ╟─e6b00d47-adf6-4935-b3c8-5b30ece1e2f7 +# ╟─3a6bae8b-933e-4384-81a8-e3d3bb5459c7 +# ╠═eef70ab3-fb71-4cfe-bca6-4ab0d578aca3 +# ╠═4a173aa3-1672-4a21-a9d0-e64a9336144a +# ╠═8ead7dda-965c-4540-a77d-d37ed4d8aea9 +# ╠═5266d1d6-45c5-497b-9d2a-22a6f4423efa +# ╠═fc74e5bf-ccfa-460b-a69c-29c50d9400e7 +# ╠═6edbe03d-77b5-4c8f-884a-fe008a061228 # ╟─25e484d2-e228-45a8-9a8f-53ec54326fd9 +# ╟─3395bf15-3e17-4039-bba1-839933a9f481 # ╟─641caade-ff17-4484-af95-988b92977bb5 -# ╠═c4254d37-06d5-4502-9136-717f9404a7ff -# ╠═84d0a349-66a1-45e4-887f-2bd19b5ccf4a +# ╟─d55fb36b-a0a8-41cd-a50f-9495ede7f2ad +# ╠═29ce245e-e838-42f1-a524-6f8059b0291b +# ╟─97e52e3e-fd1c-4dff-8102-fd8b509d45f6 +# ╟─43ec73f0-778b-4571-a04f-56832939194e +# ╠═9ec0cbd7-e74d-42b4-b911-9b164a0c7abc +# ╠═ddcbee38-f3ec-47ff-81fd-7cae07482929 +# ╠═bc8c3312-e7d8-413e-9c4c-95bf46ba802e +# ╠═5b83f453-55a7-4a38-8e74-aea6af53a837 +# ╟─2e0c0dc6-031a-46a8-9c37-27ffab80db2c +# ╠═10898ff1-2a1f-4369-8f3f-0f096eca6b75 # ╠═34152734-45ff-4dfe-bc25-3d60ba4c9d19 +# ╟─e3ae92f8-e06e-4931-b424-38c893001471 +# ╠═82b4d717-835e-4577-b4bd-410f5fecab41 # ╠═4bce0a13-ca2f-46c4-9ef3-12f07d525fbf -# ╟─031ab1e8-d479-4197-919c-20416f19aa9f +# ╟─765ee153-3a73-4f0e-81ff-a9852461e4ef +# ╠═09c77d32-4541-458e-86a0-e4fb3c324e93 +# ╠═b2d7aa0e-f9aa-4dc4-aff7-4474e9a6c9b1 +# ╠═031ab1e8-d479-4197-919c-20416f19aa9f +# ╟─7b38e714-75bf-4a56-87f1-f8db5db517e3 +# ╟─b53f9f0a-c4d8-4102-ac55-0bc4cea3cbdf # ╠═7fc34159-4b00-4e5e-b969-b4550b38ab53 -# ╟─a618d08d-3f68-4a84-ac24-f6fbd2d93818 +# ╠═67008bc9-20ae-435b-9228-438c022fa9f2 +# ╟─559d9d44-3501-4a7c-ad4c-f81d633f1a15 +# ╟─fb6bd3c5-6622-457f-b57f-bdd0d395d7ab # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002 diff --git a/generated_assets/ivp_lecture_notes_727c5350.plutostate b/generated_assets/ivp_lecture_notes_727c5350.plutostate new file mode 100644 index 0000000000000000000000000000000000000000..c595e07f3f8aaed26c590f8f26cd02d9cc239d8d GIT binary patch literal 275827 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 literal 0 HcmV?d00001 diff --git a/generated_assets/ivp_lecture_notes_cd2ce1aa.plutostate b/generated_assets/ivp_lecture_notes_cd2ce1aa.plutostate deleted file mode 100644 index baaee2e14c77839211ab46b19102384956b3009b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130235 zcmeFaTWlOznkLp`du@wvHU{uR1B+-@%{0|wCgXllmDD3q;zc4Qilj)2g)%EHCzv5d zW@KkXl9{S4qr0YOusfJtYiHX}HsGzEy7b(7b{n&v9b;iEYF><8c<0qMFvdXp@@g3H zn+>nO|3sX~%*dpaYIU`{fasZ`@|-x=|NQrJ{&W83YyZ(d^;sOB1gy(C0qgh?OaJC; zzxu_Ss=;(y57Y)zRlA`ZuHA54J8T#l^9@~7%`kAj|7YDE^BGlRCoR_RMQIlKS3ct{ zM!|fI{8^A(bkeNH-1Z4oOi$Ww_q#vocdL1S@6$mXwbO4r|DiYdhhMyD`;HR^vf1#M zt2T5~Wev~Ot%mEmPThok=!#}EJSQ|8hAG>orfH!Tc(VcXAB+GqPa`t{^WkSZ zaX(8QZ$AGC|FO?pzZG>(_md<}pU;5WcfWX3))d!MnB53;%fW~ptKle)-%w>;F+;@x zz{1%h9$U(J8ksrb?|ppy(+@wyGFYLn>5737c(UBknSlj!OsC=Lh9P^J?RthbV*w!z4k3yNj;EVO?Mim=_)`zu;$--{>7Vtp#_c„o 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

      AlFx2Z{xjItH#=3s%s> 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 diff --git a/generated_assets/manifolds_exercise1_0ff6ae7a.plutostate b/generated_assets/manifolds_exercise1_0ff6ae7a.plutostate deleted file mode 100644 index 0f90be5b7bc4822853e9df2fb09273bbfed45e76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3942 zcmdT{&2Jk;6mKgo_=eP5E~7N6TD5C?ZRe{=tX35VR8dt>R8S%&v%9n2Np@$pGqbTx zRVgi{hn}MHFCK%7dkF!1XH5;83OHxGoKyvgekauz$ExArVz4na3~~BsZ1CkB6w@#^!^jr%QObCJmSSo954mHG-y3#KyDJl z-_AR!*~b8I!T>`oG7WI68~5#*ST(u-`bbZ%XS|s7jJwH|whIVcKte}UA}%!bgqT)H z3luUAuA@uSH6*}8VkoBa`FziKsg!_`;bJm2Hr6v<9!_#wHs3S;aLr&ful>nl*iy0% zAaqfn^AX`Ss;pIO%$z-0&`DaDit)P_F1uGgDO{4mz?at|i6`N(0~>hX(1EIsg)M(S zpi0Cu{|{d;K{^BhF_1|Y(4O-(o3UZo0WGI>1S~RGBBJ-gJh@1@<<?;;zuVDK`D_Wp&&W-nN%hXK6gHffMF|Fnj!Z^B?L-0vR!>O}CM`w^*EEdzo z$mXyFNS&C5`V1maHFgaHWujfVC{6XIt9`^ip`&0~uN>0B^hf8kQKR8?t7CgZNHM?qs20G2+u9bG@-qnm|P+sOu z_~sT(2?zPK?zIcb?RifG&DTecjs|Q7`OqS$vEGEpY13=M+thE{y|x;UA9G9Pkxe0+hyIa{fcH`JeygpuO>OTpZ&VJxmPgu3w|}j`cd5NS z{71#_V=&(bZ*AVL0CcE6hE~D!c6h4Y7Sh&y0zKoh(MQ3k@TqMnfl{_SKm?NX<++XT zfBfOM+Y8SlNDb{4ErK=#hZOos;BIRb+C*)d#u}&e#dZeh<{t4)`|hDIbjY1V)V>R} z46{u~`|8kJ-+lbm-ewI?)25pHddGH?y;7)hMpLS_NTn1|^jh5|uC7$I(frRc)IW%v z-#BpOy2;&LMefLI_3uZ{6e+3Ab>-PsDc*Hqcxc(G$P8^?eJoRd{psim1OCz^1xCr% zR?)k$5=y}}RAFcczIbHrKjt!md6sxo9$v7G!QlnXbWFef@J;=|ye2hucQFw`7SsOa UjwN+3CQZn~586L)qcM{D9b$TehX4Qo diff --git a/generated_assets/manifolds_exercise1_dacbb802.plutostate b/generated_assets/manifolds_exercise1_dacbb802.plutostate new file mode 100644 index 0000000000000000000000000000000000000000..b8debf57a8727d7294170b3310f3ebf886c4f594 GIT binary patch literal 3942 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 HTmk(7pw5wN diff --git a/generated_assets/manifolds_exercise2_e625e451.plutostate b/generated_assets/manifolds_exercise2_e625e451.plutostate new file mode 100644 index 0000000000000000000000000000000000000000..6da5ae19213696b274104b6f85f96596149d321b GIT binary patch literal 3182 zcmdT`y>A>v6c6sWj@r%2O3B`x&v!mwVp|Cb1rner6d)OCGQ0bBcYO1)nVGeHAS5RQ zid0r85vlChj`J;(Ko_0MND&p%QP9xvCm502BR&P)S>8NWT#obo3pA@=J~5B%u>TGQ=dy3uSluHLwq zLk>}YovXyGZR%V~CX@aRmD?=0U#J56c#`ZYOR|I9!`?TWWPtX;AnMF1|;Z4@- z^=#$jXjvyr`W#|=!lSuWFDz@8q%W*nSg}6kERiR?#oSmH_fA$mtIXC$53UO)VB4Ll zrB?7;S}9A7!Seu*A8=|c!IX)`Q^rz}Jvlx2;g^%wXTQFefi?`c7Y)H33;jnaH6-Jh z5=oWnk{GDX5v~4afg6j;A@+R)86ez5NfI$b0}c^!5ik&@;xc)9?6u#{ew*b1XC}p6 z6)Zw%Nf&x%?Yrl$n=Z?;XSYFXrICuk@isJD&BtUSA4sUK4UddF|0WvXtw$w&t6`;w0+9;3zoiKD_2i{n_n6HOXqia z^OT5+?6wlHOh&M>wp&08D-h$? z8MW!d{WdTJ)6pR_(5No*JDFA?n4zHLW(#{pWA4eiyEFKzmMQ@?r=Xx~%Sv}^qaM?~ zlPqH)@-c#njgJZ`mE=qU#Z5_h5BCpy+~}})vUuv%8Q&i2-ICKnCAXI9)yYn^*}hZY zVCWJI5hz6Sn;*M33kLpu-0#1vg=Td_23a?`dY552Q?xCon?#zYzy86m-zpYSN>R3> zy$7QsD3qh`Fst`0Xu%LSGW02P>1Gj+n4S!O8XK>SFVw~O!ld|+GRIIMU<##9ds0~l zQ2&i*l@~LK678MqCZ0mWpswyrwOSotXfy-{>D0yC+}!xWR7X?}V!q>2F0#YOe{mSE zG>QZ~?|tQ+NvTZ06j6&{?(GXTE3(=mC-Ir{=igqeozu$MMAa(6FW_T`4)C7SZnVKs zgoAv~gHe3x|B>rC)JQZYhOJQo+S8$BOGuhbo`Y7xvWIQvu=J>X8RiR{APdjldxYNa z8W^k9VJKT+A6dafdqm5WykMgqmd*vBAs{Uyj7=l@s_Y&#)&}JI1=DiMh5ZRFrdQZSUVRH#qH~y51iCq5ZiM F`V;brk?sHh literal 0 HcmV?d00001 diff --git a/generated_assets/manifolds_lecture_notes_68e46875.plutostate b/generated_assets/manifolds_lecture_notes_06068aa0.plutostate similarity index 66% rename from generated_assets/manifolds_lecture_notes_68e46875.plutostate rename to generated_assets/manifolds_lecture_notes_06068aa0.plutostate index 4e81d573871421d6be7bc17559418a68a3738bbf..673b0b39a994815c3d3d3d4b05773260c834d680 100644 GIT binary patch delta 9963 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 LP9eiyqJsYdVJcDL delta 10106 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 t--6{6^qNO#lD@ diff --git a/generated_assets/manifolds_lecture_notes_4be04f1f.jl b/generated_assets/manifolds_lecture_notes_38b0714b.jl similarity index 99% rename from generated_assets/manifolds_lecture_notes_4be04f1f.jl rename to generated_assets/manifolds_lecture_notes_38b0714b.jl index b068ed8..5a42d50 100644 --- a/generated_assets/manifolds_lecture_notes_4be04f1f.jl +++ b/generated_assets/manifolds_lecture_notes_38b0714b.jl @@ -955,9 +955,9 @@ version = "0.21.4" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LaTeXStrings]] git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" @@ -1020,9 +1020,9 @@ version = "1.11.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -1152,9 +1152,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.RoundingEmulator]] git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" diff --git a/generated_assets/theory_manifolds_lecture_notes_31ef69bc.jl b/generated_assets/theory_manifolds_lecture_notes_69d5e312.jl similarity index 99% rename from generated_assets/theory_manifolds_lecture_notes_31ef69bc.jl rename to generated_assets/theory_manifolds_lecture_notes_69d5e312.jl index 5109b37..7c3794b 100644 --- a/generated_assets/theory_manifolds_lecture_notes_31ef69bc.jl +++ b/generated_assets/theory_manifolds_lecture_notes_69d5e312.jl @@ -475,9 +475,9 @@ version = "0.21.4" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.LaTeXStrings]] git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" @@ -540,9 +540,9 @@ version = "1.11.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -672,9 +672,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.RoundingEmulator]] git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" diff --git a/generated_assets/theory_manifolds_lecture_notes_30f27933.plutostate b/generated_assets/theory_manifolds_lecture_notes_91a322af.plutostate similarity index 80% rename from generated_assets/theory_manifolds_lecture_notes_30f27933.plutostate rename to generated_assets/theory_manifolds_lecture_notes_91a322af.plutostate index 137a49e3d99c2fbf770a4e9ff2bacb602b72eee1..9177f08f3821ca487d64b4838f80b48c46845865 100644 GIT binary patch delta 3739 zcmc)MYfKbZ6bEq5?!xkLd8}dqK?N4HCJfz0DjET;qQRm;)TZ>oGQfaSmtDdvM$@Lo zU~OxCKyUQgl3FP$%bPO7v<<}v_N6Eiq4-DVi#7jNfm9 zPn5bp=;YiU9|~7AyWIBIL>HNc4MKYaIDC}h=DU$GGC2O3A|>`-6e|T@QwxWcnVGE` zjhvZWM@-e=E~&W7l3}k>^FW%6iD(stGgi2Y&_60&htDctrMpsi!YKpeq)HOjBW{gU zfUA}8Ora_0Ps*66+=IedRS>OOFd}8$a1zd`l(}YS?-z3Jqe%)^I!F0f^D-P)=(Y(Ha&E96 zg#){ZtFB)xx$}phNvS*jM8@^3&SfkXGnpdsv#sT8iZGFz+c`|Gkeu2IgbM z&9VJ0IWz4ch5M37VDHyc#coEc=0xH>UBD_VMw@?@jEy&5c1?*ky;R}JW*E{bMF*bA zp_Lv$VeX78alcNI+g8B!^~z-PjtjB_=*k#{=N|%t%CcE<`_DibD04Ggf153n7=`O7 z{MR`WSbe=lgfZU>>y+Myg}$=Gg7qhVM|}hizQ13D(JHM0->ZURg`rPBxF8c6x1S(q z2P2(QCE^=klfp`5Qz5JjivA`SIHZY8&F=3cx9v9A6}p*1Y^jWkC+Cqn(SFBOVm?)p z--v}oh5L!QHY-#{M#fPJznDN)3DwxV21y<-gFaArdf72omHpv!i1YaMNu36B; zTFDworn&1gvz6<1b8~~wA06Q8#Sg4@mh6~$ooH3qhwvqT2%EuU>Drf5R@?dVb8l*< zUZe6z=kvFdj{K6fil(^v#9Sl}A67r#jtIVz+HcoxUU?Q%RaK=scE9w^?>tZG|jtnZ86}Q;Ax{ z+H7X%+^wv&V6)9;;ifN??)iZ+RyxOme!6e+Yse|#cAAUm+--CL!q_xIc zRAPVL+QJNf2y_>loA-LUT!RjeH{*79ILn)cZ>e3)jXP9u0*yXy=Tjz*YWPc&6Civu z8}_M4gGb@W5U9Y;K9J`a=$HM?kraG(5&g9r^ w+sJ-)!w{Emif5QyQw&YhaWO_ClOJPTYRrvUlF#JEnT$&kO!@iP^DZ3x7c8UUFaQ7m delta 3715 zcmd6qeM}Q~7{~ebTF_SKs)#b#G}{Wt$VTdZmX{`$A~Jxw-fP z#J9%V7b&T5Or6joFNGq4O5|n0M6>9e(>Q}$oZ0o1B};C}vA_7Ucj>2} z=jHdkYf-0HvD0heh=;T;gVgC%8Zw(SXh=hbmNboc_<{aHFs!-oC0P3EATkMu5?3J< zww6QoMGGu$!QqLc06x5Y9&)5OggC6W(6$r=rb`X*pdW|Qb}QJMafrL}1y}=v54RS; zk*+c7ryr3F*7VlG?v@JZ=&k^)8i)9v0xGJCxsh+r2Y=>bsj~v?LpYc_3gCQCJ+xfK z!OvL$_c|-!uigq+(P^=@UinxEDFfX$#bAn%8mdI^K=sHTw1-ak2&s@~R%B|%%C+?R ze3UMH_JQ(0ipD2z{H8(;0u)U(m!L9nxLmO)Jt|Hw_NP@D=#~IQ(oc$zpZNcL@zhon zB3}6P=Qq}@)*476CsDVFROb+buS^fSxzFs%Q*^mz#XPPY9qRCN`212bPH7(UzgUL)7%v!=s9jio}!AAd6syca1vNv`v*wWNaZek)}gcYzAlz*}3M)(@$?~Kr{xs`-A8kV`u`oQ-J=g z8I1%+?FLF?Mt>`Kp>OlJi zRLn3s=Z*tv@B%8KecO?ri1r;t<%n9fYUm*#wW|KK4t;wv~ zY*I0uHIt6xdZv>n&EzNM*Rsrd9Rx^yJUcTbQndu^bA6wy&M_Lzgvq4cWFX0AifBM` zSQQ|{W(t0WI`1Vm$?2stcvHng-#z4@!dRai2G8L_^mywmmKvGVAmU9Gbq4I>qOML> zVzXa8;RZr{(4Hyq5+k^HO|5cJ;xY^?e8ft|rC)oOH&k46n^Ustq8!Rj;)2{{*7Hy4 zcHT&l^Y&T}PwM_@W=1pS$uOaqh1!<=a1{mq$K)&7$!F^btzmNXX{v)9*y3@9YH7j+ zX{~Jai^VrRd8o@q{T1zUwF#m1;W6sO}G8mbC6V z+ts@vk9n(#Tz~A~Qk~N-hwY)kg1vKDq^qWwKhl}{m|>!9m+SefO8g7&aH*EQrNq47yv#OsU9A%F)|8}G z^l<^_)TIeL&a;BLc?WpoL|t#=960LRdZy}q-b|eI*;z?q_4V2OsjkK*4l0zdS7Oiq z`aKI2RUYDBwWw>e4;L`CM-DGn%P`TsZEWdfcDyd(7XQc>xzZcCxCdt{v7EehEOR9J zApgR<8ZBJBo>fW=d&E9HKp9iYpXd5~9v5%ODTl&XW+#J6*k)4UNkab6t_9;9P%72I z%v`UKVUnaz*~$-8PvuaOXo8EnVVI$2)yOdaj;9Y1_aBUhiY)%R&W>3eV6aCkF`;6D zt-mNf*=q_w3&{bbmbEjco0rQlaa%B3f4&X3wbrFfVNJVzqd3W<47uDU6A1Ib>b(?h z#n$q-bzKYRVrI87%#e8Ig#Pl7v5kkI0r>(Q!Mr?~h&+;g1MNy2=*$#3HfB&eZ=j;T E0S;o{i2wiq diff --git a/homework/algebraic_exercise1/index.html b/homework/algebraic_exercise1/index.html index a86308e..dab654d 100644 --- a/homework/algebraic_exercise1/index.html +++ b/homework/algebraic_exercise1/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    1. Welcome

    2. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    3. Module 2: algebraic equations

    4. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Sequence space properties

      - + diff --git a/homework/algebraic_exercise2/index.html b/homework/algebraic_exercise2/index.html index c59e69a..9ac1a9a 100644 --- a/homework/algebraic_exercise2/index.html +++ b/homework/algebraic_exercise2/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    5. Welcome

    6. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    7. Module 2: algebraic equations

    8. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Inverse function for infinite sequences

      - + diff --git a/homework/algebraic_exercise3/index.html b/homework/algebraic_exercise3/index.html index 9f131f3..c9867d3 100644 --- a/homework/algebraic_exercise3/index.html +++ b/homework/algebraic_exercise3/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    9. Welcome

    10. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    11. Module 2: algebraic equations

    12. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Radius of convergence

      - + diff --git a/homework/algebraic_exercise4/index.html b/homework/algebraic_exercise4/index.html index 75ff672..f01cf63 100644 --- a/homework/algebraic_exercise4/index.html +++ b/homework/algebraic_exercise4/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    13. Welcome

    14. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    15. Module 2: algebraic equations

    16. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Roots

      - + diff --git a/homework/finite_dimension_exercise1/index.html b/homework/finite_dimension_exercise1/index.html index 9e12d88..6fdf824 100644 --- a/homework/finite_dimension_exercise1/index.html +++ b/homework/finite_dimension_exercise1/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    17. Welcome

    18. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    19. Module 2: algebraic equations

    20. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Operator norms

      - + diff --git a/homework/finite_dimension_exercise2/index.html b/homework/finite_dimension_exercise2/index.html index 93b41e3..825bcb3 100644 --- a/homework/finite_dimension_exercise2/index.html +++ b/homework/finite_dimension_exercise2/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    21. Welcome

    22. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    23. Module 2: algebraic equations

    24. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Rigorous computation of an eigenpair

      - + diff --git a/homework/finite_dimension_exercise3/index.html b/homework/finite_dimension_exercise3/index.html index f084385..087956d 100644 --- a/homework/finite_dimension_exercise3/index.html +++ b/homework/finite_dimension_exercise3/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    25. Welcome

    26. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    27. Module 2: algebraic equations

    28. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Rigorous inverse of a matrix

      - + diff --git a/homework/finite_dimension_exercise4/index.html b/homework/finite_dimension_exercise4/index.html index 643630d..2210c6d 100644 --- a/homework/finite_dimension_exercise4/index.html +++ b/homework/finite_dimension_exercise4/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    29. Welcome

    30. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    31. Module 2: algebraic equations

    32. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Rigorous control of the entire spectrum

      - + diff --git a/homework/finite_dimension_exercise5/index.html b/homework/finite_dimension_exercise5/index.html index 9ffe320..3e10a3c 100644 --- a/homework/finite_dimension_exercise5/index.html +++ b/homework/finite_dimension_exercise5/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    33. Welcome

    34. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    35. Module 2: algebraic equations

    36. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Toward rigorous continuation

      - + diff --git a/homework/manifolds_exercise1/index.html b/homework/manifolds_exercise1/index.html index fefe4c0..68e20d9 100644 --- a/homework/manifolds_exercise1/index.html +++ b/homework/manifolds_exercise1/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    37. Welcome

    38. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    39. Module 2: algebraic equations

    40. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Stable and unstable manifolds

      - + diff --git a/homework/manifolds_exercise2/index.html b/homework/manifolds_exercise2/index.html index 795a5b2..e920b84 100644 --- a/homework/manifolds_exercise2/index.html +++ b/homework/manifolds_exercise2/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    41. Welcome

    42. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    43. Module 2: algebraic equations

    44. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      2D manifold

      - + diff --git a/index.html b/index.html index 65ba9ec..269dd75 100644 --- a/index.html +++ b/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    45. Welcome

    46. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    47. Module 2: algebraic equations

    48. diff --git a/installation/index.html b/installation/index.html index fb5131d..9d89fe2 100644 --- a/installation/index.html +++ b/installation/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis
    49. Welcome

    50. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    51. Module 2: algebraic equations

    52. diff --git a/mod1/finite_dimension_lecture_notes/index.html b/mod1/finite_dimension_lecture_notes/index.html index 883650e..3134749 100644 --- a/mod1/finite_dimension_lecture_notes/index.html +++ b/mod1/finite_dimension_lecture_notes/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    53. Welcome

    54. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    55. Module 2: algebraic equations

    56. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Finite-dimensional problems

      - + diff --git a/mod2/inverse_lecture_notes/index.html b/mod2/inverse_lecture_notes/index.html index 715a1f8..e23e278 100644 --- a/mod2/inverse_lecture_notes/index.html +++ b/mod2/inverse_lecture_notes/index.html @@ -1,7 +1,7 @@ -Inverse function — Computer-assisted proofs in nonlinear analysis +Algebraic equations — Computer-assisted proofs in nonlinear analysis @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    57. Welcome

    58. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    59. Module 2: algebraic equations

    60. @@ -99,10 +99,10 @@

      Module 5: invariant manifolds of equilibria

      -

      Inverse function

      +

      Algebraic equations

      - +
      diff --git a/mod3/ivp_lecture_notes/index.html b/mod3/ivp_lecture_notes/index.html index 8c86629..cacbd27 100644 --- a/mod3/ivp_lecture_notes/index.html +++ b/mod3/ivp_lecture_notes/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    61. Welcome

    62. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    63. Module 2: algebraic equations

    64. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Taylor integration

      - + diff --git a/mod4/fourier_lecture_notes/index.html b/mod4/fourier_lecture_notes/index.html index a4babc8..ed90bb4 100644 --- a/mod4/fourier_lecture_notes/index.html +++ b/mod4/fourier_lecture_notes/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    65. Welcome

    66. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    67. Module 2: algebraic equations

    68. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Periodic orbits

      - + diff --git a/mod5/manifolds_lecture_notes/index.html b/mod5/manifolds_lecture_notes/index.html index e87a4eb..06f4c0a 100644 --- a/mod5/manifolds_lecture_notes/index.html +++ b/mod5/manifolds_lecture_notes/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    69. Welcome

    70. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    71. Module 2: algebraic equations

    72. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Lorenz system

      - + diff --git a/mod5/theory_manifolds_lecture_notes/index.html b/mod5/theory_manifolds_lecture_notes/index.html index 296ea88..4656e76 100644 --- a/mod5/theory_manifolds_lecture_notes/index.html +++ b/mod5/theory_manifolds_lecture_notes/index.html @@ -59,7 +59,7 @@

      Computer-assisted proofs in nonlinear analysis<
    73. Welcome

    74. @@ -71,7 +71,7 @@

      Module 1: finite-dimensional problems

    75. Module 2: algebraic equations

    76. @@ -102,7 +102,7 @@

      Module 5: invariant manifolds of equilibria

      Parameterization method

      - + diff --git a/pluto_export.json b/pluto_export.json index bbb8c84..1805d3f 100644 --- a/pluto_export.json +++ b/pluto_export.json @@ -1 +1 @@ -{"notebooks":{"homework/finite_dimension_exercise1/":{"id":"homework/finite_dimension_exercise1/","hash":"EDS2xkZXuNo0wbB-2OtcH8tVrKzYvED_e1zjdmGGjW0","statefile_path":"./generated_assets/finite_dimension_exercise1_e0458cc5.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise1_c6b63410.jl","html_path":"homework/finite_dimension_exercise1/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise1_c6b63410.jl","homework_number":1,"order":1,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise1_e0458cc5.plutostate","title":"Operator norms","tags":["module1","homeworks"]}},"mod2/inverse_lecture_notes/":{"id":"mod2/inverse_lecture_notes/","hash":"UeDAMmOZlVKz4atykQkqkyCe0Ib_Yrc9Y6mtI0lQHoc","statefile_path":"./generated_assets/inverse_lecture_notes_24c12318.plutostate","notebookfile_path":"./generated_assets/inverse_lecture_notes_32c0e051.jl","html_path":"mod2/inverse_lecture_notes/index.html","frontmatter":{"chapter":2,"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/inverse_lecture_notes_32c0e051.jl","order":0.5,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/inverse_lecture_notes_24c12318.plutostate","title":"Inverse function","tags":["lecture","module2"]}},"homework/manifolds_exercise2/":{"id":"homework/manifolds_exercise2/","hash":"iq_gHiwsVsq4LlhdBGx8eSp6TQEDS0ocfZ3x-wtbjjc","statefile_path":"./generated_assets/manifolds_exercise2_64d68034.plutostate","notebookfile_path":"./generated_assets/manifolds_exercise2_1ee0af8a.jl","html_path":"homework/manifolds_exercise2/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/manifolds_exercise2_1ee0af8a.jl","homework_number":2,"order":2,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/manifolds_exercise2_64d68034.plutostate","title":"2D manifold","tags":["module5","homeworks"]}},"homework/finite_dimension_exercise5/":{"id":"homework/finite_dimension_exercise5/","hash":"EXe5UkRREIR12AMdjlBzKTJPINiHkGhukzXGT2gpMIw","statefile_path":"./generated_assets/finite_dimension_exercise5_bab7415c.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise5_52b97711.jl","html_path":"homework/finite_dimension_exercise5/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise5_52b97711.jl","homework_number":5,"order":5,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise5_bab7415c.plutostate","title":"Toward rigorous continuation","tags":["module1","homeworks"]}},"mod4/fourier_lecture_notes/":{"id":"mod4/fourier_lecture_notes/","hash":"2SS_cXrAHnfsRlRMiAG-77He2j_JVxS96bo3kZExSXk","statefile_path":"./generated_assets/fourier_lecture_notes_aad0d178.plutostate","notebookfile_path":"./generated_assets/fourier_lecture_notes_71bf24d9.jl","html_path":"mod4/fourier_lecture_notes/index.html","frontmatter":{"chapter":4,"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/fourier_lecture_notes_71bf24d9.jl","order":1,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/fourier_lecture_notes_aad0d178.plutostate","title":"Periodic orbits","tags":["lecture","module4"]}},"homework/finite_dimension_exercise2/":{"id":"homework/finite_dimension_exercise2/","hash":"3lf75Q2Br2b45zD8hutLZpVAFzcxRasGlWrBxRZtaBU","statefile_path":"./generated_assets/finite_dimension_exercise2_1a7568c0.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise2_e5fb57de.jl","html_path":"homework/finite_dimension_exercise2/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise2_e5fb57de.jl","homework_number":2,"order":2,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise2_1a7568c0.plutostate","title":"Rigorous computation of an eigenpair","tags":["module1","homeworks"]}},"mod3/ivp_lecture_notes/":{"id":"mod3/ivp_lecture_notes/","hash":"fjeIyTQf_c_ZgJhOyrLt9BS4-2MrmqEYFNv6KA0LA9o","statefile_path":"./generated_assets/ivp_lecture_notes_cd2ce1aa.plutostate","notebookfile_path":"./generated_assets/ivp_lecture_notes_c988377e.jl","html_path":"mod3/ivp_lecture_notes/index.html","frontmatter":{"chapter":3,"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/ivp_lecture_notes_c988377e.jl","order":1,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/ivp_lecture_notes_cd2ce1aa.plutostate","title":"Taylor integration","tags":["lecture","module3"]}},"mod1/finite_dimension_lecture_notes/":{"id":"mod1/finite_dimension_lecture_notes/","hash":"mDz6nnWgSEHV1EGEf7F1_xbpTa7KQQIg7w-puxAJ0GM","statefile_path":"./generated_assets/finite_dimension_lecture_notes_387bce5f.plutostate","notebookfile_path":"./generated_assets/finite_dimension_lecture_notes_9efa3c98.jl","html_path":"mod1/finite_dimension_lecture_notes/index.html","frontmatter":{"chapter":1,"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_lecture_notes_9efa3c98.jl","order":0.5,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_lecture_notes_387bce5f.plutostate","title":"Finite-dimensional problems","tags":["lecture","module1"]}},"homework/finite_dimension_exercise4/":{"id":"homework/finite_dimension_exercise4/","hash":"D2sjW1DdiQWMHvkw7PXjQYRtxJpi4Gk9ljW4ALVT2eg","statefile_path":"./generated_assets/finite_dimension_exercise4_c3766b47.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise4_5b236b0f.jl","html_path":"homework/finite_dimension_exercise4/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise4_5b236b0f.jl","homework_number":4,"order":4,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise4_c3766b47.plutostate","title":"Rigorous control of the entire spectrum","tags":["module1","homeworks"]}},"homework/algebraic_exercise2/":{"id":"homework/algebraic_exercise2/","hash":"NfSSCb7uKaJ4UYlHNv06I6p50VBSJA7hZxBRfPGBWEE","statefile_path":"./generated_assets/algebraic_exercise2_5c8a0894.plutostate","notebookfile_path":"./generated_assets/algebraic_exercise2_0992f435.jl","html_path":"homework/algebraic_exercise2/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/algebraic_exercise2_0992f435.jl","homework_number":2,"order":2,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/algebraic_exercise2_5c8a0894.plutostate","title":"Inverse function for infinite sequences","tags":["module2","homeworks"]}},"homework/manifolds_exercise1/":{"id":"homework/manifolds_exercise1/","hash":"qWnnKJlIVAqq5YX2dP0NQ2zfFUaRmAAQxh5pYs-N7Bc","statefile_path":"./generated_assets/manifolds_exercise1_0ff6ae7a.plutostate","notebookfile_path":"./generated_assets/manifolds_exercise1_28e769a9.jl","html_path":"homework/manifolds_exercise1/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/manifolds_exercise1_28e769a9.jl","homework_number":1,"order":1,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/manifolds_exercise1_0ff6ae7a.plutostate","title":"Stable and unstable manifolds","tags":["module5","homeworks"]}},"mod5/manifolds_lecture_notes/":{"id":"mod5/manifolds_lecture_notes/","hash":"H0_gS29B4m8bSPwEu4qnUTd2c5nI66v2_7lXAmvytEA","statefile_path":"./generated_assets/manifolds_lecture_notes_68e46875.plutostate","notebookfile_path":"./generated_assets/manifolds_lecture_notes_4be04f1f.jl","html_path":"mod5/manifolds_lecture_notes/index.html","frontmatter":{"chapter":5,"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/manifolds_lecture_notes_4be04f1f.jl","section":2,"order":0.6,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/manifolds_lecture_notes_68e46875.plutostate","title":"Lorenz system","tags":["lecture","module5"]}},"mod5/theory_manifolds_lecture_notes/":{"id":"mod5/theory_manifolds_lecture_notes/","hash":"vGnvMQATVCgnI77LJ9RFrqsLAPP_y2hHjgY5JpHE4t0","statefile_path":"./generated_assets/theory_manifolds_lecture_notes_30f27933.plutostate","notebookfile_path":"./generated_assets/theory_manifolds_lecture_notes_31ef69bc.jl","html_path":"mod5/theory_manifolds_lecture_notes/index.html","frontmatter":{"chapter":5,"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/theory_manifolds_lecture_notes_31ef69bc.jl","section":1,"order":0.5,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/theory_manifolds_lecture_notes_30f27933.plutostate","title":"Parameterization method","tags":["lecture","module5"]}},"homework/finite_dimension_exercise3/":{"id":"homework/finite_dimension_exercise3/","hash":"sVRDsv4M3L-wg2twEscecved3IAMCIZOSR-YpzbDWW4","statefile_path":"./generated_assets/finite_dimension_exercise3_e04cbd1e.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise3_b24354b1.jl","html_path":"homework/finite_dimension_exercise3/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise3_b24354b1.jl","homework_number":3,"order":3,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/finite_dimension_exercise3_e04cbd1e.plutostate","title":"Rigorous inverse of a matrix","tags":["module1","homeworks"]}},"cheat_sheet/":{"id":"cheat_sheet/","hash":"mHFT-Mccu9RDb0LP0JUn7Rgq3dBj44WT9hkTXkFB4o8","statefile_path":"./generated_assets/cheat_sheet_3be14bf4.plutostate","notebookfile_path":"./generated_assets/cheat_sheet_f8537198.jl","html_path":"cheat_sheet/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/cheat_sheet_f8537198.jl","order":2,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/cheat_sheet_3be14bf4.plutostate","title":"Cheat sheet","tags":["welcome"]}},"homework/algebraic_exercise3/":{"id":"homework/algebraic_exercise3/","hash":"rYKDWZpf-6StciC8ZUzYP-flFwnLCEgz6Y9Z_y8x4Rk","statefile_path":"./generated_assets/algebraic_exercise3_dfcfe85e.plutostate","notebookfile_path":"./generated_assets/algebraic_exercise3_598382ad.jl","html_path":"homework/algebraic_exercise3/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/algebraic_exercise3_598382ad.jl","homework_number":3,"order":3,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/algebraic_exercise3_dfcfe85e.plutostate","title":"Radius of convergence","tags":["module2","homeworks"]}},"homework/algebraic_exercise4/":{"id":"homework/algebraic_exercise4/","hash":"HMCyBl6scTRPHo1vZFpXkR_h57YOMwTA8J_0fr-DEEM","statefile_path":"./generated_assets/algebraic_exercise4_3934de66.plutostate","notebookfile_path":"./generated_assets/algebraic_exercise4_06b2c01c.jl","html_path":"homework/algebraic_exercise4/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/algebraic_exercise4_06b2c01c.jl","homework_number":4,"order":4,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/algebraic_exercise4_3934de66.plutostate","title":"Roots","tags":["module2","homeworks"]}},"homework/algebraic_exercise1/":{"id":"homework/algebraic_exercise1/","hash":"gnKyvRtmAyR87IsOjAHRhr6d3wUMkk25PX0WNSRDM_c","statefile_path":"./generated_assets/algebraic_exercise1_3399836e.plutostate","notebookfile_path":"./generated_assets/algebraic_exercise1_bdb27282.jl","html_path":"homework/algebraic_exercise1/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/algebraic_exercise1_bdb27282.jl","homework_number":1,"order":1,"plutopages_statefile_url":"++magic#root#url~4XuYLWzDyxmTg2Gkv0EpRj++/generated_assets/algebraic_exercise1_3399836e.plutostate","title":"Sequence space properties","tags":["module2","homeworks"]}}},"pluto_version":"0.19.47","julia_version":"1.10.6","format_version":"1","title":null,"description":null,"collections":null,"binder_url":"https://mybinder.org/v2/gh/fonsp/pluto-on-binder/v0.19.47","slider_server_url":"."} \ No newline at end of file +{"notebooks":{"homework/finite_dimension_exercise1/":{"id":"homework/finite_dimension_exercise1/","hash":"EDS2xkZXuNo0wbB-2OtcH8tVrKzYvED_e1zjdmGGjW0","statefile_path":"./generated_assets/finite_dimension_exercise1_71195e01.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise1_c6b63410.jl","html_path":"homework/finite_dimension_exercise1/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise1_c6b63410.jl","homework_number":1,"order":1,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise1_71195e01.plutostate","title":"Operator norms","tags":["module1","homeworks"]}},"mod2/inverse_lecture_notes/":{"id":"mod2/inverse_lecture_notes/","hash":"IqZtnEUn-41CGE1wtwQ2S6V9iub0rxP7c2j2j1DofL8","statefile_path":"./generated_assets/inverse_lecture_notes_57b370b0.plutostate","notebookfile_path":"./generated_assets/inverse_lecture_notes_9c6da622.jl","html_path":"mod2/inverse_lecture_notes/index.html","frontmatter":{"chapter":2,"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/inverse_lecture_notes_9c6da622.jl","order":0.5,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/inverse_lecture_notes_57b370b0.plutostate","title":"Algebraic equations","tags":["lecture","module2"]}},"homework/manifolds_exercise2/":{"id":"homework/manifolds_exercise2/","hash":"iq_gHiwsVsq4LlhdBGx8eSp6TQEDS0ocfZ3x-wtbjjc","statefile_path":"./generated_assets/manifolds_exercise2_e625e451.plutostate","notebookfile_path":"./generated_assets/manifolds_exercise2_1ee0af8a.jl","html_path":"homework/manifolds_exercise2/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/manifolds_exercise2_1ee0af8a.jl","homework_number":2,"order":2,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/manifolds_exercise2_e625e451.plutostate","title":"2D manifold","tags":["module5","homeworks"]}},"cheatsheets/":{"id":"cheatsheets/","hash":"sTsQNt0rUflXTuscUxL0HwV7_w22JOSqrLcXDGDM61Q","statefile_path":"./generated_assets/cheatsheets_1ae6b137.plutostate","notebookfile_path":"./generated_assets/cheatsheets_36103bb1.jl","html_path":"cheatsheets/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/cheatsheets_36103bb1.jl","order":2,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/cheatsheets_1ae6b137.plutostate","title":"Cheatsheets","tags":["welcome"]}},"homework/finite_dimension_exercise5/":{"id":"homework/finite_dimension_exercise5/","hash":"EXe5UkRREIR12AMdjlBzKTJPINiHkGhukzXGT2gpMIw","statefile_path":"./generated_assets/finite_dimension_exercise5_20281c31.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise5_52b97711.jl","html_path":"homework/finite_dimension_exercise5/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise5_52b97711.jl","homework_number":5,"order":5,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise5_20281c31.plutostate","title":"Toward rigorous continuation","tags":["module1","homeworks"]}},"mod4/fourier_lecture_notes/":{"id":"mod4/fourier_lecture_notes/","hash":"G3vxBFc0Mif0rmgBkZLOrF0pFN6Nupwu6SeARzVwD6A","statefile_path":"./generated_assets/fourier_lecture_notes_73861375.plutostate","notebookfile_path":"./generated_assets/fourier_lecture_notes_04f17b1b.jl","html_path":"mod4/fourier_lecture_notes/index.html","frontmatter":{"chapter":4,"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/fourier_lecture_notes_04f17b1b.jl","order":1,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/fourier_lecture_notes_73861375.plutostate","title":"Periodic orbits","tags":["lecture","module4"]}},"homework/finite_dimension_exercise2/":{"id":"homework/finite_dimension_exercise2/","hash":"drsxNbc3n5DpyTZyqmGg9xZQ8Rjc41sJhLHQvQ0iLq8","statefile_path":"./generated_assets/finite_dimension_exercise2_bca74ccc.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise2_3531bb76.jl","html_path":"homework/finite_dimension_exercise2/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise2_3531bb76.jl","homework_number":2,"order":2,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise2_bca74ccc.plutostate","title":"Rigorous computation of an eigenpair","tags":["module1","homeworks"]}},"mod3/ivp_lecture_notes/":{"id":"mod3/ivp_lecture_notes/","hash":"_m8oGBzyrQ0QHzU1O3jIgt13ng9ATi-rKmvn_y76szo","statefile_path":"./generated_assets/ivp_lecture_notes_727c5350.plutostate","notebookfile_path":"./generated_assets/ivp_lecture_notes_18286ffe.jl","html_path":"mod3/ivp_lecture_notes/index.html","frontmatter":{"chapter":3,"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/ivp_lecture_notes_18286ffe.jl","order":1,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/ivp_lecture_notes_727c5350.plutostate","title":"Taylor integration","tags":["lecture","module3"]}},"mod1/finite_dimension_lecture_notes/":{"id":"mod1/finite_dimension_lecture_notes/","hash":"AuHkiWaNCePlB6wg6kvIVb7N-u2VMIfhhq1PPh9KBGs","statefile_path":"./generated_assets/finite_dimension_lecture_notes_8ba333e8.plutostate","notebookfile_path":"./generated_assets/finite_dimension_lecture_notes_89e4e102.jl","html_path":"mod1/finite_dimension_lecture_notes/index.html","frontmatter":{"chapter":1,"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_lecture_notes_89e4e102.jl","order":0.5,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_lecture_notes_8ba333e8.plutostate","title":"Finite-dimensional problems","tags":["lecture","module1"]}},"homework/finite_dimension_exercise4/":{"id":"homework/finite_dimension_exercise4/","hash":"XpDa8V2OQ1cFEgcBo0bn988CWZlZghgh5_0-qnweh1I","statefile_path":"./generated_assets/finite_dimension_exercise4_56a0be01.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise4_f1da905e.jl","html_path":"homework/finite_dimension_exercise4/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise4_f1da905e.jl","homework_number":4,"order":4,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise4_56a0be01.plutostate","title":"Rigorous control of the entire spectrum","tags":["module1","homeworks"]}},"homework/algebraic_exercise2/":{"id":"homework/algebraic_exercise2/","hash":"n91qvTwcnRtFEUdPkSMBCEXuKxINlpMGKA2lZQe0jYk","statefile_path":"./generated_assets/algebraic_exercise2_bd5de5de.plutostate","notebookfile_path":"./generated_assets/algebraic_exercise2_bd6add9f.jl","html_path":"homework/algebraic_exercise2/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/algebraic_exercise2_bd6add9f.jl","homework_number":2,"order":2,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/algebraic_exercise2_bd5de5de.plutostate","title":"Inverse function for infinite sequences","tags":["module2","homeworks"]}},"homework/manifolds_exercise1/":{"id":"homework/manifolds_exercise1/","hash":"qWnnKJlIVAqq5YX2dP0NQ2zfFUaRmAAQxh5pYs-N7Bc","statefile_path":"./generated_assets/manifolds_exercise1_dacbb802.plutostate","notebookfile_path":"./generated_assets/manifolds_exercise1_28e769a9.jl","html_path":"homework/manifolds_exercise1/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/manifolds_exercise1_28e769a9.jl","homework_number":1,"order":1,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/manifolds_exercise1_dacbb802.plutostate","title":"Stable and unstable manifolds","tags":["module5","homeworks"]}},"mod5/manifolds_lecture_notes/":{"id":"mod5/manifolds_lecture_notes/","hash":"S3GwOAUDv0ySSRAZyQxcR9AXYuuSpFkb4YJrBPTwy98","statefile_path":"./generated_assets/manifolds_lecture_notes_06068aa0.plutostate","notebookfile_path":"./generated_assets/manifolds_lecture_notes_38b0714b.jl","html_path":"mod5/manifolds_lecture_notes/index.html","frontmatter":{"chapter":5,"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/manifolds_lecture_notes_38b0714b.jl","section":2,"order":0.6,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/manifolds_lecture_notes_06068aa0.plutostate","title":"Lorenz system","tags":["lecture","module5"]}},"mod5/theory_manifolds_lecture_notes/":{"id":"mod5/theory_manifolds_lecture_notes/","hash":"EuPVaeGObOtVYelPzNipBxe5GA24ZoyiNUjnlTcV02k","statefile_path":"./generated_assets/theory_manifolds_lecture_notes_91a322af.plutostate","notebookfile_path":"./generated_assets/theory_manifolds_lecture_notes_69d5e312.jl","html_path":"mod5/theory_manifolds_lecture_notes/index.html","frontmatter":{"chapter":5,"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/theory_manifolds_lecture_notes_69d5e312.jl","section":1,"order":0.5,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/theory_manifolds_lecture_notes_91a322af.plutostate","title":"Parameterization method","tags":["lecture","module5"]}},"homework/finite_dimension_exercise3/":{"id":"homework/finite_dimension_exercise3/","hash":"W5-FqacULnOrwcizDnQ1Yz-ziSwTcruL6qihaMeg1Ig","statefile_path":"./generated_assets/finite_dimension_exercise3_cc9650b2.plutostate","notebookfile_path":"./generated_assets/finite_dimension_exercise3_a9859f5b.jl","html_path":"homework/finite_dimension_exercise3/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise3_a9859f5b.jl","homework_number":3,"order":3,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/finite_dimension_exercise3_cc9650b2.plutostate","title":"Rigorous inverse of a matrix","tags":["module1","homeworks"]}},"homework/algebraic_exercise3/":{"id":"homework/algebraic_exercise3/","hash":"gfdTK1ToghOHYXJOouPSa-6EmvIhR5EiDhACluulBbk","statefile_path":"./generated_assets/algebraic_exercise3_1636fb20.plutostate","notebookfile_path":"./generated_assets/algebraic_exercise3_2b53f781.jl","html_path":"homework/algebraic_exercise3/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/algebraic_exercise3_2b53f781.jl","homework_number":3,"order":3,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/algebraic_exercise3_1636fb20.plutostate","title":"Radius of convergence","tags":["module2","homeworks"]}},"homework/algebraic_exercise4/":{"id":"homework/algebraic_exercise4/","hash":"HMCyBl6scTRPHo1vZFpXkR_h57YOMwTA8J_0fr-DEEM","statefile_path":"./generated_assets/algebraic_exercise4_513c6709.plutostate","notebookfile_path":"./generated_assets/algebraic_exercise4_06b2c01c.jl","html_path":"homework/algebraic_exercise4/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/algebraic_exercise4_06b2c01c.jl","homework_number":4,"order":4,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/algebraic_exercise4_513c6709.plutostate","title":"Roots","tags":["module2","homeworks"]}},"homework/algebraic_exercise1/":{"id":"homework/algebraic_exercise1/","hash":"gnKyvRtmAyR87IsOjAHRhr6d3wUMkk25PX0WNSRDM_c","statefile_path":"./generated_assets/algebraic_exercise1_59ba77c2.plutostate","notebookfile_path":"./generated_assets/algebraic_exercise1_bdb27282.jl","html_path":"homework/algebraic_exercise1/index.html","frontmatter":{"plutopages_notebook_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/algebraic_exercise1_bdb27282.jl","homework_number":1,"order":1,"plutopages_statefile_url":"++magic#root#url~4yTVR8kYJ8kEgNyhBpYPnp++/generated_assets/algebraic_exercise1_59ba77c2.plutostate","title":"Sequence space properties","tags":["module2","homeworks"]}}},"pluto_version":"0.19.47","julia_version":"1.10.6","format_version":"1","title":null,"description":null,"collections":null,"binder_url":"https://mybinder.org/v2/gh/fonsp/pluto-on-binder/v0.19.47","slider_server_url":"."} \ No newline at end of file diff --git a/pp_search_data.json b/pp_search_data.json index fc4569f..6834fd0 100644 --- a/pp_search_data.json +++ b/pp_search_data.json @@ -1 +1 @@ -[{"url":"cheat_sheet/","title":"Cheat sheet","tags":["welcome"],"text":" A Pluto.jl notebook v0.19.47 frontmatter order 2 title \"Cheat sheet\" tags \"welcome\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using Plots md\" Julia\" β 2.0 typed by `\\beta tab ` v₂⁵ 1.0 typed by `v\\ 2 tab \\^5 tab ` 1.0, 2.0 1.0 2.0 1.0 2.0, 3.0 zeros 2 zeros 2, 2 zeros Complex Float64 , 2, 2 1.0 2.0 3.0 4.0 inv 1.0 2.0 3.0 4.0 md\" LinearAlgebra\" using LinearAlgebra norm 1.0 2.0 , 1 opnorm 1.0 0.0 2.0 2.0 , 1 norm interval 1.0, 2.0 , 1 I I zeros 2, 2 I zeros 3, 3 md\" IntervalArithmetic\" using IntervalArithmetic interval 1.0, 2.0 interval 1.0 2.0 3.0 4.0 md\" RadiiPolynomial\" using RadiiPolynomial x Sequence Taylor 1 , 1.0, 1.0 1 t x x 1 t ^2 1 2t t^2 Derivative 1 Derivative 1 x Multiplication x project Multiplication x , Taylor 5 , Taylor 5 y Sequence Fourier 1, 1.0 , im 0.5, 0.0, im 0.5 sin t plot LinRange π, π, 101 , t real y t interval x norm x, 1 ν interval 1.1 norm interval x , Ell1 GeometricWeight ν "},{"url":".","title":"index","tags":["homepage"],"text":"Computer-assisted proofs in nonlinear analysis"},{"url":"installation/","title":"Software installation","tags":["welcome"],"text":"Step 1: Install Julia Download the current stable release of Julia on https://julialang.org/downloads , using the correct version for your operating system (Linux x86, Mac, Windows, etc). Step 2: Install RadiiPolynomial Next we will install RadiiPolynomial , the library for computer-assisted proofs that we will be using during the course. RadiiPolynomial is a Julia package designed for computer-assisted proofs relying on spectral methods and the contraction mapping theorem. Open the Julia REPL . This is the command-line interface to Julia: there you type a command, and when you press ENTER, it runs, and you see the result. To install RadiiPolynomial, we want to run a package manager command . To switch from Julia mode to Pkg mode , type ] (closing square bracket) at the julia> prompt: \n julia> ]\n\n (@v 1.10 ) pkg> \n The line turns blue and the prompt changes to pkg> , telling you that you are now in package manager mode . This mode allows you to do operations on packages (also called libraries). Run the following (case sensitive) command to add (install) the package to your system by downloading it from the internet (you should only need to do this once for each installation of Julia): \n (@v 1.10 ) pkg> add RadiiPolynomial\n \n \nconst run = f => f();\nrun(async () => {\nconst versions = await (await fetch(`https://julialang-s3.julialang.org/bin/versions.json`)).json()\nconst sortby = v => v.split(\"-\")[0].split(\".\").map(parseFloat).reduce((a,b) => a*10000 + b)\nconst version_names = Object.keys(versions).sort((a,b) => sortby(a) - sortby(b)).reverse()\nconst stable = version_names.find(v => versions[v].stable)\nconsole.log({stable})\nconst pkg_stable = /\\d+\\.\\d+/.exec(stable)[0]\ndocument.querySelectorAll(\"auto-julia-version\").forEach(el => {\n console.log(el)\n el.innerText = el.getAttribute(\"short\") == null ? stable : pkg_stable\n})\n});"},{"url":"sidebar_data/","title":"sidebar_data","tags":[],"text":"Dict \"main\" \"Welcome\" collections \"welcome\" .pages, \"Module 1 finite dimensional problems\" collections \"module1\" .pages, \"Module 2 algebraic equations\" collections \"module2\" .pages, \"Module 3 Taylor integration\" collections \"module3\" .pages, \"Module 4 periodic orbits\" collections \"module4\" .pages, \"Module 5 invariant manifolds of equilibria\" collections \"module5\" .pages "},{"url":"homework/algebraic_exercise1/","title":"Sequence space properties","tags":["module2","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 1 order 1 title \"Sequence space properties\" tags \"module2\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" 1. Show that the sequence space ```math \\ell^1 \\mathbb N \\overset \\text def \\left\\ x \\in \\mathbb R ^\\mathbb N \\, \\, \\| x \\| 1 \\overset \\text def \\sum n \\ge 0 |x n| \\infty \\right\\ ``` is a Banach space. \"\"\" md\"\"\" 2. Show that \\ell^1 \\mathbb N , equipped with the Cauchy product given by ```math x y n \\overset \\text def \\sum l 0 ^n x n l y l, \\qquad n \\ge 0, ``` satisfies the Banach algebra property \\| x y \\| 1 \\le \\| x \\| 1 \\| y \\| 1 . \"\"\" md\"\"\" 3. Let x \\in \\ell^1 \\mathbb N and \\mathcal M x \\ell^1 \\mathbb N \\to \\ell^1 \\mathbb N the multiplication operator associated with x , i.e. \\mathcal M x h \\overset \\text def x h for all h \\in \\ell^1 \\mathbb N . Show that \\| \\mathcal M x \\| \\mathscr B \\ell^1 \\mathbb N \\| x \\| 1 . \"\"\" "},{"url":"homework/algebraic_exercise2/","title":"Inverse function for infinite sequences","tags":["module2","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 2 order 2 title \"Inverse function for infinite sequences\" tags \"module2\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" 1. Let v t \\sum n \\ge 0 y n t^n such that \\Pi N y is known, while its tail satisfies the estimate \\| I \\Pi N y \\| 1 \\le \\epsilon . For the zero finding problem F x \\overset \\text def x y 1 , derive explicit formulas for the bounds Y, Z 1, Z 2 in terms of \\Pi N y and \\epsilon . \"\"\" md\"\"\" 2. Find the inverse of v t e^t as a Taylor series for all t \\in 1, 1 . \"\"\" Foldable \"Hint\", md\"\"\" Recall that v t e^t \\sum n \\ge 0 y n t^n where y n 1 n . Using the Taylor remainder, obtain a bound for \\| I \\Pi N y \\| 1 . \"\"\" "},{"url":"homework/algebraic_exercise3/","title":"Radius of convergence","tags":["module2","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 3 order 3 title \"Radius of convergence\" tags \"module2\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" For \\nu \\ge 1 , consider the weighted sequence space ```math \\ell^1 \\nu, \\mathbb N \\overset \\text def \\left\\ a \\in \\mathbb R ^\\mathbb N \\, \\, \\| a \\| \\nu \\overset \\text def \\sum n \\ge 0 |a n| \\nu^n \\infty \\right\\ . ``` \"\"\" md\"\"\" 1. Show that \\ell^1 \\nu, \\mathbb N equipped with the Cauchy product is a Banach algebra. \"\"\" md\"\"\" 2. Show that \\|M\\| \\mathscr B \\ell^1 \\nu, \\mathbb N \\max l \\ge 0 \\nu^ l \\sum n \\ge 0 |M n,l | \\nu^n for all M \\in \\mathscr B \\ell^1 \\nu, \\mathbb N . In particular, for all x \\in \\ell^1 \\nu, \\mathbb N , show that \\| \\mathcal M x \\| \\mathscr B \\ell^1 \\nu, \\mathbb N \\| x \\| \\nu , where \\mathcal M x is the multiplication operator associated with x . \"\"\" md\"\"\" 3. Find the inverse of v t 2 t for all t \\in \\nu, \\nu as a Taylor series. How large can you take \\nu ? \"\"\" md\"\"\" 4. Find the inverse of v t e^t for all t \\in \\nu, \\nu as a Taylor series. How large can you take \\nu ? \"\"\" "},{"url":"homework/algebraic_exercise4/","title":"Roots","tags":["module2","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 4 order 4 title \"Roots\" tags \"module2\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" In this exercise, we will formulate a zero finding problem to compute rigorously the square root of a Fourier series. Similarly to the case of Taylor series, we discretize the function space of absolutely continuous periodic functions via the two sided sequence space ```math \\ell^1 \\mathbb Z \\overset \\text def \\left\\ x \\in \\mathbb C ^\\mathbb Z \\, \\, \\| x \\| 1 \\overset \\text def \\sum k \\in \\mathbb Z |x k| \\infty \\right\\ . ``` \"\"\" md\"\"\" 1. Let \\omega 0 . If u t \\sum k \\in \\mathbb Z x k e^ i k \\omega t and v t \\sum k \\in \\mathbb Z y k e^ i k \\omega t , then u t v t \\sum k \\in \\mathbb Z a b k e^ i k \\omega t where ```math a b k \\overset \\text def \\sum l \\in \\mathbb Z x k l y l, \\qquad k \\in \\mathbb Z . ``` Prove that \\ell^1 \\mathbb Z together with satisfies the unital Banach algebra property \\|x y\\| 1 \\le \\|x\\| 1 \\|y\\| 1 . \"\"\" md\"\"\" 2. Show that \\| M \\| \\mathscr B \\ell^1 \\mathbb Z \\max l \\in \\mathbb Z \\sum k \\in \\mathbb Z |M k,l | for all M \\in \\mathscr B \\ell^1 \\mathbb Z . Moreover, note that the multiplication operator \\mathcal M x \\ell^1 \\mathbb Z \\to \\ell^1 \\mathbb Z associated with x \\in \\ell^1 \\mathbb Z has the structure of a Toepliz matrix https en.wikipedia.org wiki Toeplitz matrix , specifically ```math \\mathcal M x \\begin pmatrix \\ddots & \\ddots & \\ddots \\\\ \\ddots & x 0 & x 1 & x 2 \\\\ \\ddots & x 1 & x 0 & x 1 & \\ddots \\\\ & x 2 & x 1 & x 0 & \\ddots \\\\ & & \\ddots & \\ddots & \\ddots \\end pmatrix , ``` For all x \\in \\ell^1 \\mathbb Z , show that \\| \\mathcal M x \\| \\mathscr B \\ell^1 \\mathbb Z \\| x \\| 1 . \"\"\" md\"\"\" 3. Given y \\in \\ell^1 \\mathbb Z , consider F \\ell^1 \\mathbb Z \\to \\ell^1 \\mathbb Z given by ```math F x \\overset \\text def x x y. ``` Derive the bounds needed to apply the Newton Kantorovich theorem. Find the square root of v t 2 \\cos t . Why is the obtained Fourier series real valued? \"\"\" md\"\"\" 4. Define a suitable F 0 problem for the cubic root of an absolutely converging Fourier series, and derive the bounds needed to apply the Newton Kantorovich theorem in that context. Find the cubic root of v t 2 \\cos t . Why is the obtained Fourier series real valued? \"\"\" "},{"url":"homework/finite_dimension_exercise1/","title":"Operator norms","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 1 order 1 title \"Operator norms\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" Consider the 1 norm on \\mathbb R ^d ```math \\| x \\| 1 \\overset \\text def \\sum i 1 ^d | x i |, ``` and let A be a d \\times d matrix of real numbers. Show that the operator norm induced by the 1 norm, that is ```math \\| A \\| 1 \\overset \\text def \\sup \\substack x \\in \\mathbb R ^d \\\\ x\\ne 0 \\frac \\| Ax \\| 1 \\| x \\| 1 , ``` satisfies ```math \\| A \\| 1 \\max 1 \\le j \\le d \\sum i 1 ^d | A i,j |. ``` \"\"\" "},{"url":"homework/finite_dimension_exercise2/","title":"Rigorous computation of an eigenpair","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 2 order 2 title \"Rigorous computation of an eigenpair\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" 1. Consider a matrix M , and an approximate eigenpair \\bar \\lambda , \\bar v of M . The goal of this exercise is to validate \\bar \\lambda , \\bar v , i.e. to prove that there exists an exact eigenpair \\tilde \\lambda , \\tilde v nearby. Assuming that the corresponding exact eigenvalue \\tilde \\lambda is simple, define a suitable F 0 problem, and derive the bounds needed to apply the Newton Kantorovich theorem in that context. \"\"\" Foldable \"Hint\", md\"\"\" The \"natural\" zero finding problem is G \\lambda, v \\overset \\text def M \\lambda I v , but it has one too many unknowns. This is consistent with the fact that zeros of G are not isolated one can always rescale the eigenvector . Therefore, a suitable zero finding problem needs to incorporate a normalization condition, for instance ```math F \\lambda, v \\overset \\text def \\begin pmatrix \\langle v, \\bar v \\rangle 1 \\\\ M \\lambda I v \\end pmatrix . ``` \"\"\" md\"\"\" 2. For any positive integer N , the Wilkinson matrix W N is the following 2N 1 \\times 2N 1 tridiagonal matrix ```math W N \\begin pmatrix N & 1 & & & & & \\\\ 1 & N 1 & 1 & & & & \\\\ & 1 & \\ddots & \\ddots & & & \\\\ & & \\ddots & 0 & \\ddots & & \\\\ & & & \\ddots & \\ddots & 1 & \\\\ & & & & 1 & N 1 & 1 \\\\ & & & & & 1 & N \\end pmatrix ``` We provide below approximate eigenvalues and eigenvectors of W 3 . Rigorously enclose all eigenpairs of W 3 . \"\"\" function wilkinson N M zeros 2N 1, 2N 1 for i 1 2N 1 M i,i abs N i 1 if i 1 ≤ 2N 1 M i,i 1 1 end if i 1 ≥ 1 M i,i 1 1 end end return M end N 3 W wilkinson N using LinearAlgebra eigenvalues, eigenvectors eigen W "},{"url":"homework/finite_dimension_exercise3/","title":"Rigorous inverse of a matrix","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 3 order 3 title \"Rigorous inverse of a matrix\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" In this exercise, we consider a matrix M , and a numerically computed approximate inverse \\bar X of M . Our goal will be to guarantee a posteriori that M is indeed invertible, and to provide a computable error bound between M^ 1 and \\bar X , for any submultiplicative matrix norm i.e. \\| A B \\| \\le \\| A \\| \\| B \\| . \"\"\" md\"\"\" 1. Denoting \\delta \\Vert I M \\bar X \\| , and assuming \\delta 1 , show that M is invertible and ```math \\| M^ 1 \\bar X \\| \\le \\frac \\delta 1 \\delta \\| \\bar X \\|. ``` \"\"\" Foldable \"Hint\", md\"\"\" Write \\left M\\bar X \\right ^ 1 as \\left I M\\bar X I\\right ^ 1 and mutliply to the left by \\bar X in order to get a power series expansion of M^ 1 . \"\"\" md\"\"\" 2. Try to obtain a similar estimate using an appropriate zero finding problem and the Newton Kantorovich approach. \"\"\" Foldable \"Hint\", md\"\"\" You may consider F X MX I or F X XM I . \"\"\" "},{"url":"homework/finite_dimension_exercise4/","title":"Rigorous control of the entire spectrum","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 4 order 4 title \"Rigorous control of the entire spectrum\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" Exercise 3 can be used to enclose eigenvalues of a given matrix one by one. We now present an alternate strategy to enclose the entire spectrum at once but not the corresponding eigenvectors , which can sometimes also be adapted in infinite dimension. This strategy relies on the Gershgorin circle theorem https en.wikipedia.org wiki Gershgorin circle theorem , which we recall below. \"\"\" md\"\"\" theorem \"Theorem Gershgorin \" For any matrix M \\left M i,j \\right 1 \\le i, j \\le d , its spectrum \\sigma M satisfies ```math \\begin align \\sigma M \\subset \\bigcup i 1 ^d D\\left M i,i ,\\, \\sum j \\ne i | M i,j | \\right , \\end align ``` where D z,r denotes the closed disk of center z and radius r in the complex plane. Moreover, if \\mathscr J \\subset \\ 1, \\dots, d\\ is such that \\bigcup i \\in \\mathscr J D\\left M i,i ,\\, \\sum j \\ne i | M i,j |\\right is disjoint from \\bigcup i \\notin \\mathscr J D\\left M i,i ,\\, \\sum j \\ne i | M i,j |\\right , then \\bigcup i \\in \\mathscr J D\\left M i,i ,\\, \\sum j \\ne i | M i,j |\\right contains exactly | \\mathscr J | eigenvalues. \"\"\" md\"\"\" 1. Using the Gershgorin circle theorem, get as tight as possible rigorous enclosures of all eigenvalues of W 3 defined in Exercise 3 . \"\"\" Foldable \"Hint\", md\"\"\" You may first compute numerically a matrix P of approximate eigenvectors of W 3 , then rigorously compute \\tilde W 3 P^ 1 W 3 P , and finally apply the Gershgoring circle theorem to \\tilde W 3 . \"\"\" md\"\"\" 2. Prove that W 1000 has exactly one eigenvalue with negative real part. \"\"\" Foldable \"Hint\", md\"\"\" You do not need to numerically diagonalize all of W 1000 for most rows, the corresponding Gershgorin disk already lies in the left half of the complex plane. \"\"\" "},{"url":"homework/finite_dimension_exercise5/","title":"Toward rigorous continuation","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 5 order 5 title \"Toward rigorous continuation\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" Prove that there exists a period 3 orbit to x n 1 \\mu x n 1 x n for all \\mu in an interval containing 3.9 . Make that interval as large as you can. \"\"\" "},{"url":"homework/manifolds_exercise1/","title":"Stable and unstable manifolds","tags":["module5","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 1 order 1 title \"Stable and unstable manifolds\" tags \"module5\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" Using Taylor series, compute rigorously that is with the Newton Kantorovich approach a parameterization of order N 20 of the stable and unstable manifolds of the equilibrium 0,0 for the equation ```math \\dot x \\begin pmatrix \\dot x 1 \\\\ \\dot x 2 \\end pmatrix \\begin pmatrix x 1 6 x 2 x 1 x 2 \\\\ 4 x 1 3 x 2 x 1^2 \\end pmatrix . ``` \"\"\" "},{"url":"homework/manifolds_exercise2/","title":"2D manifold","tags":["module5","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 2 order 2 title \"2D manifold\" tags \"module5\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" Compute the 2D stable manifold of the origin for Lorenz. \"\"\" "},{"url":"mod1/finite_dimension_lecture_notes/","title":"Finite-dimensional problems","tags":["lecture","module1"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 1 order 0.5 title \"Finite dimensional problems\" tags \"lecture\", \"module1\" layout \"layout.jlhtml\" 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 html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using Plots TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\" Motivating example a chaotic dynamical system\" md\"\"\" Consider the sequence defined by \\begin align x n 1 \\mu x n 1 x n , \\end align where \\mu is a parameter in 0,4 and the initial condition x 1 is in 0,1 . The slider below can be used to vary the value of \\mu . \"\"\" bind μ Slider 0 0.1 4 default 3.9 μ begin x1 0.4 maxiter 50 xs zeros maxiter 1 xs 1 x1 for n 1 maxiter xs n 1 μ xs n 1 xs n end plot 1 maxiter 1, xs marker circle, 5 , legend false xlabel \"n\" ylims 0.1, 1.1 end md\"\"\" As \\mu increases, the dynamics become progressively more complex. This behaviour arises from a cascade of period doubling bifurcations https en.wikipedia.org wiki Period doubling bifurcation , ultimately leading to chaos https en.wikipedia.org wiki Chaos theory . A well known result for discrete dynamical systems states that the existence of a period 3 orbit implies chaos. \"\"\" md\"\"\" theorem \"Theorem\" Let f 0,1 \\to 0,1 be continuous, and consider the dynamical system defined by x n 1 f x n . If there exists an orbit of period 3, i.e. x 1 \\in 0,1 such that x 1 \\ne x 2 \\ne x 3 and x 4 x 1 , then the system is chaotic. In particular, there exist orbits of any period. ^Sha64 ^LY75 \"\"\" md\"\"\" Let us fix a value of \\mu for which the dynamics seem complicated, say \\mu 3.9 . Our goal is to demonstrate the existence of a period 3 orbit. We will begin by numerically approximating such an orbit and then rigorously establish the existence of a true period 3 orbit nearby. While there are various methods to prove the existence of a period 3 orbit both with and without computer assistance , the approach we present will extend naturally to more challenging infinite dimensional problems. \"\"\" md\" Contraction mapping and the Newton Kantorovich theorem\" md\"\"\" Given a problem and an approximate solution \\bar x , our goal is to define a fixed point operator T such that the solutions to our problem are in one to one correspondence with fixed points of T , T is a contraction on a small neighborhood of \\bar x . The specific form of T may vary depending on the nature of the problem, but we can outline a general strategy for constructing such an operator. First, we provide sufficient conditions that can be verified in practice to demonstrate that an operator T is contracting on a small neighborhood of \\bar x . Although this first module focuses on finite dimentional problems, we state these conditions in the more general setting of a Banach space https en.wikipedia.org wiki Banach space , as they will play an important role in the next modules. \"\"\" md\"\"\" theorem \"Theorem Contraction mapping \" Let \\mathcal X be a Banach space, \\bar x \\in \\mathcal X , and T \\mathcal X \\to \\mathcal X a continuously differentiable map. Assume that there exist a constant Y and a non decreasing map Z 0, \\infty \\to 0, \\infty such that ```math \\begin align \\| T \\bar x \\bar x \\| &\\le Y, \\\\ \\| DT x \\| &\\le Z \\| x \\bar x \\| , \\qquad \\forall x \\in \\mathcal X . \\end align ``` If there exists r 0 such that ```math \\begin align Y \\int 0^r Z s \\, ds &\\le r, \\\\ Z r & 1, \\end align ``` then T has a unique fixed point \\tilde x such that \\| \\tilde x \\bar x \\| \\le r . \"\"\" md\"\"\" note \"Remark\" The bound Z is actually only needed locally, i.e. we only need Z s for s \\le r . Therefore, one can fix a priori some R 0 , and weaken the assumption by only asking for Z to be defined on 0, R and to satisfy \\| DT x \\| \\le Z \\| x \\bar x \\| for all x \\in \\mathcal X such that \\| x \\bar x \\| \\le R . Of course, we are then only allowed to consider r \\in 0, R . In practice, studying carefully how \\| DT x \\| depends on \\| x \\bar x \\| helps us to get better bounds. However, we can sometimes get away with coarser estimates. Specifically, we derive a constant Z such that \\| DT x \\| \\le Z for all x \\in \\mathcal X such that \\| x \\bar x \\| \\le R , and then use Z s Z for all s \\in 0, R . The conditions on r then simplify, and, if Z 1 , we can take any r \\ge \\frac Y 1 Z . \"\"\" md\"\"\" For a dynamical system x n 1 f x n , a natural fixed point operator for period 3 orbits is given by T x \\overset \\text def f^3 x , which represents f composed with itself three times. However, in general such a T has no reason to be contracting. To develop a more general procedure for constructing a fixed point problem, one can start by finding a map F whose isolated zeros are solutions to our problem. For this example, we consider the mapping F \\mathbb R ^3 \\to \\mathbb R ^3 given by ```math F x 1, x 2, x 3 \\overset \\text def \\begin pmatrix f x 1 x 2 \\\\ f x 2 x 3 \\\\ f x 3 x 1 \\end pmatrix . ``` Given an approximate solution \\bar x , one can consider the Newton like operator T x \\overset \\text def x DF \\bar x ^ 1 F x . This operator should be contracting in a neighborhood of \\bar x , as DT \\bar x 0 . For finite dimensional problems of moderate size, computing the inverse of DF \\bar x is possible. However, in infinite dimensional problems, working with DF \\bar x ^ 1 can be challenging. To address this, we often consider an approximate inverse A \\approx DF \\bar x ^ 1 and define the fixed point operator T x \\overset \\text def x AF x . In the following results, we will operate under this framework, where A is not specified and could be DF \\bar x ^ 1 or another suitable approximation. \"\"\" md\"\"\" corollary \"Corollary Newton Kantorovich \" Let \\mathcal X and \\mathcal Y be two Banach spaces, \\bar x \\in \\mathcal X , F \\mathcal X \\to \\mathcal Y a continuously differentiable map, A \\mathcal Y \\to \\mathcal X am injective linear map, and R 0 . Assume that there exist constants Y , Z 1 and Z 2 such that ```math \\begin align \\| AF \\bar x \\| &\\le Y, \\\\ \\| I ADF \\bar x \\| &\\le Z 1, \\\\ \\| A DF x DF \\bar x \\| &\\le Z 2 \\| x \\bar x \\|, \\qquad \\forall x \\in \\mathcal X \\text such that \\| x \\bar x \\| \\le R. \\end align ``` If there exists r \\in 0,R such that ```math \\begin align Y Z 1 r \\frac 1 2 Z 2 r^2 &\\le r, \\\\ Z 1 Z 2 r & 1, \\end align ``` then F has a unique zero \\tilde x such that \\| \\tilde x \\bar x \\| \\le r . \"\"\" md\"\"\" This corollary is a simplified version of the Newton Kantorovich Theorem https en.wikipedia.org wiki Kantorovich theorem ^Ort68 . Variations of this result can be found throughout the literature and are commonly used in computer assisted proofs CAPs see e.g. ^BL15 ^NPW19 and the references therein . \"\"\" md\" Interval arithmetic\" md\"\"\" When we want to apply the contraction mapping theorem with \\bar x as an approximate solution obtained using the computer, we also need to compute values for the bounds Y and Z . However, these calculations typically rely on floating point arithmetic, which introduces rounding errors. For instance, if we execute `Y norm A F x̄ , 1 ` on the computer, we cannot be certain that Y is an upper bound for \\|A F \\bar x \\| 1 . Interval arithmetic https en.wikipedia.org wiki Interval arithmetic provides a robust method to control rounding errors and ensuring guaranteed results from computer calculations. In this section, we offer a brief description of interval arithmetic for more detailed discussions, please refer to ^Moo79 and ^Tuc11 . \"\"\" md\" Overview\" md\"\"\" The central concept of interval arithmetic is to represent any real number by an interval, whose endpoints are floating point numbers. More precisely, for a \\in \\mathbb R , we define the interval \\underline a , \\overline a where \\underline a , \\overline a are floating point numbers satisfying \\underline a \\le a \\le \\overline a . While we give up the hope of representing numbers exactly, we recover guaranteed information the real number a is contained within the interval stored in the computer. The rules of interval arithmetic ensure that this containment property is preserved for arithmetic operations. For instance, consider two intervals a and b of the form \\underline a , \\overline a and \\underline b , \\overline b , which enclose the reals numbers a and b respectively. When we perform the operation c a b , the resulting interval c \\underline c , \\overline c is computed as follows for \\underline c , we take \\underline a \\underline b rounded downward , and for \\overline c , we take \\overline a \\overline b rounded upward . In particular, the real number c a b is contained within the interval c . Similarly, if c is an interval \\underline c , \\overline c and we compute d e^ c , the resulting interval d contains e^c . In this course, we use the Julia library IntervalArithmetic https github.com JuliaIntervals IntervalArithmetic.jl , though many other interval arithmetic libraries are available in different programming languages. Note that IntervalArithmetic is automatically included when using RadiiPolynomial https github.com OlivierHnt RadiiPolynomial.jl . This library provides standard arithmetic operations as well as implementations of elementary functions such as `exp`, `log`, `cos`, etc. that comply with the rules of interval arithmetic. \"\"\" using IntervalArithmetic not necessary if you did `using RadiiPolynomial` a interval 2, 4 cos exp sqrt a md\"\"\" note \"Remark\" Even when doing computer assisted proofs, it’s not necessary to use interval arithmetic for every computation. For finding an approximate solution \\bar x , floating point calculations are perfectly fine. It’s only when computing the bounds for the contraction theorem, and verifying the radii polynomial inequalities, that interval arithmetic must be used. \"\"\" md\" Beware of typed in floating point numbers\" md\"\"\" When you execute a command like `x 0.1` in Julia, the variable `x` is assigned the closest floating point number approximating 1 10 . Since 1 10 cannot be represented exactly in base 2, the value stored in `x` is not precisely equal to the typed in number `0.1`. In fact, it turns out to be slightly larger than 1 10 , but it could just as easily have been smaller as seen with `x 0.3` . For more information on this topic, you can refer to this webpage https 0.30000000000000004.com . \"\"\" x 0.1 x 1 10 ix interval 1 interval 10 in interval 1 10, ix md\" Back to period 3 implies chaos\" using RadiiPolynomial md\"\"\" Let’s recap what we have covered so far Proving the existence of a period 3 orbit is sufficient to establish chaotic dynamics. We reformulated the task of finding a period 3 orbit as solving an equation F 0 . We derived sufficient conditions, in terms of bound estimates Y, Z 1, Z 2 , to determine the radius of a ball, centered at a numerical approximation \\bar x , that contains a locally unique true zero \\tilde x of F . We introduced interval arithmetic to rigorously estimate the bounds Y , Z 1 , and Z 2 with computer assistance. Now, we walk through the implementation of a computer assisted proof to demonstrate a period 3 orbit for \\mu 3.9 . We start by defining the logistic map in Julia \"\"\" f x, μ μ x 1 x logistic map md\"\"\" and the zero finding problem \"\"\" function F x, μ v zeros eltype x , 3 v 1 f x 1 , μ x 2 v 2 f x 2 , μ x 3 v 3 f x 3 , μ x 1 return v end md\"\"\" To apply the Newton Kantorovich theorem we also need the first derivate \"\"\" Df x, μ μ 1 2x derivative of the logistic map w.r.t. x function DF x, μ derivative of the zero finding problem w.r.t. x M zeros eltype x , 3, 3 M 1,1 Df x 1 , μ M 1,2 1 M 2,2 Df x 2 , μ M 2,3 1 M 3,1 1 M 3,3 Df x 3 , μ return M end md\" Numerical zero\" md\"\"\" We apply Newton's method https en.wikipedia.org wiki Newton%27s method to F using the `newton` function provided in the RadiiPolynomial library. \"\"\" initial data 0.5, 1.0, 1.0 F DF x F x, μ , DF x, μ returns `F` and `DF` at `μ 3.9` x bar, success newton F DF, initial data md\"\"\" The `newton` function returns two outputs the result of the iterations and a value indicating whether the method converged `true` if it did as it does here and `false` otherwise. \"\"\" md\"\"\" Initializing Newton's method Finding a good starting point for Newton's method is not always easy. Here we were a bit lucky that a simple guess worked well. For other parameter values, however, we may need to take a closer look at the iterations of the map f . \"\"\" md\" Constructing A \" md\"\"\" As mentioned earlier, A doesn’t need to be exactly DF \\bar x ^ 1 it only needs to be a reasonably close approximation. For finite dimensional problems, this inverse can be efficiently computed using built in numerical algorithms. \"\"\" A inv DF x bar, μ md\" Verifying the contraction\" md\"\"\" We now verify that T x \\overset \\text def x A F x is a contraction around \\bar x \\in \\mathbb R ^3 . To rigorously compute the bounds Y, Z 1, Z 2 , we enclose all relevant data into intervals. \"\"\" since 39 10 is not representable as a floating point number iμ interval 39 interval 10 ix bar interval x bar iA interval A md\" Computing Y \" Y norm iA F ix bar, iμ , 1 md\" Computing Z 1 \" Z₁ opnorm I iA DF ix bar, iμ , 1 md\" Computing Z 2 \" md\"\"\" ```math \\|A DF x DF \\bar x \\| 1 \\le \\|A\\| 1 \\|DF x DF \\bar x \\| 1 2 \\mu \\|A\\| 1 \\| x \\bar x \\| 1, \\qquad \\forall x \\in \\mathbb R ^3. ``` So Z 2 \\ge 2 \\mu \\|A\\| 1 is a constant. In other words, we have a Lipschitz control for DF on the whole space \\mathbb R ^3 , and we can freely choose R \\infty . \"\"\" R Inf Z₂ interval 2 iμ opnorm iA, 1 md\" Finishing the CAP\" md\"\"\" To determine the values of r that satisfy the radii polynomial inequalities, we use the `interval of existence` function from RadiiPolynomial. This function returns an interval of existence, within which all contained values satisfy the contraction conditions. \"\"\" ie interval of existence Y, Z₁, Z₂, R md\"\"\" The largest value in the interval represents the maximum radius of the ball centered at \\bar x within which the true zero \\tilde x of F is proven to be unique. On the other hand, the smallest value provides the sharpest error bound. \"\"\" r inf ie md\"\"\" In fact, we cannot yet conclude that \\tilde x is a zero of F since we did not check that A was injective. This property actually comes as a by product of the contraction argument. Indeed, \\|I A DF \\bar x \\| \\le Z 1 1 ensures that A DF \\bar x is invertible, which implies that A is surjective. Since A is a square matrix, it follows that A must also be injective. Finally, we verify that the true zero \\tilde x of F is a period 3 orbit, that is \\tilde x 1 \\ne \\tilde x 2 \\ne \\tilde x 3 . Since we have found r such that \\| \\tilde x \\bar x \\| 1 \\le r , it follows that \\tilde x j \\in \\bar x j r, \\bar x j r for j 1, 2, 3 . We then confirm that the three intervals \\bar x j r, \\bar x j r , for j 1, 2, 3 , are mutually disjoint \"\"\" enclosure x tilde 1 interval ix bar 1 , r format midpoint enclosure x tilde 2 interval ix bar 2 , r format midpoint enclosure x tilde 3 interval ix bar 3 , r format midpoint isdisjoint interval enclosure x tilde 1, enclosure x tilde 2, enclosure x tilde 3 md\"\"\" A final note on interval arithmetic In the code provided in this notebook we used the Julia interval arithmetic library IntervalArithmetic.jl https juliaintervals.github.io IntervalArithmetic.jl stable . We took a bit of liberty by taking advantage of automatic conversion of floats and integers to intervals, when variables of these types are combined in elementary operations. The interval arithmetic library is not entirely happy about this \"\"\" isguaranteed Y , isguaranteed Z₁ , isguaranteed Z₂ md\" References\" md\"\"\" ^BL15 J. B. van den Berg and J. P. Lessard. Rigorous numerics in dynamics. Notices Of The American Mathematical Society , 62 9 , 2015. ^LY75 T. Y. Li and J. A. Yorke. Period three implies chaos. The American Mathematical Monthly , 82 10 985 992, 1975. ^Moo79 R. E. Moore. Methods and applications of interval analysis . SIAM, 1979 ^Ort68 J. M. Ortega. The Newton Kantorovich theorem. The American Mathematical Monthly , 75 6 658 660, 1968. ^NPW19 M. T. Nakao, M. Plum, and Y. Watanabe. Numerical Verification Methods and Computer Assisted Proofs for Partial Differential Equations . Springer Singapore, 2019. ^Sha64 A. N. Sharkowskii. Co existence of the cycles of a continuous mapping of the line into itself. Ukrainian Mathematical Journal , 16 1 , 1964. ^Tuc11 W. Tucker. Validated numerics a short introduction to rigorous computations . Princeton University Press, 2011. \"\"\" "},{"url":"mod2/inverse_lecture_notes/","title":"Inverse function","tags":["lecture","module2"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 2 order 0.5 title \"Inverse function\" tags \"lecture\", \"module2\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, Plots TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\" Motivating example the inverse function\" md\"\"\" Given v t 2 t , consider the problem of finding the function u 1, 1 \\to \\mathbb R such that ```math u t v t 1, \\qquad t \\in 1, 1 . ``` This constitutes the first example of infinite dimensional problems. We will search for a function u as a power series u t \\sum n \\ge 0 x n t^n , defined for all t \\in 1, 1 . A numerical plot of 2 t ^ 1 is displayed below. \"\"\" begin plot LinRange 1, 1, 51 , t 2 t label \"2 t\", linewidth 3 plot LinRange 1, 1, 51 , t inv 2 t label \"1 2 t \", linewidth 3 xlims 1, 1 xlabel \"t\" end md\"\"\" We follow the same strategy outlined in Module 1, with some key adaptations 1. Identify a appropriate Banach space an additional step compared to the previous module on finite dimensional problems . 2. Reformulate the problem as a zero finding problem F x 0 . 3. Compute an approximate zero \\bar x . 4. Construct an approximate inverse A of DF \\bar x . 5. Derive computable formulas for the bounds Y, Z 1, Z 2 , and verify the radii polynomial inequalities. \"\"\" md\" Sequence space\" md\"\"\" The sequence space we are interested in is the one of analytic functions with radius of convergence strictly greater than 1 . The first step is to discretize this space as the sequence space ```math \\ell^1 \\mathbb N \\overset \\text def \\left\\ x \\in \\mathbb R ^\\mathbb N \\, \\, \\| x \\| 1 \\overset \\text def \\sum n \\ge 0 |x n| \\infty \\right\\ . ``` \"\"\" md\"\"\" lemma \"Lemma\" x \\in \\ell^1 \\mathbb N if and only if \\sum n \\ge 0 x n t^n converges uniformly on 1, 1 . \"\"\" md\"\"\" lemma \"Lemma\" \\ell^1 \\mathbb N is a Banach space. \"\"\" md\" Cauchy product\" md\"\"\" lemma \"Lemma Cauchy product \" If u t \\sum n \\ge 0 x n t^n and v t \\sum n \\ge 0 y n t^n , then u t v t \\sum n \\ge 0 x y n t^n where ```math x y n \\overset \\text def \\sum l 0 ^n x n l y l, \\qquad n \\ge 0. ``` \"\"\" md\"\"\" The product and the norm play together nicely they give the space \\ell^1 \\mathbb N the structure of a Banach algebra, as expressed by the following lemma. \"\"\" md\"\"\" lemma \"Lemma Banach algebra property \" For any x, y \\in \\ell^1 \\mathbb N we have \\| x y \\| 1 \\le \\| x \\| 1 \\| y \\| 1 . \"\"\" md\" Finite dimensional projection\" md\"\"\" We introduce a projection operator on a finite number of modes N 1 coefficients \\Pi N \\ell^1 \\mathbb N \\to \\ell^1 \\mathbb N given by ```math \\Pi N x n \\overset \\text def \\begin cases x n, & n \\le N, \\\\ 0, & n N, \\end cases ``` together with its complement \\Pi N \\overset \\text def I \\Pi N . The projections let us break down the problem into two parts a finite dimensional part, handled by the computer, and an infinite dimensional part often called the tail , handled entirely by pen and paper analysis. \"\"\" md\"\"\" Why is this so complicated? The strange looking subscript N is in fact meant to indicate clearly which index values are involved. It avoids writing down infinite matrices or formulas with a lot of indices. \"\"\" md\" Zero finding problem\" md\"\"\" Writing v t \\sum n \\ge 0 y n t^n with y \\overset \\text def 2, 1, 0, \\dots \\in \\ell^1 \\mathbb N , and substituting u t \\sum n \\ge 0 x n t^n into the algebraic equation leads to the infinite set of equations ```math x y 0 1, \\qquad x y n 0, \\quad n \\ge 1. ``` Therefore, the problem of finding the inverse of v corresponds to finding a zero of the mapping F \\ell^1 \\mathbb N \\to \\ell^1 \\mathbb N given by ```math F x \\overset \\text def x y 1. ``` \"\"\" md\"\"\" note \"Remark\" Here we slightly abuse notation by identifying the constant 1 with its sequence of Taylor coefficients 1, 0, \\dots \\in \\ell^1 \\mathbb N . This is consistent with the convention that 1 denotes the identity element of the algebra \\ell^1 \\mathbb N , 1 . \"\"\" md\"\"\" An implementation, using the RadiiPolynomial library, of the zero finding problem F is given below. \"\"\" F x, y x y 1 md\" Numerical zero\" md\"\"\" The map F is affine and satisfies DF x x F x 1 , so Newton's method reduces to solving, in \\ell^1 \\mathbb N , the linear system ```math \\mathcal M y x 1, ``` where \\mathcal M y DF x \\in \\mathscr B \\ell^1 \\mathbb N is such that ```math \\mathcal M y h y h, \\qquad \\forall h \\in \\ell^1 \\mathbb N . ``` In other words, \\mathcal M y is the mutliplication operator associated with y . As a bounded linear operator acting on infinite sequences in \\ell^1 \\mathbb N , \\mathcal M y can be visualized as a matrix with an infinite number of rows and columns ```math \\mathcal M y \\begin pmatrix y 0 & 0 & 0 & \\cdots \\\\ y 1 & y 0 & 0 & \\cdots \\\\ y 2 & y 1 & y 0 & \\ddots \\\\ \\vdots & \\vdots & \\vdots & \\ddots \\end pmatrix . ``` Our goal is to find a numerical approximation \\bar x of the zero of F as an element of the truncated space \\Pi N \\ell^1 \\mathbb N . We can obtain this approximation by numerically solving the linear system above for a finite number of rows \\Pi N \\mathcal M b \\bar x \\approx 1 . If the truncation dimension N is large enough we may hope that also \\Pi N F \\bar x \\approx 0 , since we expect the coefficients of \\bar x to decrease for moderately large n . \"\"\" y Sequence Taylor 1 , 2.0, 1.0 N 3 M project Multiplication y , Taylor N , Taylor N x bar M \\ Sequence Taylor N , 1.0 zeros N begin plot LinRange 1, 1, 101 , t x bar t color royalblue1, linewidth 3, label \"x bar\" xlims 1, 1 xlabel \"t\" end md\"\"\" We can see how close F \\bar x is to zero. \"\"\" F x bar, y md\"\"\" Of course, in this example, we chose very few Taylor coefficients, so the residue is not as small as one would ideally aim for. \"\"\" md\" Constructing A \" md\"\"\" For T to be a contraction, we want A to be a good approximate inverse of \\mathcal M y . So we want the inverse of y with respect to the Cauchy product . Recall that our numerical zero \\bar x \\in \\Pi N \\ell^1 \\mathbb N satisfies \\bar x y \\approx 1 . Thus, we define ```math A \\overset \\text def \\mathcal M \\bar x . ``` Consequently, ```math A DF \\bar x h \\bar x y h \\approx 1 h h. ``` \"\"\" md\" Verifying the contraction\" md\"\"\" We now verify that T x \\overset \\text def x A F x is a contraction around \\bar x \\in \\Pi N \\ell^1 \\mathbb N . To rigorously compute the bounds Y, Z 1, Z 2 , we enclose all relevant data into intervals. \"\"\" iy interval y ix bar interval x bar md\" Computing Y \" md\"\"\" lemma \"Lemma\" If x \\in \\Pi N \\ell^1 \\mathbb N and y \\in \\Pi N' \\ell^1 \\mathbb N , then x y \\in \\Pi N N' \\ell^1 \\mathbb N . \"\"\" md\"\"\" ```math \\| A F \\bar x \\| 1 \\| \\bar x \\bar x y 1 \\| 1 \\le Y. ``` Since y \\in \\Pi 1 \\ell^1 \\mathbb N , \\bar x \\in \\Pi N \\ell^1 \\mathbb N , we have that A F \\bar x \\in \\Pi 2N 1 \\ell^1 \\mathbb N and the above quantity is computable. \"\"\" Y norm ix bar F ix bar, iy , 1 md\" Computing Z 1 \" md\"\"\" lemma \"Lemma\" For all x \\in \\ell^1 \\mathbb N we have that \\| \\mathcal M x \\| \\mathscr B \\ell^1 \\mathbb N \\| x \\| 1 . \"\"\" md\"\"\" ```math \\| A DF \\bar x I \\| \\mathscr B \\ell^1 \\mathbb N \\| \\bar x y 1 \\| 1 \\| F \\bar x \\| 1 \\le Z 1. ``` The above quantity is computable since F \\bar x \\in \\Pi N 1 \\ell^1 \\mathbb N . \"\"\" Z₁ norm F ix bar, iy , 1 md\" Computing Z 2 \" md\"\"\" ```math \\|A DF x DF \\bar x \\| \\mathscr B \\ell^1 \\mathbb N 0, \\qquad \\forall x \\in \\ell^1 \\mathbb N . ``` So Z 2 0 is a constant. In other words, we have a Lipschitz control for DF on the whole space \\mathbb R ^3 , and we can freely choose R \\infty . \"\"\" R Inf Z₂ interval 0 md\" Finishing the CAP\" md\"\"\" To determine the values of r that satisfy the radii polynomial inequalities, we use the `interval of existence` function from RadiiPolynomial. This function returns an interval of existence, within which all contained values satisfy the contraction conditions. \"\"\" ie interval of existence Y, Z₁, Z₂, R r inf ie md\"\"\" To guarantee that the fixed point of T is a zero of F , we must check that A is injective. This property comes as a by product of the contraction argument. Indeed, \\|I A DF \\bar x \\| \\le Z 1 1 ensures that A DF \\bar x is invertible, which implies that A is surjective. Since A DF \\bar x h \\bar x y h y \\bar x h DF \\bar x A h , for all h \\in \\ell^1 \\mathbb N , it follows that A must also be injective. Therefore, we have proved the existence of a zero \\tilde x of F such that ```math \\tilde x \\bar x \\gamma, ``` where \\gamma \\in \\ell^1 \\mathbb N is not known explicitly, but satisfies \\| \\gamma \\| 1 \\le r . Our choice of norm also gives us a C^0 error bound for the function ```math \\begin aligned \\sup t \\in 1,1 | v t ^ 1 \\sum n 0 ^N \\bar x n t^n | & \\sup t \\in 1,1 | \\left \\sum n \\ge 0 y n t^n \\right ^ 1 \\sum n 0 ^N \\bar x n t^n | \\\\ & \\sup t \\in 1,1 | \\sum n \\ge 0 \\tilde x n \\bar x n t^n | \\\\ &\\le \\| \\tilde x \\bar x \\| 1 \\\\ &\\le r. \\end aligned ``` \"\"\" begin rigorous eval x, r, t interval x t , r format midpoint ts LinRange 1, 1, 101 plot interval ts i , ts i 1 , rigorous eval ix bar, r, interval ts i , ts i 1 for i 1 length ts 1 label \"\", color palegreen3 plot ts, t x bar t label \"x bar\", color royalblue1, linewidth 3 plot ts, t inv 2 t label \"1 2 t \", color salmon, linewidth 3 xlims 1, 1 xlabel \"t\" end md\"\"\" Lastly, this example is simple enough that we can compute by hand both the first 5 terms of 2 t ^ 1 ```math \\frac 1 2 t \\frac 1 2 \\frac t 4 \\frac t^2 8 \\frac t^3 16 \\frac t^4 32 \\frac t^5 64 O t^6 , ``` and compare with the result of our CAP. \"\"\" "},{"url":"mod3/ivp_lecture_notes/","title":"Taylor integration","tags":["lecture","module3"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 3 order 1 title \"Taylor integration\" tags \"lecture\", \"module3\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, Plots TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\"\"\" In this lecture we will learn how to solve initial value problems for ODEs using Taylor series. Solving the logistic equation \"\"\" f x x 1 x Df x 1 2x md\"\"\" Zero finding problem Taylor integration \"\"\" F x, x0, τ, N project x x0 τ integrate f x , Taylor N DF x, τ, N, M project I τ Integral 1 project Multiplication Df x , Taylor N , Taylor N , Taylor N , Taylor M begin Numerical approximation N 140 order of the Taylor series x0 0.5 initial condition τ 2.5 time rescaling initialguess ones Taylor N bx, success newton x F x, x0, τ, N , DF x, τ, N, N , initialguess end begin plot LinRange τ, τ, 101 , t bx t τ legend false xlabel \"t\" ylabel \"u\" xlims τ, τ end md\"\"\" The Newton Kantorovich proof \"\"\" function tail x, N get the tail of a Taylor series y zeros eltype x , space x for n N 1 order x y n x n end return y end begin approximate inverse A finite interval. inv DF bx, τ, N, N opnormA finite opnorm A finite, 1 opnormA tail interval 1 opnormA max opnormA finite, opnormA tail end begin Y bound full F F interval. bx , interval x0 , interval τ , 2N 1 the order of F is 2N 1 Y norm A finite project full F, Taylor N , 1 norm tail full F, N , 1 end begin Z₁ bound Df bx Df interval. bx Z₁ opnorm I A finite DF interval. bx , τ, N, N , 1 τ norm Df bx, 1 interval N 1 end begin Z₂ bound Z₂ 2 τ opnormA end interval of existence cf. Radii Polynomial Theorem r star Inf since the second order derivative is constant r interval of existence Y, Z₁, Z₂, Inf md\"\"\" Next steps and further reading We remark that we need a large number of Taylor coefficients for our proof to succeed despite a relatively small length of integration N 140 to have last Taylor coefficient of order 10^ 14 . One should consider using Chebyshev series instead. \"\"\" "},{"url":"mod4/fourier_lecture_notes/","title":"Periodic orbits","tags":["lecture","module4"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 4 order 1 title \"Periodic orbits\" tags \"lecture\", \"module4\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, Plots TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\"\"\" We continue to do CAPs to find solutions of ODEs, but rather than looking at an initial value problem, we now look for periodic solutions. The setting is again infinite dimensional, with some small differences We use Fourier series rather than Taylor series. The Fourier coefficients are two sided sequences of complex numbers. The convolution product is given by an infinite series. The problem of finding a closed orbit is global in the sense that there is no equivalent of \"short time\" integration. \"\"\" md\" Motivating example a forced, damped, nonlinear pendulum\" md\"\"\" Consider the second order ODE ```math u'' t \\beta 1 u' t \\beta 2 u t u t ^2 \\beta 3 \\cos t , ``` where \\beta 1, \\beta 2, \\beta 3 are parameters. We aim to find a periodic solution u t . Since the minimal period of the forcing term is 2\\pi , we look for a periodic solution of period 2 \\pi as a Fourier series u t \\sum k \\in \\mathbb Z x k e^ i k t . We adopt the same strategy as before, organized into the following steps 1. Identify a appropriate Banach space. 2. Reformulate the problem as a zero finding problem F x 0 . 3. Compute an approximate zero \\bar x . 4. Construct an approximate inverse A of DF \\bar x . 5. Derive computable formulas for the bounds Y, Z 1, Z 2 , and verify the radii polynomial inequalities. \"\"\" md\"\"\" Why is this a \"simple\" example? A more natural problem to look at is to find a periodic orbit in a system of ODEs. In such an autonomous system of ODEs the period of a periodic solution is unknown a priori, and determining the period \\tau is thus part of the problem, in addition to finding the unknown \\tau periodic function u t . Furthermore, when u t is a periodic solution, so is u t t 0 for any time shift t 0 . In particular, periodic solutions are not isolated unless an additional phase condition is imposed. A final complication is that for a system of equations the bookkeeping is more involved than for a single equation. Although these difficulties can be overcome, the notation can get in the way of understanding. Since we want to focus here on how to deal with periodic functions, we choose to look at a scalar, non autonomous problem where the period is given. \"\"\" md\" Sequence space\" md\"\"\" The space we are interested in is the space of periodic analytic functions. THe first step is to discretize this space as the sequence space \\nu \\ge 1 ```math \\ell^1 \\nu, \\mathbb Z \\overset \\text def \\left\\ x \\in \\mathbb C ^\\mathbb Z \\, \\, \\| x \\| \\nu \\overset \\text def \\sum k \\in \\mathbb Z |x k| \\nu^ |k| \\infty \\right\\ . ``` We will choose the value of \\nu later. \"\"\" md\"\"\" lemma \"Lemma\" Let \\omega 0 and \\nu \\ge 1 . If x \\in \\ell^1 \\nu, \\mathbb Z , then \\sum k \\in \\mathbb Z x k e^ i k \\omega t converges uniformly. If \\nu 1 , then term by term differentiation up to any order of the Fourier series is justified. \"\"\" md\"\"\" lemma \"Lemma\" \\ell^1 \\nu, \\mathbb Z is a Banach space. \"\"\" md\" Conjugate symmetry\" md\"\"\" We denote the complex conjugate of z \\in \\mathbb C by z^ . For a real valued periodic function u , its Fourier coefficients x \\in \\ell^1 \\nu, \\mathbb Z satisfy x k x k^ for all k \\in \\mathbb Z . Conversely, if x k x k^ for all k \\in \\mathbb Z , then the Fourier series \\sum k \\in \\mathbb Z x k e^ i k \\omega t is real valued. For x \\in \\ell^1 \\nu, \\mathbb Z , we denote by x^\\dagger \\in \\ell^1 \\nu, \\mathbb Z the conjugate given by x^\\dagger k \\overset \\text def x k ^ . With this notation, x x^\\dagger is equivalent to the Fourier series \\sum k \\in \\mathbb Z x k e^ i k \\omega t being real valued. \"\"\" md\" Convolution product\" md\"\"\" lemma \"Lemma Convolution product \" Let \\omega 0 . If u t \\sum k \\in \\mathbb Z x k e^ i k \\omega t and v t \\sum k \\in \\mathbb Z y k e^ i k \\omega t , then u t v t \\sum k \\in \\mathbb Z x y k e^ i k \\omega t where ```math x y k \\overset \\text def \\sum l \\in \\mathbb Z x k l y l, \\qquad k \\in \\mathbb Z . ``` \"\"\" md\"\"\" The product and the norm play together nicely they give the space \\ell^1 \\nu, \\mathbb Z the structure of a Banach algebra, as expressed by the following lemma. \"\"\" md\"\"\" lemma \"Lemma Banach algebra property \" For any \\nu \\ge 1 and x, y \\in \\ell^1 \\nu, \\mathbb Z we have \\| x y \\| \\nu \\le \\| x \\| \\nu \\| y \\| \\nu . \"\"\" md\" Finite dimensional projection\" md\"\"\" We introduce a projection operator on a finite number of modes 2K 1 coefficients \\Pi K \\ell^1 \\nu, \\mathbb Z \\to \\ell^1 \\nu, \\mathbb Z given by ```math \\Pi K x k \\overset \\text def \\begin cases x k, & |k| \\le K, \\\\ 0, & |k| K, \\end cases ``` together with its complement \\Pi K \\overset \\text def I \\Pi K . \"\"\" md\" Zero finding problem\" md\"\"\" Substituting u t \\sum k \\in \\mathbb Z x k e^ i k t into the ODE leads to the infinite set of equations ```math \\lambda k x k x x k \\beta 3 c k 0, \\qquad k \\in \\mathbb Z , ``` where ```math \\lambda k \\overset \\text def k^2 i \\beta 1 k \\beta 2 ``` and c represents the Fourier transform of \\cos t , that is ```math c k \\overset \\text def \\begin cases \\frac 1 2 , & k \\pm 1, \\\\ 0, & k \\ne \\pm 1. \\end cases ``` It is convenient to introduce the diagonal linear operator ```math \\Lambda x k \\overset \\text def \\lambda k x k. ``` When \\beta 1, \\beta 2 \\ne 0 , then the inverse \\Lambda^ 1 , given by \\Lambda^ 1 h k \\lambda k^ 1 h k for all h \\in \\ell^1 \\nu, \\mathbb Z , is well defined as a bounded operator on \\ell^1 \\nu, \\mathbb Z Therefore, the problem of finding a periodic solution to the ODE corresponds to finding a zero of the mapping F \\ell^1 \\nu, \\mathbb Z \\to \\ell^1 \\nu, \\mathbb Z given by ```math F x \\overset \\text def x \\Lambda^ 1 x x \\beta 3 c . ``` \"\"\" md\"\"\" note \"Remark\" Dividing by \\lambda k is a choice that simplifies the linear term, which is beneficial for some of the algebra. In terms of estimates it merely shifts the difficulty to the nonlinear term. Working with the alternative zero finding problem G x \\overset \\text def \\Lambda x x x \\beta 3 c is also a perfectly valid choice. \"\"\" md\"\"\" An implementation, using the RadiiPolynomial library, of the truncated zero finding problem \\Pi K \\circ F \\circ \\Pi K is given below. \"\"\" function Λ⁻¹ β, space ∂ project Derivative 1 , space, space ∂² ∂ ∂ return inv ∂² β 1 ∂ β 2 I end F x, β, c, space x Λ⁻¹ β, space x x β 3 c md\"\"\" The Fréchet derivative of F reads ```math DF x I \\Lambda^ 1 \\mathcal M 2x , ``` where ```math \\mathcal M 2x h 2x h, \\qquad \\forall h \\in \\ell^1 \\nu, \\mathbb Z . ``` In other words, \\mathcal M 2x is the multiplication operator associated with 2x . As a bounded linear operator acting on infinite sequences in \\ell^1 \\nu, \\mathbb Z , \\mathcal M 2x can be visualized as a matrix with an infinite number of rows and columns ```math \\mathcal M 2x \\begin pmatrix \\ddots & \\ddots & \\ddots \\\\ \\ddots & 2x 0 & 2x 1 & 2x 2 \\\\ \\ddots & 2x 1 & 2x 0 & 2x 1 & \\ddots \\\\ & 2x 2 & 2x 1 & 2x 0 & \\ddots \\\\ & & \\ddots & \\ddots & \\ddots \\end pmatrix . ``` An implementation of \\Pi K \\circ DF \\Pi K x \\circ \\Pi K of the truncated problem is given below. \"\"\" DF x, β, domain, codomain I Λ⁻¹ β, codomain project Multiplication 2x , domain, codomain md\" Numerical zero\" md\"\"\" We apply Newton's method to \\Pi K \\circ F \\circ \\Pi K to find \\bar x \\in \\Pi K \\ell^1 \\nu, \\mathbb Z such that \\Pi K F \\bar x \\approx 0 . If the truncation dimension K is large enough we may hope that also \\Pi K F \\bar x \\approx 0 , since we expect the coefficients of \\bar x to decrease for moderately large k . \"\"\" β 0.1, 4.0, 1.0 c Sequence Fourier 1, 1.0 , 0.5, 0.0, 0.5 K 10 initial data zeros ComplexF64, Fourier K, 1.0 F DF x F x, β, c, space x , DF x, β, space x , space x x bar, success newton F DF, initial data begin plot LinRange 0, 2π, 201 , t real x bar t color royalblue1, linewidth 3, label \"x bar\" xlims 0, 2π xlabel \"t\" end md\"\"\" Initializing Newton's method WHere we were a bit lucky that a simple guess sufficed for Newton to converge. For other parameter values one may need to study the solutions of the ODE in more detail using numerical integration. \"\"\" md\" Constructing A \" md\"\"\" We use the projection to split A , the approximate inverse of DF \\bar x , into a finite part and a tail part ```math A \\overset \\text def A K \\Pi K \\Pi K , ``` where A K is a linear map constructed below on \\Pi K \\ell^1 \\nu, \\mathbb Z . By construction, we can write A in the block diagonal form ```math A \\begin pmatrix \\Pi K A K \\Pi K & 0 \\\\ 0 & \\Pi K \\end pmatrix . ``` Next, since the operator \\Pi K DF \\bar x \\Pi K is a finite dimensional square matrix, we define A K to be its numerical inverse. \"\"\" A K inv DF x bar, β, space x bar , space x bar md\"\"\" note \"Remark\" It is not necessary for the truncation dimensions of \\bar x \\in \\Pi K \\ell^1 \\nu, \\mathbb Z and A K to be the same. For clarity, we do not introduce two different truncation dimension parameters. Essentially, the truncation dimension for \\bar x controls the size of the residue, i.e. Y , while the truncation dimension for the approximate inverse A K controls the contractivity of the fixed point operator, i.e. Z 1 . In principle, these dimensions can be managed rather independently. \"\"\" md\"\"\" Verifying the contraction \"\"\" md\"\"\" lemma \"Lemma\" Let r 0 , \\bar x , \\tilde x such that \\tilde x is the unique zero of F such that \\|\\tilde x \\bar x \\| \\le r . If \\bar x ^\\dagger \\bar x , then \\tilde x ^\\dagger \\tilde x . \"\"\" conjugacy symmetry x bar conj x bar K 1 K x bar K K md\"\"\" We now verify that T x \\overset \\text def x A F x is a contraction around \\bar x \\in \\Pi K \\ell^1 \\nu, \\mathbb Z . To rigorously compute the bounds Y, Z 1, Z 2 , we enclose all relevant data into intervals. \"\"\" iβ interval 1 interval 10 , interval 4 , interval 1 ic interval c ix bar interval x bar iA K interval A K md\"\"\" We choose a value for the weight \\nu for the Banach space \\ell^1 \\nu, \\mathbb Z . \"\"\" ν interval 1.1 does not have to be exactly 1 10 X Ell1 GeometricWeight ν md\"\"\" We are now in the Newton Kantorovich context and thus need to derive the appropriate bounds. \"\"\" md\" Computing Y \" md\"\"\" This concerns the bound on the residue A F \\bar x . Determining the residue requires only a finite computation. Indeed, since \\bar x \\bar x k 0 for |k| 2K we infer that \\Pi 2K F \\bar x 0 , and F \\bar x can be computed explicitly. In turn, this implies that A F \\bar x \\Pi 2K A \\Pi 2K F \\bar x . We conclude that \\|A F \\bar x \\| X \\|\\Pi 2K A \\Pi 2K F \\bar x \\| X requires only a finite computation, which we can perform with interval arithmetic to get a rigorous upper bound Y \\ge \\|A F \\bar x \\| X . \"\"\" function bound Y x bar, β, c, A, X K order x bar space Fourier 2K, frequency x bar Fx F x bar, β, c, space Id interval I ext A complex project Id, space, space ext A K K, K K coefficients A return norm ext A Fx, X end Y bound Y ix bar, iβ, ic, iA K, X md\" Computing Z 1 \" md\"\"\" This concerns the bound on the operator I A DF \\bar x . In the analysis we will split the bound in a part which is computable by \"brute force\" and an estimate of the tail. The triangle inequality is often helpful for such arguments, but in our case the characterization of the operator norm gives an additional tool. In particular we will use that for any K' \\in \\mathbb N we have that ```math \\| M \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\max \\left \\| M \\Pi K' \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z , \\| M \\Pi K' \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\right . ``` It follows from the expression for DF x that DF \\bar x is an finite bandwidth operator. It follows from the block diagonal structure of A that this implies that ```math A DF \\bar x \\Pi 2K A K \\Pi K \\Pi K DF \\bar x \\Pi 2K \\Pi K DF \\bar x \\Pi 2K , ``` and we see that this expression does not involve A K . Furthermore, it also follows from the block diagonal structure of A and the finite bandwidth of DF \\bar x that ```math A DF \\bar x \\Pi 2K A \\Pi 3K DF \\bar x \\Pi 2K \\Pi 3K A DF \\bar x \\Pi 2K , ``` which can be represented as a matrix and requires only a finite computation to evaluate. By choosing K' 2K we can thus split the computation of the norm in two parts ```math \\begin aligned \\|I A &DF \\bar x \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\\\ & \\max \\left \\|\\Pi 3K I A DF \\bar x \\Pi 2K \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z , \\| I ADF \\bar x \\Pi 2K \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\right . \\end aligned ``` Provided that K \\ge \\sqrt \\beta 2 , we conclude that ```math \\|I ADF \\bar x \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\|\\Pi 3K 1 I ADF \\bar x \\Pi 2K 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z . ``` The latter operator can be represented by a finite matrix and we can compute the operator norm \\|I ADF \\bar x \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z using interval arithmetic to obtain the bound Z 1 . \"\"\" function bound Z₁ x bar, β, A, X K order x bar domain Fourier 2K, frequency x bar codomain Fourier 3K, frequency x bar DFx DF x bar, β, domain, codomain Id interval I ext A complex project Id, codomain, codomain ext A K K, K K coefficients A return opnorm Id ext A DFx, X end Z₁ bound Z₁ ix bar, iβ, iA K, X md\" Computing Z 2 \" md\"\"\" This concerns the bound on the operator A DF x DF \\bar x . Since this is a Lipschitz bound on the first derivative, one approach is to bound the second derivative. However, here we just do a direct computation to see that A DF x DF \\bar x h 2 A \\Lambda^ 1 x \\bar x h , hence by the Banach algebra property and the definition of the operator norm we arrive at ```math \\|A DF x DF \\bar x h\\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\le 2 \\|A \\Lambda^ 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\|x \\bar x \\| \\ell^1 \\nu, \\mathbb Z \\|h\\| \\ell^1 \\nu, \\mathbb Z . ``` We thus need to bound 2 \\|A \\Lambda^ 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z . Since the operator \\Lambda^ 1 is diagonal, it has a natural restriction to \\Pi K \\ell^1 \\nu, \\mathbb Z . Assume N \\ge \\sqrt \\beta 2 . Then \\|A \\Lambda^ 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\max\\left \\|A K \\Lambda^ 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z , |\\lambda K 1 |^ 1 \\right Hint consider \\|A \\Lambda^ 1 e k\\| \\mathscr B \\ell^1 \\nu, \\mathbb Z for |k|\\le K and for |k| K separately . \"\"\" function bound Z₂ β, A, X K order domain A return 2max opnorm Λ⁻¹ β, domain A A, X , abs K 1 ^2 im β 1 K 1 β 2 end Z₂ bound Z₂ iβ, iA K, X md\" Finishing the CAP\" md\"\"\" To determine the values of r that satisfy the radii polynomial inequalities, we use the `interval of existence` function from RadiiPolynomial. This function returns an interval of existence, within which all contained values satisfy the contraction conditions. \"\"\" ie interval of existence Y, Z₁, Z₂, Inf r inf ie md\"\"\" To guarantee that the fixed point of T is a zero of F , we must check that A is injective. This property comes as a by product of the contraction argument. Indeed, \\|I A DF \\bar x \\| \\le Z 1 1 ensures that A DF \\bar x is invertible, which implies that A is surjective. By construction, A K is surjective and A is injective if and only if A K is injective. Since A K can be represented by a finite square matrix, it follows that A must also be injective. Therefore, we have proved the existence of a zero \\tilde x of F such that ```math \\tilde x \\bar x \\gamma, ``` where \\gamma \\in \\ell^1 \\nu, \\mathbb Z is not known explicitly, but satisfies \\| \\gamma \\| \\nu \\le r . Our choice of norm also gives us a C^0 error bound for the function ```math \\begin aligned \\max t \\in 0, 2\\pi | \\sum k \\in \\mathbb Z \\tilde x k e^ i k t \\sum |k| \\le K \\bar x k e^ i k t | & \\max t \\in 0, 2\\pi | \\sum k \\in \\mathbb Z \\tilde x k \\bar x k e^ i k t | \\\\ &\\le \\| \\tilde x \\bar x \\| \\nu \\\\ &\\le r. \\end aligned ``` \"\"\" begin rigorous eval x, r, t interval real x t , r format midpoint ts LinRange 0, 2π, 101 plot interval ts i , ts i 1 , rigorous eval ix bar, r, interval ts i , ts i 1 for i 1 length ts 1 label \"\", color palegreen3 plot ts, t real x bar t label \"x bar\", color royalblue1, linewidth 3 xlims 0, 2π xlabel \"t\" end "},{"url":"mod5/manifolds_lecture_notes/","title":"Lorenz system","tags":["lecture","module5"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 5 section 2 order 0.6 title \"Lorenz system\" tags \"lecture\", \"module5\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, LinearAlgebra html\"\"\" style main margin right auto text align justify style \"\"\" TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\"\"\" A one dimensional local stable manifold in the Lorenz system \"\"\" md\"\"\" The Lorenz system is given by \\begin align \\dot x f x \\begin pmatrix \\sigma x 2 x 1 \\\\ \\rho x 1 x 2 x 1 x 3 \\\\ \\beta x 3 x 1 x 2 \\end pmatrix \\end align where \\sigma,\\rho, \\beta 0 are parameters. It is straightforward Exercise to verify that if \\rho 1 , there are two nontrivial equilibria given by \\left\\ \\begin pmatrix \\sqrt \\beta \\rho 1 \\\\ \\sqrt \\beta \\rho 1 \\\\ \\rho 1 \\end pmatrix , \\quad \\begin pmatrix \\sqrt \\beta \\rho 1 \\\\ \\sqrt \\beta \\rho 1 \\\\ \\rho 1 \\end pmatrix \\right\\ . \"\"\" md\"\"\" We make the following assumptions Assume that \\rho 1 , and let us choose the equilibrium solution to be \\begin align \\tilde x \\begin pmatrix \\sqrt \\beta \\rho 1 \\\\ \\sqrt \\beta \\rho 1 \\\\ \\rho 1 \\end pmatrix . \\end align Assume that there is a unique stable real eigenvalue \\lambda 0 with associated eigenvector \\xi \\in \\mathbb R ^3 . Hence, the dimension of W^s \\text loc \\tilde x is one, that is m 1 . \"\"\" Markdown.MD Markdown.Admonition \"warning\", \"Remark\", md\"\"\" For \\rho 24.75 , \\sigma 10 and \\beta 8 3 , Df \\tilde x has one real negative eigenvalues and two complex conjugate eigenvalues with positive real parts Exercise . In this case, the local stable manifold W^s \\text loc \\tilde x is one dimensional. \"\"\" md\"\"\" Under the above assumptions, m 1 , and the map F is given by \\begin align F a a \\mathcal K \\phi a c, \\quad \\quad \\quad \\rm where \\quad \\phi a \\begin pmatrix \\sigma a 2 a 1 \\\\ \\rho a 1 a 2 a 1 a 3 \\\\ \\beta a 3 a 1 a 2 \\end pmatrix \\end align where a i a j is the Cauchy product defined by \\begin align a i a j n \\sum k 0 ^n a i k a j n k \\end align The following result will be useful when performing the nonlinear analysis. \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise Banach algebra \", md\"\"\" Prove that for all a 1,a 2 \\in \\ell^1 , \\|a 1 a 2\\| 1 \\le \\|a 1\\| 1 \\|a 2\\| 1 . \"\"\" md\"\"\" Note that in the case of a one dimensional manifold, the sequences are indexed over a single index running over \\mathbb N , as opposed to the more general multi index case of an m dimensional stable manifold. In the 1D case, \\begin align \\ell^1 \\left\\ c c n n \\ge 0 c n \\in \\mathbb R , \\quad \\|c\\| 1 \\sum n 0 ^\\infty |c n| \\infty \\right\\ \\end align \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise\", md\"\"\" Show that for all a a 1,a 2,a 3 \\in \\mathcal X \\ell^1 ^3 , F a \\in \\mathcal X . That shows that F \\mathcal X \\to \\mathcal X . \"\"\" md\"\"\" Evaluating the operator norm \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise characterization of operator norms on product of sequence spaces \", md\"\"\" Consider the Banach space \\mathcal X \\ell^1 ^n with norm \\begin align \\|a\\| \\mathcal X \\sum i 1 ^n \\| a i \\| 1. \\end align Let \\Gamma \\in B \\mathcal X be a bounded linear operator acting on \\mathcal X \\ell^1 ^n and represented by \\begin align \\Gamma \\begin pmatrix \\Gamma 1,1 & \\cdots & \\Gamma 1,n \\\\ \\vdots & \\ddots & \\vdots \\\\ \\Gamma n,1 & \\cdots & \\Gamma n,n \\end pmatrix \\end align where each \\Gamma i,j is a bounded linear operator on \\ell^1 . More explicitly, \\Gamma acts on an element a a 1,\\dots,a n \\in \\mathcal X as \\begin align \\Gamma a \\left \\Gamma a 1,\\dots, \\Gamma a n \\right \\left \\sum j 1 ^n \\Gamma 1,j a j , \\dots, \\sum j 1 ^n \\Gamma n,j a j \\right , \\end align where \\Gamma i,j a j n 1 \\sum n 2 \\ge 0 \\Gamma i,j n 1,n 2 a j n 2 . Then, show that \\begin align \\boxed \\|\\Gamma\\| B \\mathcal X \\max j 1,\\dots,n \\sum i 1 ^n \\| \\Gamma i,j \\| B \\ell^1 \\end align where \\begin align \\|\\Gamma i,j \\| B \\ell^1 \\sup n 2 \\ge 0 \\sum n 1 \\ge 0 | \\Gamma i,j n 1,n 2 | . \\end align \"\"\" md\"\"\" Here is an example of how to compute the operator norm of \\pi^ \\le 5 \\mathcal K \"\"\" function K λ, N op zeros typeof λ , Taylor N , Taylor N for n 2 N op n,n inv λ n end return op end begin mat K 2.0, 5 M zeros Taylor 5 ^3, Taylor 5 ^3 The operator K component M, 1, 1 . mat component M, 2, 2 . mat component M, 3, 3 . mat ell1 Ell1 no entry means that the weight is 1 X NormedCartesianSpace ell1, ell1, ell1 , ell1 each space has l1 and the outer norm is l1 opnorm M, X this is equivalent to opnorm M, 1 end Markdown.MD Markdown.Admonition \"note\", \"Exercise\", md\"\"\" Show theoretically that \\|\\mathcal K \\| B \\mathcal X \\le \\frac 1 2|\\lambda| \"\"\" md\"\"\" Finite dimensional projection \"\"\" md\"\"\" Computing an approximate solution to F 0 requires first considering a finite dimensional projection. We need the projection operator on a finite number of Taylor coefficients N 1 coefficients and its complement \\begin align \\pi^ \\leq N b n \\begin cases b n, & n 0,\\dots,N, \\\\ 0, & n N, \\end cases & \\qquad\\qquad \\pi^ N b n \\begin cases 0, & n 0,\\dots,N, \\\\ b n, & n N. \\end cases \\end align Now, given three sequences a 1,a 2,a 3 and for a a 1,a 2,a 3 , consider the finite dimensional projection on a finite number of Taylor coefficients 3 N 1 coefficients and its complement \\begin align \\pi^ \\leq N a \\left \\pi^ \\leq N a 1,\\pi^ \\leq N a 2,\\pi^ \\leq N a 3 \\right \\qquad \\rm and \\qquad \\pi^ N a \\left \\pi^ N a 1,\\pi^ N a 2,\\pi^ N a 3 \\right \\end align so that a \\pi^ \\leq N a \\pi^ N a and \\pi^ \\leq N \\pi^ N 0 \\pi^ N \\pi^ \\leq N . The range \\pi^ \\leq N \\mathcal X is finite dimensional, and the restriction of \\pi^ \\leq N F to \\pi^ \\leq N \\mathcal X , which we denote by F^ \\leq N , is what we will work with in the computer. An implementation is given below, as well as an implementation of its derivative. \"\"\" md\"\"\" Numerics \"\"\" md\"\"\" Implementation code for the finite dimensional projection F^ \\leq N \"\"\" function F a, x, λ, ξ, par, N a₁, a₂, a₃ eachcomponent a σ, ρ, β par F₁ project a₁ K λ, N σ a₂ a₁ , Taylor N F₁ 0 x 1 F₁ 1 ξ 1 F₂ project a₂ K λ, N a₁ ρ a₃ a₂ , Taylor N F₂ 0 x 2 F₂ 1 ξ 2 F₃ project a₃ K λ, N a₁ a₂ β a₃ , Taylor N F₃ 0 x 3 F₃ 1 ξ 3 return Sequence Taylor N ^3, coefficients F₁ coefficients F₂ coefficients F₃ end md\"\"\" Implementation code for the Jacobian matrix DF^ \\leq N \"\"\" function DF a, λ, par, N a₁, a₂, a₃ eachcomponent a σ, ρ, β par D₁F₁ I K λ, N σ D₁F₁ 0, . 0 D₁F₁ 1, . 0 D₁F₁ 0,0 D₁F₁ 1,1 1 D₂F₁ K λ, N σ D₃F₁ zeros Taylor N , Taylor N D₁F₂ K λ, N project Multiplication ρ a₃ , Taylor N , Taylor N D₂F₂ I K λ, N 1 D₂F₂ 0, . 0 D₂F₂ 1, . 0 D₂F₂ 0,0 D₂F₂ 1,1 1 D₃F₂ K λ, N project Multiplication a₁ , Taylor N , Taylor N D₁F₃ K λ, N project Multiplication a₂ , Taylor N , Taylor N D₂F₃ K λ, N project Multiplication a₁ , Taylor N , Taylor N D₃F₃ I K λ, N β D₃F₃ 0, . 0 D₃F₃ 1, . 0 D₃F₃ 0,0 D₃F₃ 1,1 1 return LinearOperator Taylor N ^3, Taylor N ^3, coefficients D₁F₁ coefficients D₂F₁ coefficients D₃F₁ coefficients D₁F₂ coefficients D₂F₂ coefficients D₃F₂ coefficients D₁F₃ coefficients D₂F₃ coefficients D₃F₃ end md\"\"\" From now on, we fix the parameters in the Lorenz system to be the classical ones, namely \\begin align \\rho 28, \\quad \\sigma 10 \\quad \\text and \\quad \\beta 8 3. \\end align \"\"\" begin σ, ρ, β 10.0, 28.0, 8 3 par σ, ρ, β tσ, tρ, tβ interval 10.0 , interval 28.0 , interval 8 interval 3 tpar tσ, tρ, tβ end md\"\"\" For these parameters, there is a unique real negative eigenvalue \\lambda of Df \\tilde x with associated eigenvector \\xi \\in \\mathbb R ^3 see the above Remark . \"\"\" md\"\"\" Rigorous computation of the stable eigenvalue \\lambda and eigenvector \\xi \\in \\mathbb R ^3 \"\"\" md\"\"\" While we could work hard and compute the eigenpair \\lambda,\\xi by hand, we resort to a computer assisted proof to obtain a rigorous enclosure. Here is a code that performs this task. \"\"\" md\"\"\" Numerical approximation and rigorous enclosure of the equilibrium solution \\tilde x \"\"\" begin bx sqrt β ρ 1 , sqrt β ρ 1 , ρ 1 Numerical approximation tx sqrt tβ tρ interval 1 , sqrt tβ tρ interval 1 , tρ interval 1 Rigorous enclosure end md\"\"\" Jacobian matrix for the Lorenz system \"\"\" function Df u, par σ, ρ, β par u₁, u₂, u₃ u return σ σ zero u₃ ρ u₃ one u₂ u₁ u₂ u₁ β end md\"\"\" Computation of an approximate eigenpair \"\"\" begin approx eigenvalues, approx eigenvectors eigen Df bx, par bλ, bξ real approx eigenvalues 1 , real approx eigenvectors ,1 end md\"\"\" Zero finding problem for an eigenpair see Part I of the tutorial \"\"\" function F eig X, M, ū λ X 1 u X 2 end return Sequence sum u . conj ū 1 M u λ u end md\"\"\" The Jacobian of the zero finding map for an eigenpair \"\"\" function DF eig X, M, ū λ X 1 u X 2 end n length X 1 temp zeros eltype X , n 1, n 1 temp 2 end,1 u temp 1,2 end ū' temp 2 end,2 end M λ I return LinearOperator temp end md\"\"\" A Newton Kantorovich Theorem to obtain a computer assisted proof for an eigenpair \"\"\" function validate eigenpair λ, u, M X λ u ū u iA interval. inv DF eig X, mid. M , ū iX interval. X Y norm iA F eig iX, M, ū , 1 Z₁ opnorm I iA DF eig iX, M, ū , 1 Z₂ opnorm iA, 1 return interval of existence Y, Z₁, Z₂, Inf end md\"\"\" The rigorous enclosure of the eigenpair \"\"\" begin err eig inf validate eigenpair bλ, bξ, Df tx, tpar tλ interval bλ, err eig format midpoint tξ interval. bξ, err eig format midpoint end md\"\"\" We introduce a rescaling for the eigenvector will impact the decay of the Taylor coefficients \"\"\" begin eigenvector scaling 60 bξ scaled eigenvector scaling bξ tξ scaled eigenvector scaling tξ end md\"\"\" Compute an numerical approximation of the Taylor coefficients with Newton's method \"\"\" begin N 150 Choose a Taylor order initialguess zeros Taylor N ^3 The initial guess consists of the linear approximation of the manifold for i 1 3 component initialguess, i 0 bx 1 component initialguess, i 1 bξ 1 end a, newton a F a, bx, bλ, bξ scaled, par, N , DF a, bλ, par, N , initialguess end md\"\"\" Plot the image of the parameterization \"\"\" begin using OrdinaryDiffEq using GLMakie function lorenz du, u, p, t du 1 10.0 u 2 u 1 du 2 u 1 28.0 u 3 u 2 du 3 u 1 u 2 8 3 u 3 end u0 0.0 10.0 10.0 tspan 0.0, 50.0 prob ODEProblem lorenz, u0, tspan sol solve prob, Tsit5 fig Figure ax Axis3 fig 1,1 aspect data, azimuth 3π 5 lines ax, Point3f sol t for t LinRange tspan..., 10 001 color royalblue1 lines ax, Point3f a t for t LinRange 1, 1, 101 color salmon, linewidth 3 meshscatter ax, Point3f bx , Point3f bx 1 , bx 2 , bx 3 , Point3f 0,0,0 markersize 1, color palegreen3 fig end md\"\"\" Choosing the approximate inverse A for the Fréchet derivative DF \\bar a \"\"\" md\"\"\" The derivative of F a a \\mathcal K \\phi a c can now be written compactly as \\begin align DF a I \\mathcal K D\\phi a \\end align acting on an element b b 1,b 2,b 3 \\in \\mathcal X as \\begin align DF a b b \\mathcal K D\\phi a b. \\end align \"\"\" md\"\"\" We use the projection to split A into a finite part and a tail part \\begin align A A^ \\le N \\pi^ \\le N I^ N \\pi^ N ,\\end align where A^ \\le N is a linear map to be chosen below on \\pi^ \\le N \\mathcal X and I^ N is the identity on \\pi^ N \\mathcal X . Hence by construction one may also write A as \\begin align A \\pi^ \\le N A^ \\le N \\pi^ \\le N \\pi^ N I^ N \\pi^ N .\\end align \"\"\" md\"\"\" We compute a numerical inverse of the Jacobian DF^ \\le N \\bar a and we denote this inverse matrix by A^ \\le N . Moreover, we compute the operator norm of the operator A . \"\"\" begin A finite interval. inv DF a, bλ, par, N opnorm A finite opnorm A finite, 1 opnormA max opnorm A finite, 1 end md\"\"\" The Newton Kantorovich proof \"\"\" md\"\"\" We are now in the Newton Kantorovich context and thus need to derive the appropriate bounds. \"\"\" md\"\"\" The following code is used to compute the operator \\pi^ N acting on a single sequence or a list of sequences \"\"\" function tail x, N get the tail of a Taylor series y zeros eltype x , space x for n N 1 order x y n x n end return y end md\"\"\" The bound Y \"\"\" md\"\"\" Recall that that bound Y satisfies \\| A F \\bar a \\| \\mathcal X \\le Y . Note that A F \\bar a \\pi^ \\le 2N A F \\bar a \\stackrel 0 \\overbrace \\pi^ 2N A F \\bar a , since \\bar a 1 \\bar a 2 n \\bar a 1 \\bar a 3 n 0 for n 2N . Hence, \\begin align A F \\bar a & \\pi^ \\le 2N A F \\bar a \\\\ & \\pi^ \\le N A F \\bar a \\pi^ \\le 2N \\pi^ \\le N A F \\bar a \\\\ & \\pi^ \\le N A^ \\le N F^ \\le N \\bar a \\pi^ \\le 2 N \\pi^ \\le N \\bar a \\mathcal K \\phi \\bar a c \\\\ & \\pi^ \\le N A^ \\le N F^ \\le N \\bar a \\pi^ \\le 2 N \\pi^ \\le N \\mathcal K \\phi \\bar a \\end align The code just below computes with interval arithmetic the bound Y satisfying \\begin align \\| A F \\bar a \\| \\mathcal X \\le \\| \\pi^ \\le N A^ \\le N F^ \\le N \\bar a \\| \\mathcal X \\frac 1 |\\lambda| N 1 \\| \\pi^ \\le 2 N \\pi^ \\le N \\phi \\bar a \\| \\mathcal X \\le Y. \\end align \"\"\" begin full F F interval. a , tx, tλ, tξ scaled, par, 2N Y norm A finite full F, 1 sum i norm tail component full F, i , N , 1 , 1 3 abs tλ N 1 end md\"\"\" The bound Z 1 \"\"\" md\"\"\" We begin with three Exercises that will be useful in deriving the Z 1 bound. \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise 1 for Z 1\", md\"\"\" Show that \\| \\pi^ N \\mathcal K \\| B \\mathcal X \\le \\frac 1 |\\lambda| N 1 . \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise 2 for Z 1\", md\"\"\" Show that \\begin align \\| D\\phi \\bar a \\| B \\mathcal X \\max i 1,2,3 \\sum j 1 ^3 \\| \\partial i \\phi j \\bar a \\| 1 \\end align \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ . \"\"\" Foldable \"\"\"Hint\"\"\", md\"\"\" Note that \\begin align D\\phi a \\begin pmatrix \\sigma I & \\sigma I & 0 \\\\ \\rho I \\mathcal M a 3 & I & \\mathcal M a 1 \\\\ \\mathcal M a 2 & \\mathcal M a 1 & \\beta I \\end pmatrix \\end align , where \\mathcal M a i \\in B \\ell^1 is the multiplication operator defined by \\mathcal M a i b a i b with norm \\| \\mathcal M a i \\| B \\ell^1 \\| a i\\| 1 . \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise 3 for Z 1\", md\"\"\" Show that \\pi^ \\le N D\\phi \\bar a \\pi^ N 0 . \"\"\" Foldable \"\"\"Hint\"\"\", md\"\"\" Note that each none blocks of D\\phi \\bar a is lower triangular since of the Cauchy products. \"\"\" md\"\"\" Recall that the bound Z 1 satisfies \\begin align \\| I A DF \\bar a \\| B \\mathcal X \\le Z 1. \\end align We use a similar splitting as in the case of periodic orbits using Fourier series see Part 3 of the tutorial , and observe that \\begin align \\|\\Gamma\\| B \\mathcal X \\max \\Big \\|\\Gamma \\pi^ \\le N \\| B \\mathcal X , \\|\\Gamma \\pi^ N \\| B \\mathcal X \\Big . \\end align We compute separately two bounds M 1,M 2 satisfying \\| I A DF \\bar a \\pi^ \\le N \\| B \\mathcal X \\le M 1 and \\| I A DF \\bar a \\pi^ N \\| B \\mathcal X \\le M 2 . Recall that A A^ \\le N \\pi^ \\le N I^ N \\pi^ N . \"\"\" md\"\"\" Computing M 1 \"\"\" md\"\"\" Note first that \\begin align \\| I A DF \\bar a \\pi^ \\le N \\| B \\mathcal X &\\le \\| I A^ \\le N \\pi^ \\le N DF \\bar a \\pi^ \\le N \\| B \\mathcal X \\| \\pi^ N DF \\bar a \\pi^ \\le N \\| B \\mathcal X , \\end align where \\pi^ N DF \\bar a \\pi^ \\le N \\pi^ N I \\mathcal K D\\phi \\bar a \\pi^ \\le N \\pi^ N \\pi^ \\le N \\pi^ N \\mathcal K D\\phi \\bar a \\pi^ \\le N \\pi^ N \\mathcal K D\\phi \\bar a \\pi^ \\le N , and hence by Exercises 1 and 2 \\begin align \\| \\pi^ N DF \\bar a \\pi^ \\le N \\| B \\mathcal X & \\le \\| \\pi^ N \\mathcal K \\| B \\mathcal X \\| \\pi^ N D\\phi \\bar a \\| B \\mathcal X \\\\ & \\le \\frac 1 |\\lambda| N 1 \\| D\\phi \\bar a \\| B \\mathcal X \\\\ & \\le \\frac 1 |\\lambda| N 1 \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ \\end align Using interval arithmetic, one can compute an upper bound M 1 such that \\begin align \\| I A DF \\bar a \\pi^ \\le N \\| B \\mathcal X &\\le \\| I A^ \\le N \\pi^ \\le N DF \\bar a \\pi^ \\le N \\| B \\mathcal X \\frac 1 |\\lambda| N 1 \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ \\le M 1 \\end align \"\"\" md\"\"\" Computing M 2 \"\"\" md\"\"\" Now, for M 2 \\begin align \\| I A DF \\bar a \\pi^ N \\| B \\mathcal X & \\| I A^ \\le N \\pi^ \\le N I^ N \\pi^ N DF \\bar a \\pi^ N \\| B \\mathcal X \\\\ &\\le \\| A^ \\le N \\stackrel 0 \\overbrace \\pi^ \\le N DF \\bar a \\pi^ N \\| B \\mathcal X \\| \\pi^ N \\pi^ N DF \\bar a \\pi^ N \\| B \\mathcal X , \\end align since \\pi^ \\le N DF \\bar a \\pi^ N \\pi^ \\le N I \\mathcal K D\\phi \\bar a \\pi^ N \\pi^ \\le N \\pi^ N \\pi^ \\le N D\\phi \\bar a \\pi^ N \\pi^ \\le N D\\phi \\bar a \\pi^ N 0 by Exercise 3. Now, using a similar idea as for M 1 , one can show that \\begin align \\| \\pi^ N \\pi^ N DF \\bar a \\pi^ N \\| B \\mathcal X \\le \\frac 1 |\\lambda| N 1 \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ \\end align . \"\"\" md\"\"\" Computing Z 1 \"\"\" md\"\"\" Since clearly M 2 \\le M 1 , then we let Z 1 M 1 . Then, using interval arithmetic, one can compute an upper bound Z 1 such that \\begin align \\| I A DF \\bar a \\| B \\mathcal X &\\le \\| I A^ \\le N \\pi^ \\le N DF \\bar a \\pi^ \\le N \\| B \\mathcal X \\frac 1 |\\lambda| N 1 \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ \\le Z 1 \\end align which we do below. \"\"\" begin a₁, a₂, a₃ eachcomponent interval. a opnorm Dϕ max tσ norm ρ a₃, 1 norm a₂, 1 , tσ 1 norm a₁, 1 , norm a₁, 1 β Z₁ opnorm I A finite DF interval. a , tλ, tpar, N , 1 opnorm Dϕ abs tλ N 1 end md\"\"\" The bound Z 2 \"\"\" md\"\"\" This concerns the bound on the operator A DF a DF \\bar a . Since this is a Lipschitz bound on the first derivative, one approach is to bound the second derivative. However, here we just do a direct computation to see that A DF a DF \\bar a b A \\mathcal K D\\phi a D\\phi \\bar a b . Note that \\begin align D\\phi a D\\phi \\bar a b \\begin pmatrix 0 & 0 & 0 \\\\ 0 \\mathcal M a 3 \\mathcal M \\bar a 3 & 0 & \\mathcal M a 1 \\mathcal M \\bar a 1 \\\\ \\mathcal M a 2 \\mathcal M \\bar a 2 & \\mathcal M a 1 \\mathcal M \\bar a 1 & 0 \\end pmatrix \\begin pmatrix b 1 \\\\ b 2 \\\\ b 3 \\end pmatrix \\begin pmatrix 0 \\\\ a 3 \\bar a 3 b 1 a 1 \\bar a 1 b 3 \\\\ a 2 \\bar a 2 b 1 a 1 \\bar a 1 b 2\\end pmatrix \\end align , hence by the Banach algebra property and the definition of the operator norm we arrive at \\begin align \\|A DF a DF \\bar a b\\| \\mathcal X &\\le \\|A\\| B \\mathcal X \\| \\mathcal K \\| B \\mathcal X \\| a 3 \\bar a 3 \\| 1 \\|b 1\\| 1 \\| a 1 \\bar a 1\\| 1 \\|b 3\\| 1 \\|a 2 \\bar a 2\\| 1 \\|b 1\\| 1 \\|a 1 \\bar a 1\\| 1 \\|b 2\\| 1 \\\\ & \\le \\|A\\| B \\mathcal X \\| \\mathcal K \\| B \\mathcal X \\|a \\bar a \\| \\mathcal X \\|b\\| \\mathcal X \\\\ & \\frac 1 2|\\lambda| \\|A\\| B \\mathcal X \\|a \\bar a \\| \\mathcal X \\|b\\| \\mathcal X . \\end align Computing Z 2 boils down to compute or bound \\frac 1 2|\\lambda| \\|A\\| B \\mathcal X . \"\"\" Z₂ 2 abs tλ opnormA md\"\"\" Finishing the CAP \"\"\" md\"\"\" We now evaluate the radii polynomial to finish the Newton Kantorovich proof. \"\"\" begin r star Inf r interval of existence Y, Z₁, Z₂, r star end "},{"url":"mod5/theory_manifolds_lecture_notes/","title":"Parameterization method","tags":["lecture","module5"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 5 section 1 order 0.5 title \"Parameterization method\" tags \"lecture\", \"module5\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, LinearAlgebra html\"\"\" style main margin right auto text align justify style \"\"\" TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\"\"\" Local stable manifolds of equilibria \"\"\" md\"\"\" This part of the tutorial is concerned with the computation of local stable manifolds the computation of local unstable manifolds is done similarly . Our focus is the development of efficient high order approximation methods with validated error bounds for these manifolds. To be more specific, consider a differential equation \\dot x f x with associated flow \\varphi\\colon \\mathbb R \\times \\mathbb R ^n \\to \\mathbb R ^n and assume that \\tilde x is an equilibrium. The stable set for \\tilde x is defined to be \\begin align W^s \\tilde x \\ x\\in\\mathbb R ^n \\lim t\\to \\infty \\varphi t,x \\tilde x \\ . \\end align At this level of generality there is very little that can be said about W^s \\tilde x , however a natural step is to simplify the problem by restricting the dynamics to a neighborhood of \\tilde x . Hence, let us define a more localized notion of a stable set. Given a neighborhood U of \\tilde x the associated local stable manifold is given by \\begin align W^s \\text loc \\tilde x W^s \\tilde x ,U \\ x \\in W^s \\tilde x \\mid \\varphi 0,\\infty ,x \\subset U \\ . \\end align \"\"\" md\"\"\" The Parameterization Method \"\"\" md\"\"\" Assumptions \"\"\" md\"\"\" For sake of simplicity of the presentation , we make the following assumptions \\tilde x is an equilibrium solution of \\dot x f x there are exactly m stable eigenvalues \\ \\lambda 1, \\ldots, \\lambda m \\ , they are real and there exist m linearly independent associated eigenvector \\xi i \\in \\mathbb R ^n Denote \\begin align \\Lambda \\begin pmatrix \\lambda 1 & \\ldots & 0 \\\\ \\vdots & \\ddots & \\vdots \\\\ 0 & \\ldots & \\lambda m \\end pmatrix \\in M m \\mathbb R \\quad \\text and \\quad A 0 \\xi 1 | \\ldots | \\xi m \\end align an n \\times m matrix whose columns are the associated stable eigenvectors. The linearized equation restricted to the stable subspace is \\dot \\theta \\Lambda \\theta \\theta \\in \\mathbb R ^m with associated flow e^ \\Lambda t . \"\"\" md\"\"\" The conjugacy relation \"\"\" md\"\"\" Denote by B^m \\ \\theta \\theta 1,\\dots,\\theta m |\\theta j| \\le 1 \\ the unit closed \\ell^\\infty ball in \\mathbb R ^m . To solve for the parameterization P B^m \\to \\mathbb R ^n of the local stable manifold, we impose 1 P 0 \\tilde x equilibria are mapped to one another 2 DP 0 A 0 P is tangent to the stable eigenspace \\mathbb E ^s at 0 3 \\varphi t, P \\theta P e^ \\Lambda t \\theta , for all \\theta \\in B^m conjugacy relation \"\"\" Foldable \"\"\"Why such parameterization provides a local stable manifold?\"\"\", md\"\"\" We get that P B^m \\subset W^s \\text loc \\tilde x , since for \\theta \\in B^m , \\begin align \\lim t \\to \\infty \\varphi t, P \\theta \\lim t \\to \\infty P e^ \\Lambda t \\theta P\\left \\lim t \\to \\infty e^ \\Lambda t \\theta \\right P 0 \\tilde x . \\end align \"\"\" md\"\"\" The parameterization lemma \"\"\" md\"\"\" Remark. The utility of 3 above is limited by the appearance of the flow \\varphi , which is only known implicitly. Let us introduce a more practical infinitesimal version of the conjugacy relation, which requires the following important result.\"\"\" Markdown.MD Markdown.Admonition \"tip\", \"Parameterization Lemma\", md\"\"\" Let P \\colon B^m \\to \\mathbb R ^n be a function satisfying 1 and 2 . Then P satisfies 3 \\Longleftrightarrow P solves the partial differential equation \\begin align \\text 4 \\quad DP \\theta \\Lambda \\theta f P \\theta , \\quad \\theta \\in B^m. \\end align \"\"\" Foldable \"\"\"Proof\"\"\", md\"\"\" \\Longleftarrow Assume that the assumption 4 above holds and let \\theta \\in B^m . Let \\gamma t P e^ \\Lambda t \\theta . Then, \\gamma 0 P \\theta and \\begin align \\gamma' t \\frac d dt P\\left e^ \\Lambda t \\theta \\right D P\\left e^ \\Lambda t \\theta \\right \\Lambda e^ \\Lambda t \\theta f\\left P\\left e^ \\Lambda t \\theta \\right \\right f \\gamma t , \\end align that is \\gamma solves the IVP x' f x , x 0 P \\theta . By uniqueness, \\varphi t, P \\theta \\gamma t P e^ \\Lambda t \\theta . \\Longrightarrow Suppose that P solves 3 . Differentiate on both sides with respect to t \\begin align f \\varphi t,P \\theta DP e^ \\Lambda t \\theta \\Lambda e^ \\Lambda t \\theta, \\quad \\text and take t 0. \\quad \\square \\end align \"\"\" md\"\"\" From the Parameterization Lemma, to solve for the parameterization P B^m \\to \\mathbb R ^n , we impose 1 P 0 \\tilde x equilibria are mapped to one another 2 DP 0 A 0 P is tangent to the stable eigenspace \\mathbb E ^s at 0 4 DP \\theta \\Lambda \\theta f P \\theta , \\forall~\\theta \\in B^m invariance equation The invariance equation can be written more explicitly, for \\theta \\theta 1, \\ldots, \\theta m \\in B^m , as \\begin align 4 \\quad \\lambda 1 \\theta 1 \\frac \\partial \\partial \\theta 1 P \\theta 1, \\ldots, \\theta m \\ldots \\lambda m \\theta m \\frac \\partial \\partial \\theta m P \\theta 1, \\ldots, \\theta m f P \\theta 1, \\ldots, \\theta m \\end align \"\"\" md\"\"\" Taylor series representation \"\"\" md\"\"\" We use a Taylor series representation of the form \\begin align P \\theta \\sum |\\alpha| 0 ^\\infty \\begin pmatrix a 1 \\alpha \\\\ a 2 \\alpha \\\\ \\vdots \\\\ a n \\alpha \\end pmatrix \\theta^\\alpha \\end align where \\alpha \\alpha 1,\\dots,\\alpha m \\in \\mathbb N ^m , |\\alpha| \\alpha 1 \\dots \\alpha m , \\theta \\theta 1,\\dots,\\theta m and \\theta^\\alpha \\theta 1^ \\alpha 1 \\cdots \\theta m^ \\alpha m . Denote a a 1,\\dots,a n , where each a i a i \\alpha |\\alpha| \\ge 0 . Plugging the above Taylor series in equations 1 , 2 and 4 1 \\begin pmatrix a 1 0,\\dots,0 \\\\ \\vdots \\\\ a n 0,\\dots,0 \\end pmatrix \\tilde x , for |\\alpha| 0 the equilibrium solution 2 \\begin pmatrix a 1 e j \\\\ \\vdots \\\\ a n e j \\end pmatrix \\xi j , j 1,\\dots,m for |\\alpha| 1 the m stable eigenvectors 4 \\alpha \\cdot \\lambda a i \\alpha \\phi i a \\alpha , i 1,\\dots,n for |\\alpha| \\ge 2 where \\begin align \\alpha \\cdot \\lambda \\alpha 1 \\lambda 1 \\cdots \\alpha m \\lambda m \\quad \\text and \\quad f i P \\theta \\sum |\\alpha| \\ge 0 \\phi i a \\alpha \\theta^\\alpha \\end align \"\"\" md\"\"\" The Zero Finding Problem, Banach Space and Norm \"\"\" md\"\"\" For each i 1,\\dots,n , define F i a \\ F i a \\alpha \\ |\\alpha| \\ge 0 component wise by \\begin align F i a \\alpha \\begin cases a i 0,\\dots,0 \\tilde x i,& |\\alpha| 0, \\\\ a i e j \\xi j i, & |\\alpha| 1, \\rm~with~ \\alpha e j \\rm~for~ j 1,\\dots,m, \\\\ a i \\alpha \\frac 1 \\alpha \\cdot \\lambda \\phi i a \\alpha , & |\\alpha| \\ge 2. \\end cases \\end align For each i 1,\\dots,n , let c i \\ c i \\alpha\\ |\\alpha| \\ge 0 component wise as \\begin align c i \\alpha \\begin cases \\tilde x i, & \\rm~if~ |\\alpha| 0, \\\\ \\xi j , & \\rm~for~ |\\alpha| 1 \\rm~with~ \\alpha e j \\rm~for~ j 1,\\dots,m, \\\\ 0, & \\rm~if~ |\\alpha| \\ge 2 \\end cases \\end align and let c c 1,\\dots,c n . Define the diagonal operator K acting on a sequence b \\ b \\alpha\\ |\\alpha| \\ge 0 as \\begin align K b \\alpha \\begin cases 0, & \\rm~if~ |\\alpha| 0, \\\\ 0, & \\rm~if~ |\\alpha| 1, \\\\ \\frac 1 \\alpha \\cdot \\lambda b \\alpha, & \\rm~if~ |\\alpha| \\ge 2. \\end cases \\end align Define the operator \\mathcal K acting on a a 1,\\dots,a n as \\begin align \\mathcal K a K a 1,K a 2,\\dots,K a n . \\end align With the above notation, for each i 1,\\dots,n , \\begin align F i a a i K \\phi i a c i. \\end align Letting F a F 1 a ,\\dots,F n a and \\phi a \\phi 1 a ,\\dots,\\phi n a , one can densely write \\begin align F a a \\mathcal K \\phi a c \\end align Define the Banach space \\mathcal X \\ell^1 ^n , where \\begin align \\ell^1 \\left\\ c c \\alpha |\\alpha| \\ge 0 c \\alpha \\in \\mathbb R , \\quad \\|c\\| 1 \\sum |\\alpha| 0 ^\\infty |c \\alpha| \\infty \\right\\ . \\end align The norm on \\mathcal X is given by \\begin align \\|a\\| \\mathcal X \\sum i 1 ^n \\| a i \\| 1 \\end align \"\"\" md\"\"\" Code that implements the operator K \"\"\" function K λ, N op zeros typeof λ , Taylor N , Taylor N for n 2 N op n,n inv λ n end return op end K 2.0,5 Markdown.MD Markdown.Admonition \"note\", \"Exercise Compact operator \", md\"\"\" Show that the operator \\mathcal K \\mathcal X \\to \\mathcal X is compact. \"\"\" md\"\"\" We now formalize how a solution to the above zero finding problem leads to local stable manifolds of equilibria of our differential equation. \"\"\" Markdown.MD Markdown.Admonition \"lemma\", \"Lemma A solution to the zero finding problem yields a parameterization of the local stable manifold \", md\"\"\" Assume that \\tilde x is an equilibrium solution of \\dot x f x there are exactly m stable eigenvalues \\ \\lambda 1, \\ldots, \\lambda m \\ , they are real and there exist m linearly independent associated eigenvector \\xi i \\in \\mathbb R ^n . If a \\in \\mathcal X is a solution to F a 0 , then the corresponding Taylor series expansion \\begin align P \\theta \\sum |\\alpha| 0 ^\\infty \\begin pmatrix a 1 \\alpha \\\\ a 2 \\alpha \\\\ \\vdots \\\\ a n \\alpha \\end pmatrix \\theta^\\alpha \\end align converges on B^m \\ \\theta \\theta 1,\\dots,\\theta m |\\theta j| \\le 1 \\ and the function P B^m \\to \\mathbb R ^n provides a parameterization of the local stable manifold W^s \\text loc \\tilde x , that is \\begin align P B^m W^s \\text loc \\tilde x . \\end align \"\"\" md\"\"\" Rather than presenting the bounds for the Newton Kantorovich Theorem in general, let us rather focus on an example. Specifically, we compute a rigorous parameterization of a one dimensional local stable manifold of an equilibrium solution in the Lorenz system. \"\"\" "}] \ No newline at end of file +[{"url":"cheatsheets/","title":"Cheatsheets","tags":["welcome"],"text":" A Pluto.jl notebook v0.19.47 frontmatter order 2 title \"Cheatsheets\" tags \"welcome\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\" Cheatsheets\" md\"\"\" Fast track to Julia https juliadocs.github.io Julia Cheat Sheet MATLAB Julia Python comparative cheatsheet https cheatsheets.quantecon.org Plots.jl cheatsheet https github.com sswatson cheatsheets blob master plotsjl cheatsheet.pdf \"\"\" md\" IntervalArithmetic\" using IntervalArithmetic interval 1.0, 2.0 interval 1.0 2.0 3.0 4.0 md\" RadiiPolynomial\" using RadiiPolynomial x Sequence Taylor 1 , 1.0, 1.0 1 t x x 1 t ^2 1 2t t^2 Derivative 1 Derivative 1 x Multiplication x project Multiplication x , Taylor 5 , Taylor 5 y Sequence Fourier 1, 1.0 , im 0.5, 0.0, im 0.5 sin t using Plots plot LinRange π, π, 101 , t real y t interval x norm x, 1 ν interval 1.1 norm interval x , Ell1 GeometricWeight ν "},{"url":".","title":"index","tags":["homepage"],"text":"Computer-assisted proofs in nonlinear analysis"},{"url":"installation/","title":"Software installation","tags":["welcome"],"text":"Step 1: Install Julia Download the current stable release of Julia on https://julialang.org/downloads , using the correct version for your operating system (Linux x86, Mac, Windows, etc). Step 2: Install RadiiPolynomial Next we will install RadiiPolynomial , the library for computer-assisted proofs that we will be using during the course. RadiiPolynomial is a Julia package designed for computer-assisted proofs relying on spectral methods and the contraction mapping theorem. Open the Julia REPL . This is the command-line interface to Julia: there you type a command, and when you press ENTER, it runs, and you see the result. To install RadiiPolynomial, we want to run a package manager command . To switch from Julia mode to Pkg mode , type ] (closing square bracket) at the julia> prompt: \n julia> ]\n\n (@v 1.10 ) pkg> \n The line turns blue and the prompt changes to pkg> , telling you that you are now in package manager mode . This mode allows you to do operations on packages (also called libraries). Run the following (case sensitive) command to add (install) the package to your system by downloading it from the internet (you should only need to do this once for each installation of Julia): \n (@v 1.10 ) pkg> add RadiiPolynomial\n \n \nconst run = f => f();\nrun(async () => {\nconst versions = await (await fetch(`https://julialang-s3.julialang.org/bin/versions.json`)).json()\nconst sortby = v => v.split(\"-\")[0].split(\".\").map(parseFloat).reduce((a,b) => a*10000 + b)\nconst version_names = Object.keys(versions).sort((a,b) => sortby(a) - sortby(b)).reverse()\nconst stable = version_names.find(v => versions[v].stable)\nconsole.log({stable})\nconst pkg_stable = /\\d+\\.\\d+/.exec(stable)[0]\ndocument.querySelectorAll(\"auto-julia-version\").forEach(el => {\n console.log(el)\n el.innerText = el.getAttribute(\"short\") == null ? stable : pkg_stable\n})\n});"},{"url":"sidebar_data/","title":"sidebar_data","tags":[],"text":"Dict \"main\" \"Welcome\" collections \"welcome\" .pages, \"Module 1 finite dimensional problems\" collections \"module1\" .pages, \"Module 2 algebraic equations\" collections \"module2\" .pages, \"Module 3 Taylor integration\" collections \"module3\" .pages, \"Module 4 periodic orbits\" collections \"module4\" .pages, \"Module 5 invariant manifolds of equilibria\" collections \"module5\" .pages "},{"url":"homework/algebraic_exercise1/","title":"Sequence space properties","tags":["module2","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 1 order 1 title \"Sequence space properties\" tags \"module2\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" 1. Show that the sequence space ```math \\ell^1 \\mathbb N \\overset \\text def \\left\\ x \\in \\mathbb R ^\\mathbb N \\, \\, \\| x \\| 1 \\overset \\text def \\sum n \\ge 0 |x n| \\infty \\right\\ ``` is a Banach space. \"\"\" md\"\"\" 2. Show that \\ell^1 \\mathbb N , equipped with the Cauchy product given by ```math x y n \\overset \\text def \\sum l 0 ^n x n l y l, \\qquad n \\ge 0, ``` satisfies the Banach algebra property \\| x y \\| 1 \\le \\| x \\| 1 \\| y \\| 1 . \"\"\" md\"\"\" 3. Let x \\in \\ell^1 \\mathbb N and \\mathcal M x \\ell^1 \\mathbb N \\to \\ell^1 \\mathbb N the multiplication operator associated with x , i.e. \\mathcal M x h \\overset \\text def x h for all h \\in \\ell^1 \\mathbb N . Show that \\| \\mathcal M x \\| \\mathscr B \\ell^1 \\mathbb N \\| x \\| 1 . \"\"\" "},{"url":"homework/algebraic_exercise2/","title":"Inverse function for infinite sequences","tags":["module2","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 2 order 2 title \"Inverse function for infinite sequences\" tags \"module2\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" 1. Let v t \\sum n \\ge 0 y n t^n such that \\Pi N y is known, while its tail satisfies the estimate \\| I \\Pi N y \\| 1 \\le \\epsilon . For the zero finding problem F x \\overset \\text def x y 1 , derive explicit formulas for the bounds Y, Z 1, Z 2 in terms of \\Pi N y and \\epsilon . \"\"\" md\"\"\" 2. Find the inverse of v t e^t as a Taylor series for all t \\in 1, 1 . \"\"\" Foldable \"Hint\", md\"\"\" Recall that v t e^t \\sum n \\ge 0 y n t^n where y n 1 n . Using the Taylor remainder, obtain a bound for \\| I \\Pi N y \\| 1 . \"\"\" "},{"url":"homework/algebraic_exercise3/","title":"Radius of convergence","tags":["module2","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 3 order 3 title \"Radius of convergence\" tags \"module2\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" For \\nu \\ge 1 , consider the weighted sequence space ```math \\ell^1 \\nu, \\mathbb N \\overset \\text def \\left\\ a \\in \\mathbb R ^\\mathbb N \\, \\, \\| a \\| \\nu \\overset \\text def \\sum n \\ge 0 |a n| \\nu^n \\infty \\right\\ . ``` \"\"\" md\"\"\" 1. Show that \\ell^1 \\nu, \\mathbb N equipped with the Cauchy product is a Banach algebra. \"\"\" md\"\"\" 2. Show that \\|M\\| \\mathscr B \\ell^1 \\nu, \\mathbb N \\max l \\ge 0 \\nu^ l \\sum n \\ge 0 |M n,l | \\nu^n for all M \\in \\mathscr B \\ell^1 \\nu, \\mathbb N . In particular, for all x \\in \\ell^1 \\nu, \\mathbb N , show that \\| \\mathcal M x \\| \\mathscr B \\ell^1 \\nu, \\mathbb N \\| x \\| \\nu , where \\mathcal M x is the multiplication operator associated with x . \"\"\" md\"\"\" 3. Find the inverse of v t 2 t for all t \\in \\nu, \\nu as a Taylor series. How large can you take \\nu ? \"\"\" md\"\"\" 4. Find the inverse of v t e^t for all t \\in \\nu, \\nu as a Taylor series. How large can you take \\nu ? \"\"\" "},{"url":"homework/algebraic_exercise4/","title":"Roots","tags":["module2","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 4 order 4 title \"Roots\" tags \"module2\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" In this exercise, we will formulate a zero finding problem to compute rigorously the square root of a Fourier series. Similarly to the case of Taylor series, we discretize the function space of absolutely continuous periodic functions via the two sided sequence space ```math \\ell^1 \\mathbb Z \\overset \\text def \\left\\ x \\in \\mathbb C ^\\mathbb Z \\, \\, \\| x \\| 1 \\overset \\text def \\sum k \\in \\mathbb Z |x k| \\infty \\right\\ . ``` \"\"\" md\"\"\" 1. Let \\omega 0 . If u t \\sum k \\in \\mathbb Z x k e^ i k \\omega t and v t \\sum k \\in \\mathbb Z y k e^ i k \\omega t , then u t v t \\sum k \\in \\mathbb Z a b k e^ i k \\omega t where ```math a b k \\overset \\text def \\sum l \\in \\mathbb Z x k l y l, \\qquad k \\in \\mathbb Z . ``` Prove that \\ell^1 \\mathbb Z together with satisfies the unital Banach algebra property \\|x y\\| 1 \\le \\|x\\| 1 \\|y\\| 1 . \"\"\" md\"\"\" 2. Show that \\| M \\| \\mathscr B \\ell^1 \\mathbb Z \\max l \\in \\mathbb Z \\sum k \\in \\mathbb Z |M k,l | for all M \\in \\mathscr B \\ell^1 \\mathbb Z . Moreover, note that the multiplication operator \\mathcal M x \\ell^1 \\mathbb Z \\to \\ell^1 \\mathbb Z associated with x \\in \\ell^1 \\mathbb Z has the structure of a Toepliz matrix https en.wikipedia.org wiki Toeplitz matrix , specifically ```math \\mathcal M x \\begin pmatrix \\ddots & \\ddots & \\ddots \\\\ \\ddots & x 0 & x 1 & x 2 \\\\ \\ddots & x 1 & x 0 & x 1 & \\ddots \\\\ & x 2 & x 1 & x 0 & \\ddots \\\\ & & \\ddots & \\ddots & \\ddots \\end pmatrix , ``` For all x \\in \\ell^1 \\mathbb Z , show that \\| \\mathcal M x \\| \\mathscr B \\ell^1 \\mathbb Z \\| x \\| 1 . \"\"\" md\"\"\" 3. Given y \\in \\ell^1 \\mathbb Z , consider F \\ell^1 \\mathbb Z \\to \\ell^1 \\mathbb Z given by ```math F x \\overset \\text def x x y. ``` Derive the bounds needed to apply the Newton Kantorovich theorem. Find the square root of v t 2 \\cos t . Why is the obtained Fourier series real valued? \"\"\" md\"\"\" 4. Define a suitable F 0 problem for the cubic root of an absolutely converging Fourier series, and derive the bounds needed to apply the Newton Kantorovich theorem in that context. Find the cubic root of v t 2 \\cos t . Why is the obtained Fourier series real valued? \"\"\" "},{"url":"homework/finite_dimension_exercise1/","title":"Operator norms","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 1 order 1 title \"Operator norms\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" Consider the 1 norm on \\mathbb R ^d ```math \\| x \\| 1 \\overset \\text def \\sum i 1 ^d | x i |, ``` and let A be a d \\times d matrix of real numbers. Show that the operator norm induced by the 1 norm, that is ```math \\| A \\| 1 \\overset \\text def \\sup \\substack x \\in \\mathbb R ^d \\\\ x\\ne 0 \\frac \\| Ax \\| 1 \\| x \\| 1 , ``` satisfies ```math \\| A \\| 1 \\max 1 \\le j \\le d \\sum i 1 ^d | A i,j |. ``` \"\"\" "},{"url":"homework/finite_dimension_exercise2/","title":"Rigorous computation of an eigenpair","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 2 order 2 title \"Rigorous computation of an eigenpair\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" 1. Consider a matrix M , and an approximate eigenpair \\bar \\lambda , \\bar v of M . The goal of this exercise is to validate \\bar \\lambda , \\bar v , i.e. to prove that there exists an exact eigenpair \\tilde \\lambda , \\tilde v nearby. Assuming that the corresponding exact eigenvalue \\tilde \\lambda is simple, define a suitable F 0 problem, and derive the bounds needed to apply the Newton Kantorovich theorem in that context. \"\"\" Foldable \"Hint\", md\"\"\" The \"natural\" zero finding problem is G \\lambda, v \\overset \\text def M \\lambda I v , but it has one too many unknowns. This is consistent with the fact that zeros of G are not isolated one can always rescale the eigenvector . Therefore, a suitable zero finding problem needs to incorporate a normalization condition, for instance ```math F \\lambda, v \\overset \\text def \\begin pmatrix \\langle v, \\bar v \\rangle 1 \\\\ M \\lambda I v \\end pmatrix . ``` \"\"\" md\"\"\" 2. For any positive integer N , the Wilkinson matrix W N is the following 2N 1 \\times 2N 1 tridiagonal matrix ```math W N \\begin pmatrix N & 1 & & & & & \\\\ 1 & N 1 & 1 & & & & \\\\ & 1 & \\ddots & \\ddots & & & \\\\ & & \\ddots & 0 & \\ddots & & \\\\ & & & \\ddots & \\ddots & 1 & \\\\ & & & & 1 & N 1 & 1 \\\\ & & & & & 1 & N \\end pmatrix ``` We provide below approximate eigenvalues and eigenvectors of W 3 . Rigorously enclose all eigenpairs of W 3 . \"\"\" function wilkinson N M zeros 2N 1, 2N 1 for i 1 2N 1 M i,i abs N i 1 if i 1 ≤ 2N 1 M i,i 1 1 end if i 1 ≥ 1 M i,i 1 1 end end return M end N 3 W wilkinson N using LinearAlgebra eigenvalues, eigenvectors eigen W "},{"url":"homework/finite_dimension_exercise3/","title":"Rigorous inverse of a matrix","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 3 order 3 title \"Rigorous inverse of a matrix\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" In this exercise, we consider a matrix M , and a numerically computed approximate inverse \\bar X of M . Our goal will be to guarantee a posteriori that M is indeed invertible, and to provide a computable error bound between M^ 1 and \\bar X , for any submultiplicative matrix norm i.e. \\| A B \\| \\le \\| A \\| \\| B \\| . \"\"\" md\"\"\" 1. Denoting \\delta \\Vert I M \\bar X \\| , and assuming \\delta 1 , show that M is invertible and ```math \\| M^ 1 \\bar X \\| \\le \\frac \\delta 1 \\delta \\| \\bar X \\|. ``` \"\"\" Foldable \"Hint\", md\"\"\" Write \\left M\\bar X \\right ^ 1 as \\left I M\\bar X I\\right ^ 1 and mutliply to the left by \\bar X in order to get a power series expansion of M^ 1 . \"\"\" md\"\"\" 2. Try to obtain a similar estimate using an appropriate zero finding problem and the Newton Kantorovich approach. \"\"\" Foldable \"Hint\", md\"\"\" You may consider F X MX I or F X XM I . \"\"\" "},{"url":"homework/finite_dimension_exercise4/","title":"Rigorous control of the entire spectrum","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 4 order 4 title \"Rigorous control of the entire spectrum\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" using PlutoTeachingTools package for the notebook md\"\"\" Exercise 3 can be used to enclose eigenvalues of a given matrix one by one. We now present an alternate strategy to enclose the entire spectrum at once but not the corresponding eigenvectors , which can sometimes also be adapted in infinite dimension. This strategy relies on the Gershgorin circle theorem https en.wikipedia.org wiki Gershgorin circle theorem , which we recall below. \"\"\" md\"\"\" theorem \"Theorem Gershgorin \" For any matrix M \\left M i,j \\right 1 \\le i, j \\le d , its spectrum \\sigma M satisfies ```math \\begin align \\sigma M \\subset \\bigcup i 1 ^d D\\left M i,i ,\\, \\sum j \\ne i | M i,j | \\right , \\end align ``` where D z,r denotes the closed disk of center z and radius r in the complex plane. Moreover, if \\mathscr J \\subset \\ 1, \\dots, d\\ is such that \\bigcup i \\in \\mathscr J D\\left M i,i ,\\, \\sum j \\ne i | M i,j |\\right is disjoint from \\bigcup i \\notin \\mathscr J D\\left M i,i ,\\, \\sum j \\ne i | M i,j |\\right , then \\bigcup i \\in \\mathscr J D\\left M i,i ,\\, \\sum j \\ne i | M i,j |\\right contains exactly | \\mathscr J | eigenvalues. \"\"\" md\"\"\" 1. Using the Gershgorin circle theorem, get as tight as possible rigorous enclosures of all eigenvalues of W 3 defined in Exercise 3 . \"\"\" Foldable \"Hint\", md\"\"\" You may first compute numerically a matrix P of approximate eigenvectors of W 3 , then rigorously compute \\tilde W 3 P^ 1 W 3 P , and finally apply the Gershgoring circle theorem to \\tilde W 3 . \"\"\" md\"\"\" 2. Prove that W 1000 has exactly one eigenvalue with negative real part. \"\"\" Foldable \"Hint\", md\"\"\" You do not need to numerically diagonalize all of W 1000 for most rows, the corresponding Gershgorin disk already lies in the left half of the complex plane. \"\"\" "},{"url":"homework/finite_dimension_exercise5/","title":"Toward rigorous continuation","tags":["module1","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 5 order 5 title \"Toward rigorous continuation\" tags \"module1\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" Prove that there exists a period 3 orbit to x n 1 \\mu x n 1 x n for all \\mu in an interval containing 3.9 . Make that interval as large as you can. \"\"\" "},{"url":"homework/manifolds_exercise1/","title":"Stable and unstable manifolds","tags":["module5","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 1 order 1 title \"Stable and unstable manifolds\" tags \"module5\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" Using Taylor series, compute rigorously that is with the Newton Kantorovich approach a parameterization of order N 20 of the stable and unstable manifolds of the equilibrium 0,0 for the equation ```math \\dot x \\begin pmatrix \\dot x 1 \\\\ \\dot x 2 \\end pmatrix \\begin pmatrix x 1 6 x 2 x 1 x 2 \\\\ 4 x 1 3 x 2 x 1^2 \\end pmatrix . ``` \"\"\" "},{"url":"homework/manifolds_exercise2/","title":"2D manifold","tags":["module5","homeworks"],"text":" A Pluto.jl notebook v0.19.47 frontmatter homework number 2 order 2 title \"2D manifold\" tags \"module5\", \"homeworks\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main max width 1000px margin left auto margin right auto text align justify style \"\"\" md\"\"\" Compute the 2D stable manifold of the origin for Lorenz. \"\"\" "},{"url":"mod1/finite_dimension_lecture_notes/","title":"Finite-dimensional problems","tags":["lecture","module1"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 1 order 0.5 title \"Finite dimensional problems\" tags \"lecture\", \"module1\" layout \"layout.jlhtml\" 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 html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using Plots TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\" Motivating example a chaotic dynamical system\" md\"\"\" Consider the sequence defined by \\begin align x n 1 \\mu x n 1 x n , \\end align where \\mu is a parameter in 0,4 and the initial condition x 1 is in 0,1 . This is known as the logistic map https en.wikipedia.org wiki Logistic map . The slider below can be used to vary the value of \\mu . \"\"\" bind μ Slider 0 0.1 4 default 3.9 μ begin x1 0.4 maxiter 50 xs zeros maxiter 1 xs 1 x1 for n 1 maxiter xs n 1 μ xs n 1 xs n end plot 1 maxiter 1, xs marker circle, 5 , legend false xlabel \"n\" ylims 0.1, 1.1 end md\"\"\" As \\mu increases, the dynamics become progressively more complex. This behaviour arises from a cascade of period doubling bifurcations https en.wikipedia.org wiki Period doubling bifurcation , ultimately leading to chaos https en.wikipedia.org wiki Chaos theory . A well known result for discrete dynamical systems states that the existence of a period 3 orbit implies chaos. \"\"\" md\"\"\" theorem \"Theorem\" Let f 0,1 \\to 0,1 be continuous, and consider the dynamical system defined by x n 1 f x n . If there exists an orbit of period 3, i.e. x 1 \\in 0,1 such that x 1 \\ne x 2 \\ne x 3 and x 4 x 1 , then the system is chaotic. In particular, there exist orbits of any period. ^Sha64 ^LY75 \"\"\" md\"\"\" Let us fix a value of \\mu for which the dynamics seem complicated, say \\mu 3.9 . Our goal is to demonstrate the existence of a period 3 orbit. We will begin by numerically approximating such an orbit and then rigorously establish the existence of a true period 3 orbit nearby. While there are various methods to prove the existence of a period 3 orbit both with and without computer assistance , the approach we present will extend naturally to more challenging infinite dimensional problems. \"\"\" md\" Contraction mapping and the Newton Kantorovich theorem\" md\"\"\" Given a problem and an approximate solution \\bar x , our goal is to define a fixed point operator T such that the solutions to our problem are in one to one correspondence with fixed points of T , T is a contraction on a small neighborhood of \\bar x . The specific form of T may vary depending on the nature of the problem, but we can outline a general strategy for constructing such an operator. First, we provide sufficient conditions that can be verified in practice to demonstrate that an operator T is contracting on a small neighborhood of \\bar x . Although this first module focuses on finite dimentional problems, we state these conditions in the more general setting of a Banach space https en.wikipedia.org wiki Banach space , as they will play an important role in the next modules. \"\"\" md\"\"\" theorem \"Theorem Contraction mapping \" Let \\mathcal X be a Banach space, \\bar x \\in \\mathcal X , and T \\mathcal X \\to \\mathcal X a continuously differentiable map. Assume that there exist a constant Y and a non decreasing map Z 0, \\infty \\to 0, \\infty such that ```math \\begin align \\| T \\bar x \\bar x \\| &\\le Y, \\\\ \\| DT x \\| &\\le Z \\| x \\bar x \\| , \\qquad \\forall x \\in \\mathcal X . \\end align ``` If there exists r 0 such that ```math \\begin align Y \\int 0^r Z s \\, ds &\\le r, \\\\ Z r & 1, \\end align ``` then T has a unique fixed point \\tilde x such that \\| \\tilde x \\bar x \\| \\le r . \"\"\" md\"\"\" note \"Remark\" The bound Z is actually only needed locally, i.e. we only need Z s for s \\le r . Therefore, one can fix a priori some R 0 , and weaken the assumption by only asking for Z to be defined on 0, R and to satisfy \\| DT x \\| \\le Z \\| x \\bar x \\| for all x \\in \\mathcal X such that \\| x \\bar x \\| \\le R . Of course, we are then only allowed to consider r \\in 0, R . In practice, studying carefully how \\| DT x \\| depends on \\| x \\bar x \\| helps us to get better bounds. However, we can sometimes get away with coarser estimates. Specifically, we derive a constant Z such that \\| DT x \\| \\le Z for all x \\in \\mathcal X such that \\| x \\bar x \\| \\le R , and then use Z s Z for all s \\in 0, R . The conditions on r then simplify, and, if Z 1 , we can take any r \\ge \\frac Y 1 Z . \"\"\" md\"\"\" For a dynamical system x n 1 f x n , a natural fixed point operator for period 3 orbits is given by T x \\overset \\text def f^3 x , which represents f composed with itself three times. However, in general such a T has no reason to be contracting. To develop a more general procedure for constructing a fixed point problem, one can start by finding a map F whose isolated zeros are solutions to our problem. For this example, we consider the mapping F \\mathbb R ^3 \\to \\mathbb R ^3 given by ```math F x 1, x 2, x 3 \\overset \\text def \\begin pmatrix f x 1 x 2 \\\\ f x 2 x 3 \\\\ f x 3 x 1 \\end pmatrix . ``` Given an approximate solution \\bar x , one can consider the Newton like operator T x \\overset \\text def x DF \\bar x ^ 1 F x . This operator should be contracting in a neighborhood of \\bar x , as DT \\bar x 0 . For finite dimensional problems of moderate size, computing the inverse of DF \\bar x is possible. However, in infinite dimensional problems, working with DF \\bar x ^ 1 can be challenging. To address this, we often consider an approximate inverse A \\approx DF \\bar x ^ 1 and define the fixed point operator T x \\overset \\text def x AF x . In the following results, we will operate under this framework, where A is not specified and could be DF \\bar x ^ 1 or another suitable approximation. \"\"\" md\"\"\" corollary \"Corollary Newton Kantorovich \" Let \\mathcal X and \\mathcal Y be two Banach spaces, \\bar x \\in \\mathcal X , F \\mathcal X \\to \\mathcal Y a continuously differentiable map, A \\mathcal Y \\to \\mathcal X am injective linear map, and R 0 . Assume that there exist constants Y , Z 1 and Z 2 such that ```math \\begin align \\| AF \\bar x \\| &\\le Y, \\\\ \\| I ADF \\bar x \\| &\\le Z 1, \\\\ \\| A DF x DF \\bar x \\| &\\le Z 2 \\| x \\bar x \\|, \\qquad \\forall x \\in \\mathcal X \\text such that \\| x \\bar x \\| \\le R. \\end align ``` If there exists r \\in 0,R such that ```math \\begin align Y Z 1 r \\frac 1 2 Z 2 r^2 &\\le r, \\\\ Z 1 Z 2 r & 1, \\end align ``` then F has a unique zero \\tilde x such that \\| \\tilde x \\bar x \\| \\le r . \"\"\" md\"\"\" This corollary is a simplified version of the Newton Kantorovich Theorem https en.wikipedia.org wiki Kantorovich theorem ^Ort68 . Variations of this result can be found throughout the literature and are commonly used in computer assisted proofs CAPs see e.g. ^BL15 ^NPW19 and the references therein . \"\"\" md\" Interval arithmetic\" md\"\"\" When we want to apply the contraction mapping theorem with \\bar x as an approximate solution obtained using the computer, we also need to compute values for the bounds Y and Z . However, these calculations typically rely on floating point arithmetic, which introduces rounding errors. For instance, if we execute `Y norm A F x̄ , 1 ` on the computer, we cannot be certain that Y is an upper bound for \\|A F \\bar x \\| 1 . Interval arithmetic https en.wikipedia.org wiki Interval arithmetic provides a robust method to control rounding errors and ensuring guaranteed results from computer calculations. In this section, we offer a brief description of interval arithmetic for more detailed discussions, please refer to ^Moo79 and ^Tuc11 . \"\"\" md\" Overview\" md\"\"\" The central concept of interval arithmetic is to represent any real number by an interval, whose endpoints are floating point numbers. More precisely, for a \\in \\mathbb R , we define the interval \\underline a , \\overline a where \\underline a , \\overline a are floating point numbers satisfying \\underline a \\le a \\le \\overline a . While we give up the hope of representing numbers exactly, we recover guaranteed information the real number a is contained within the interval stored in the computer. The rules of interval arithmetic ensure that this containment property is preserved for arithmetic operations. For instance, consider two intervals a and b of the form \\underline a , \\overline a and \\underline b , \\overline b , which enclose the reals numbers a and b respectively. When we perform the operation c a b , the resulting interval c \\underline c , \\overline c is computed as follows for \\underline c , we take \\underline a \\underline b rounded downward , and for \\overline c , we take \\overline a \\overline b rounded upward . In particular, the real number c a b is contained within the interval c . Similarly, if c is an interval \\underline c , \\overline c and we compute d e^ c , the resulting interval d contains e^c . In this course, we use the Julia library IntervalArithmetic https github.com JuliaIntervals IntervalArithmetic.jl , though many other interval arithmetic libraries are available in different programming languages. Note that IntervalArithmetic is automatically included when using RadiiPolynomial https github.com OlivierHnt RadiiPolynomial.jl . This library provides standard arithmetic operations as well as implementations of elementary functions such as `exp`, `log`, `cos`, etc. that comply with the rules of interval arithmetic. \"\"\" using IntervalArithmetic not necessary if you did `using RadiiPolynomial` a interval 2, 4 cos exp sqrt a md\"\"\" note \"Remark\" Even when doing computer assisted proofs, it’s not necessary to use interval arithmetic for every computation. For finding an approximate solution \\bar x , floating point calculations are perfectly fine. It’s only when computing the bounds for the contraction theorem, and verifying the radii polynomial inequalities, that interval arithmetic must be used. \"\"\" md\" Beware of typed in floating point numbers\" md\"\"\" When you execute a command like `x 0.1` in Julia, the variable `x` is assigned the closest floating point number approximating 1 10 . Since 1 10 cannot be represented exactly in base 2, the value stored in `x` is not precisely equal to the typed in number `0.1`. In fact, it turns out to be slightly larger than 1 10 , but it could just as easily have been smaller as seen with `x 0.3` . For more information on this topic, you can refer to this webpage https 0.30000000000000004.com . \"\"\" x 0.1 x 1 10 ix interval 1 interval 10 in interval 1 10, ix md\" Back to period 3 implies chaos\" using RadiiPolynomial md\"\"\" Let’s recap what we have covered so far Proving the existence of a period 3 orbit is sufficient to establish chaotic dynamics. We reformulated the task of finding a period 3 orbit as solving an equation F 0 . We derived sufficient conditions, in terms of bound estimates Y, Z 1, Z 2 , to determine the radius of a ball, centered at a numerical approximation \\bar x , that contains a locally unique true zero \\tilde x of F . We introduced interval arithmetic to rigorously estimate the bounds Y , Z 1 , and Z 2 with computer assistance. Now, we walk through the implementation of a computer assisted proof to demonstrate a period 3 orbit for \\mu 3.9 . We start by defining the logistic map in Julia \"\"\" f x, μ μ x 1 x logistic map md\"\"\" and the zero finding problem \"\"\" function F x, μ v zeros eltype x , 3 v 1 f x 1 , μ x 2 v 2 f x 2 , μ x 3 v 3 f x 3 , μ x 1 return v end md\"\"\" To apply the Newton Kantorovich theorem we also need the first derivate \"\"\" Df x, μ μ 1 2x derivative of the logistic map w.r.t. x function DF x, μ derivative of the zero finding problem w.r.t. x M zeros eltype x , 3, 3 M 1,1 Df x 1 , μ M 1,2 1 M 2,2 Df x 2 , μ M 2,3 1 M 3,1 1 M 3,3 Df x 3 , μ return M end md\" Numerical zero\" md\"\"\" We apply Newton's method https en.wikipedia.org wiki Newton%27s method to F using the `newton` function provided in the RadiiPolynomial library. \"\"\" initial guess 0.5, 1.0, 0.1 F DF x F x, μ , DF x, μ returns `F` and `DF` at `μ 3.9` x bar, success newton F DF, initial guess md\"\"\" The `newton` function returns two outputs the result of the iterations and a value indicating whether the method converged `true` if it did as it does here and `false` otherwise. \"\"\" md\"\"\" Initializing Newton's method Finding a good starting point for Newton's method is not always easy. Here we were a bit lucky that a simple guess worked well. For other parameter values, however, we may need to take a closer look at the iterations of the map f . \"\"\" md\" Constructing A \" md\"\"\" As mentioned earlier, A doesn’t need to be exactly DF \\bar x ^ 1 it only needs to be a reasonably close approximation. For finite dimensional problems, this inverse can be efficiently computed using built in numerical algorithms. \"\"\" A inv DF x bar, μ md\" Verifying the contraction\" md\"\"\" We now verify that T x \\overset \\text def x A F x is a contraction around \\bar x \\in \\mathbb R ^3 . To rigorously compute the bounds Y, Z 1, Z 2 , we enclose all relevant data into intervals. \"\"\" since 39 10 is not representable as a floating point number iμ interval 39 interval 10 ix bar interval x bar iA interval A md\" Computing Y \" Y norm iA F ix bar, iμ , 1 md\" Computing Z 1 \" Z₁ opnorm I iA DF ix bar, iμ , 1 md\" Computing Z 2 \" md\"\"\" ```math \\|A DF x DF \\bar x \\| 1 \\le \\|A\\| 1 \\|DF x DF \\bar x \\| 1 2 \\mu \\|A\\| 1 \\| x \\bar x \\| 1, \\qquad \\forall x \\in \\mathbb R ^3. ``` So Z 2 \\ge 2 \\mu \\|A\\| 1 is a constant. In other words, we have a Lipschitz control for DF on the whole space \\mathbb R ^3 , and we can freely choose R \\infty . \"\"\" R Inf Z₂ interval 2 iμ opnorm iA, 1 md\" Finishing the CAP\" md\"\"\" To determine the values of r that satisfy the radii polynomial inequalities, we use the `interval of existence` function from RadiiPolynomial. This function returns an interval of existence, within which all contained values satisfy the contraction conditions. \"\"\" ie interval of existence Y, Z₁, Z₂, R md\"\"\" The largest value in the interval represents the maximum radius of the ball centered at \\bar x within which the true zero \\tilde x of F is proven to be unique. On the other hand, the smallest value provides the sharpest error bound. \"\"\" r inf ie md\"\"\" In fact, we cannot yet conclude that \\tilde x is a zero of F since we did not check that A was injective. This property actually comes as a by product of the contraction argument. Indeed, \\|I A DF \\bar x \\| \\le Z 1 1 ensures that A DF \\bar x is invertible, which implies that A is surjective. Since A is a square matrix, it follows that A must also be injective. Finally, we verify that the true zero \\tilde x of F is a period 3 orbit, that is \\tilde x 1 \\ne \\tilde x 2 \\ne \\tilde x 3 . Since we have found r such that \\| \\tilde x \\bar x \\| 1 \\le r , it follows that \\tilde x j \\in \\bar x j r, \\bar x j r for j 1, 2, 3 . We then confirm that the three intervals \\bar x j r, \\bar x j r , for j 1, 2, 3 , are mutually disjoint \"\"\" enclosure x tilde 1 interval ix bar 1 , r format midpoint enclosure x tilde 2 interval ix bar 2 , r format midpoint enclosure x tilde 3 interval ix bar 3 , r format midpoint isdisjoint interval enclosure x tilde 1, enclosure x tilde 2, enclosure x tilde 3 md\"\"\" A final note on interval arithmetic In the code provided in this notebook we used the Julia interval arithmetic library IntervalArithmetic.jl https juliaintervals.github.io IntervalArithmetic.jl stable . We took a bit of liberty by taking advantage of automatic conversion of floats and integers to intervals, when variables of these types are combined in elementary operations. The interval arithmetic library is not entirely happy about this \"\"\" isguaranteed Y , isguaranteed Z₁ , isguaranteed Z₂ md\" References\" md\"\"\" ^BL15 J. B. van den Berg and J. P. Lessard. Rigorous numerics in dynamics. Notices Of The American Mathematical Society , 62 9 , 2015. ^LY75 T. Y. Li and J. A. Yorke. Period three implies chaos. The American Mathematical Monthly , 82 10 985 992, 1975. ^Moo79 R. E. Moore. Methods and applications of interval analysis . SIAM, 1979 ^Ort68 J. M. Ortega. The Newton Kantorovich theorem. The American Mathematical Monthly , 75 6 658 660, 1968. ^NPW19 M. T. Nakao, M. Plum, and Y. Watanabe. Numerical Verification Methods and Computer Assisted Proofs for Partial Differential Equations . Springer Singapore, 2019. ^Sha64 A. N. Sharkowskii. Co existence of the cycles of a continuous mapping of the line into itself. Ukrainian Mathematical Journal , 16 1 , 1964. ^Tuc11 W. Tucker. Validated numerics a short introduction to rigorous computations . Princeton University Press, 2011. \"\"\" "},{"url":"mod2/inverse_lecture_notes/","title":"Algebraic equations","tags":["lecture","module2"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 2 order 0.5 title \"Algebraic equations\" tags \"lecture\", \"module2\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, Plots TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\" Motivating example the inverse function\" md\"\"\" Given v t 2 t , consider the problem of finding the function u 1, 1 \\to \\mathbb R such that ```math u t v t 1, \\qquad t \\in 1, 1 . ``` This constitutes the first example of infinite dimensional problems. We will search for a function u as a power series u t \\sum n \\ge 0 x n t^n , defined for all t \\in 1, 1 . A numerical plot of 2 t ^ 1 is displayed below. \"\"\" begin plot LinRange 1, 1, 51 , t 2 t label \"2 t\", linewidth 3 plot LinRange 1, 1, 51 , t inv 2 t label \"1 2 t \", linewidth 3 xlims 1, 1 xlabel \"t\" end md\"\"\" We follow the same strategy outlined in Module 1, with some key adaptations. 1. Identify an appropriate Banach space an additional step compared to the previous module on finite dimensional problems . 2. Reformulate the problem as a zero finding problem F x 0 . 3. Compute an approximate zero \\bar x . 4. Construct an approximate inverse A of DF \\bar x . 5. Derive computable formulas for the bounds Y, Z 1, Z 2 , and verify the radii polynomial inequalities. \"\"\" md\" Sequence space\" md\"\"\" The space we are interested in is the one of analytic functions with radius of convergence strictly greater than 1 . The first step is to discretize this space as the sequence space ```math \\ell^1 \\mathbb N \\overset \\text def \\left\\ x \\in \\mathbb R ^\\mathbb N \\, \\, \\| x \\| 1 \\overset \\text def \\sum n \\ge 0 |x n| \\infty \\right\\ . ``` \"\"\" md\"\"\" lemma \"Lemma\" x \\in \\ell^1 \\mathbb N if and only if \\sum n \\ge 0 x n t^n converges uniformly on 1, 1 . \"\"\" md\"\"\" lemma \"Lemma\" \\ell^1 \\mathbb N is a Banach space. \"\"\" md\" Cauchy product\" md\"\"\" lemma \"Lemma Cauchy product \" If u t \\sum n \\ge 0 x n t^n and v t \\sum n \\ge 0 y n t^n , then u t v t \\sum n \\ge 0 x y n t^n where ```math x y n \\overset \\text def \\sum l 0 ^n x n l y l, \\qquad n \\ge 0. ``` \"\"\" md\"\"\" The product and the norm play together nicely they give the space \\ell^1 \\mathbb N the structure of a Banach algebra, as expressed by the following lemma. \"\"\" md\"\"\" lemma \"Lemma Banach algebra property \" For any x, y \\in \\ell^1 \\mathbb N we have \\| x y \\| 1 \\le \\| x \\| 1 \\| y \\| 1 . \"\"\" md\" Finite dimensional projection\" md\"\"\" We introduce a projection operator on a finite number of modes N 1 coefficients \\Pi N \\ell^1 \\mathbb N \\to \\ell^1 \\mathbb N given by ```math \\Pi N x n \\overset \\text def \\begin cases x n, & n \\le N, \\\\ 0, & n N, \\end cases ``` together with its complement \\Pi N \\overset \\text def I \\Pi N , where I is the identity operator. The projections let us break down the problem into two parts a finite dimensional part, handled by the computer, and an infinite dimensional part often called the tail , handled entirely by pen and paper analysis. \"\"\" md\"\"\" Why is this so complicated? The strange looking subscript N is in fact meant to indicate clearly which index values are involved. It avoids writing down infinite matrices or formulas with a lot of indices. \"\"\" md\" Zero finding problem\" md\"\"\" Writing v t \\sum n \\ge 0 y n t^n with y \\overset \\text def 2, 1, 0, \\dots \\in \\ell^1 \\mathbb N , and substituting u t \\sum n \\ge 0 x n t^n into the algebraic equation leads to the infinite set of equations ```math x y 0 1, \\qquad x y n 0, \\quad n \\ge 1. ``` Therefore, the problem of finding the inverse of v corresponds to finding a zero of the mapping F \\ell^1 \\mathbb N \\to \\ell^1 \\mathbb N given by ```math F x \\overset \\text def x y 1. ``` \"\"\" md\"\"\" note \"Remark\" Here we slightly abuse notation by identifying the constant 1 with its sequence of Taylor coefficients 1, 0, \\dots \\in \\ell^1 \\mathbb N . This is consistent with the convention that 1 denotes the identity element of the algebra \\ell^1 \\mathbb N , . \"\"\" md\"\"\" An implementation, using the RadiiPolynomial library, of the zero finding problem F is given below. \"\"\" F x, y x y 1 md\" Numerical zero\" md\"\"\" The map F is affine and satisfies DF x x F x 1 , so Newton's method reduces to solving, in \\ell^1 \\mathbb N , the linear system ```math \\mathcal M y x 1, ``` where \\mathcal M y DF x \\in \\mathscr B \\ell^1 \\mathbb N is such that ```math \\mathcal M y h y h, \\qquad \\forall h \\in \\ell^1 \\mathbb N . ``` In other words, \\mathcal M y is the mutliplication operator associated with y . As a bounded linear operator acting on infinite sequences in \\ell^1 \\mathbb N , \\mathcal M y can be visualized as a matrix with an infinite number of rows and columns ```math \\mathcal M y \\begin pmatrix y 0 & 0 & 0 & \\cdots \\\\ y 1 & y 0 & 0 & \\cdots \\\\ y 2 & y 1 & y 0 & \\ddots \\\\ \\vdots & \\vdots & \\vdots & \\ddots \\end pmatrix . ``` Our goal is to find a numerical approximation \\bar x of the zero of F as an element of the truncated space \\Pi N \\ell^1 \\mathbb N . We can obtain this approximation by numerically solving the linear system above for a finite number of rows \\Pi N \\mathcal M b \\bar x \\approx 1 . If the truncation dimension N is large enough we may hope that also \\Pi N F \\bar x \\approx 0 , since we expect the coefficients of \\bar x to decrease for moderately large n . \"\"\" y Sequence Taylor 1 , 2.0, 1.0 N 3 M project Multiplication y , Taylor N , Taylor N x bar M \\ Sequence Taylor N , 1.0 zeros N begin plot LinRange 1, 1, 101 , t x bar t linewidth 3, label \"x bar\" xlims 1, 1 xlabel \"t\" end md\"\"\" We can see how close F \\bar x is to zero. \"\"\" F x bar, y md\"\"\" Of course, in this example, we chose very few Taylor coefficients, so the residue is not as small as one would ideally aim for. \"\"\" md\" Constructing A \" md\"\"\" For T to be a contraction, we want A to be a good approximate inverse of \\mathcal M y . So we want the inverse of y with respect to the Cauchy product . Recall that our numerical zero \\bar x \\in \\Pi N \\ell^1 \\mathbb N satisfies \\bar x y \\approx 1 . Thus, we define ```math A \\overset \\text def \\mathcal M \\bar x . ``` Consequently, ```math A DF \\bar x h \\bar x y h \\approx 1 h h. ``` \"\"\" md\" Verifying the contraction\" md\"\"\" We now verify that T x \\overset \\text def x A F x is a contraction around \\bar x \\in \\Pi N \\ell^1 \\mathbb N . To rigorously compute the bounds Y, Z 1, Z 2 , we enclose all relevant data into intervals. \"\"\" iy interval y ix bar interval x bar md\" Computing Y \" md\"\"\" lemma \"Lemma\" If x \\in \\Pi N \\ell^1 \\mathbb N and y \\in \\Pi N' \\ell^1 \\mathbb N , then x y \\in \\Pi N N' \\ell^1 \\mathbb N . \"\"\" md\"\"\" ```math \\| A F \\bar x \\| 1 \\| \\bar x \\bar x y 1 \\| 1 \\le Y. ``` Since y \\in \\Pi 1 \\ell^1 \\mathbb N , \\bar x \\in \\Pi N \\ell^1 \\mathbb N , we have that A F \\bar x \\in \\Pi 2N 1 \\ell^1 \\mathbb N and the above quantity is computable. \"\"\" Y norm ix bar F ix bar, iy , 1 md\" Computing Z 1 \" md\"\"\" lemma \"Lemma\" For all x \\in \\ell^1 \\mathbb N we have that \\| \\mathcal M x \\| \\mathscr B \\ell^1 \\mathbb N \\| x \\| 1 . \"\"\" md\"\"\" ```math \\| A DF \\bar x I \\| \\mathscr B \\ell^1 \\mathbb N \\| \\bar x y 1 \\| 1 \\| F \\bar x \\| 1 \\le Z 1. ``` The above quantity is computable since F \\bar x \\in \\Pi N 1 \\ell^1 \\mathbb N . \"\"\" Z₁ norm F ix bar, iy , 1 md\" Computing Z 2 \" md\"\"\" ```math \\|A DF x DF \\bar x \\| \\mathscr B \\ell^1 \\mathbb N 0, \\qquad \\forall x \\in \\ell^1 \\mathbb N . ``` So Z 2 0 is a constant. In other words, we have a Lipschitz control for DF on the whole space \\mathbb R ^3 , and we can freely choose R \\infty . \"\"\" R Inf Z₂ interval 0 md\" Finishing the CAP\" md\"\"\" To determine the values of r that satisfy the radii polynomial inequalities, we use the `interval of existence` function from RadiiPolynomial. This function returns an interval of existence, within which all contained values satisfy the contraction conditions. \"\"\" ie interval of existence Y, Z₁, Z₂, R r inf ie md\"\"\" To guarantee that the fixed point of T is a zero of F , we must check that A is injective. This property comes as a by product of the contraction argument. Indeed, \\|I A DF \\bar x \\| \\le Z 1 1 ensures that A DF \\bar x is invertible, which implies that A is surjective. Since A DF \\bar x h \\bar x y h y \\bar x h DF \\bar x A h , for all h \\in \\ell^1 \\mathbb N , it follows that A must also be injective. Therefore, we have proved the existence of a zero \\tilde x of F such that ```math \\tilde x \\bar x \\gamma, ``` where \\gamma \\in \\ell^1 \\mathbb N is not known explicitly, but satisfies \\| \\gamma \\| 1 \\le r . Our choice of norm also gives us a C^0 error bound for the function ```math \\begin aligned \\sup t \\in 1,1 | v t ^ 1 \\sum n 0 ^N \\bar x n t^n | & \\sup t \\in 1,1 | \\left \\sum n \\ge 0 y n t^n \\right ^ 1 \\sum n 0 ^N \\bar x n t^n | \\\\ & \\sup t \\in 1,1 | \\sum n \\ge 0 \\tilde x n \\bar x n t^n | \\\\ &\\le \\| \\tilde x \\bar x \\| 1 \\\\ &\\le r. \\end aligned ``` \"\"\" begin rigorous eval x, r, t interval x t , r format midpoint ts LinRange 1, 1, 101 plot interval ts i , ts i 1 , rigorous eval ix bar, r, interval ts i , ts i 1 for i 1 length ts 1 label \"\", color palegreen3 plot ts, t inv 2 t label \"1 2 t \", color salmon, linewidth 3 plot ts, t x bar t label \"x bar\", color royalblue1, linewidth 3, linestyle dash xlims 1, 1 xlabel \"t\" end md\"\"\" Lastly, this example is simple enough that we can compute by hand both the first 5 terms of 2 t ^ 1 ```math \\frac 1 2 t \\frac 1 2 \\frac t 4 \\frac t^2 8 \\frac t^3 16 \\frac t^4 32 \\frac t^5 64 O t^6 , ``` and compare with the result of our CAP. \"\"\" "},{"url":"mod3/ivp_lecture_notes/","title":"Taylor integration","tags":["lecture","module3"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 3 order 1 title \"Taylor integration\" tags \"lecture\", \"module3\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, Plots TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\"\"\" In this lecture we will learn how to solve initial value problems for ODEs using Taylor series. \"\"\" md\" Motivating example solving the logistic equation\" md\"\"\" Consider the initial value problem https en.wikipedia.org wiki Initial value problem IVP for the logistic equation https en.wikipedia.org wiki Logistic function Logistic differential equation ```math \\begin cases u' t u t 1 u t , & t \\ge 0, \\\\ u 0 ϕ. \\end cases ``` Given the initial condition \\phi 1 2 and \\nu 0 , we will search for a function u as a power series u t \\sum n \\ge 0 x n t^n , defined for all t \\in \\nu, \\nu . Of course, this ODE is simple enough to be solvable by hand. One can verify that u t 1 1 e^ t is the exact solution. A numerical plot is displayed below. \"\"\" begin plot LinRange 2.5, 2.5, 51 , t 1 1 exp t label \"1 1 exp t \", linewidth 3 xlims 2.5, 2.5 xlabel \"t\" end md\"\"\" We adopt the contraction strategy 1. Identify an appropriate Banach space. 2. Reformulate the problem as a zero finding problem F x 0 . 3. Compute an approximate zero \\bar x . 4. Construct an approximate inverse A of DF \\bar x . 5. Derive computable formulas for the bounds Y, Z 1, Z 2 , and verify the radii polynomial inequalities. \"\"\" md\" Sequence space\" md\"\"\" We are interested in the space of analytic functions with a radius of convergence strictly greater than some fixed \\nu 0 . If \\nu is chosen too large, the computer assisted proof CAP will fail. The first step is to discretize this space as a sequence space. However, if the radius of convergence of the function lies in the interval 0, 1 , the coefficients of the series grow, which leads to numerical instability. To mitigate this, it is good practice to re scale the problem so that the radius of convergence is at least 1 , and we may as well scale it to 1 . We rescale the time variable by introducing ```math w s u \\nu s , \\qquad \\text for all s \\in 1, 1 . ``` Then, the sequence space we use is ```math \\ell^1 \\mathbb N \\overset \\text def \\left\\ x \\in \\mathbb R ^\\mathbb N \\, \\, \\| x \\| 1 \\overset \\text def \\sum n \\ge 0 |x n| \\infty \\right\\ . ``` The properties of this space were discussed in Module 2. Here, we briefly recall them. Suppose u t \\sum n \\ge 0 x n t^n and v t \\sum n \\ge 0 y n t^n . Their product is given by ```math u t v t \\sum n \\ge 0 x y n t^n, ``` where the convolution operation x y is given by ```math x y n \\overset \\text def \\sum l 0 ^n x n l y l, \\qquad n \\ge 0. ``` Moreover, the convolution satisfies the inequality ```math \\| x y \\| 1 \\leq \\| x \\| 1 \\| y \\| 1. ``` \"\"\" md\"\"\" As discussed in Module 2, infinite dimensional problems are addressed by decomposing the sequence space into a finite dimensional subspace and the complementary infinite dimensional space. To formalize this, we define the projection operator \\Pi N \\ell^1 \\mathbb N \\to \\ell^1 \\mathbb N which extracts the first N 1 coefficients of a sequence. Specifically, for all x \\in \\ell^1 \\mathbb N , we have ```math \\Pi N x n \\overset \\text def \\begin cases x n, & n \\le N, \\\\ 0, & n N. \\end cases ``` The complementary projection, which removes the first N 1 modes, is defined as \\Pi N \\overset \\text def I \\Pi N , where I is the identity operator. \"\"\" md\" Zero finding problem\" md\"\"\" Substituting w t \\sum n \\ge 0 x n t^n into the ODE, with initial condition w 0 \\phi , leads to the recurrence relation ```math x 0 \\phi, \\qquad x n \\frac \\nu n x n 1 x x n 1 , \\quad n \\ge 1. ``` We can re write this set of equations more concisely as ```math x \\phi \\nu \\Lambda x x x , ``` where ```math \\Lambda x \\overset \\text def \\begin cases 0, & n 0, \\\\ \\displaystyle \\frac 1 n x n 1 , & n \\ge 1. \\end cases ``` We slightly abuse notation and identify \\phi with its sequence of Taylor coefficients \\phi, 0, \\dots \\in \\ell^1 \\mathbb N . Therefore, the problem of finding the solution u corresponds to finding a zero of the mapping F \\ell^1 \\mathbb N \\to \\ell^1 \\mathbb N given by ```math F x \\overset \\text def x \\phi \\nu \\Lambda x x x . ``` \"\"\" md\"\"\" This zero finding problem is of course identical to integrating first the ODE u t \\phi \\int 0^t u s 1 u s \\, ds , and plugging the power series ansatz into it. In this sense, \\Lambda is nothing more than the representation of the integral operator in \\ell^1 \\mathbb N . An implementation, using the RadiiPolynomial library, of the zero finding problem F is given below. \"\"\" f x x 1 x F x, ϕ, ν, space x ϕ ν project integrate f x , space md\"\"\" The Fréchet derivative is given by ```math DF x I \\nu \\Lambda \\circ I \\mathcal M 2x . ``` \"\"\" Df x 1 2x DF x, ν, domain, codomain I ν project Integral 1 , domain, codomain project Multiplication Df x , domain, codomain md\"\"\" An other contraction argument We can actually take advantage of the explicit recurrence relation to solve the IVP. Using interval arithmetic, it’s possible to compute the Taylor coefficients \\tilde x 0, \\dots, \\tilde x N exactly, up to any desired order N 0 . Once we have these, we can define the truncated sequence \\hat x \\tilde x 0, \\dots, \\tilde x N, 0, \\dots , where the terms beyond N are set to zero. To estimate the truncation error, observe that the recurrence relation naturally leads to a fixed point operator T . By focusing on the complementary subspace \\Pi N \\ell^1 \\mathbb N , we can define G \\Pi N \\ell^1 \\mathbb N \\to \\Pi N \\ell^1 \\mathbb N by ```math G h \\overset \\text def T \\hat x h . ``` Intuitively, h represents the correction to the tail of \\hat x . The key idea is that, for a sufficiently large N , this operator G becomes contracting around 0 \\in \\Pi N \\ell^1 \\mathbb N . There are two main differences with the CAPs done so far we do not construct a Newton like fixed point operator, and we must solve exactly a finite number of equations. That said, we do not pursue this approach in this lecture, as it is specific to power series. Our broader goal is to develop techniques that can be applied to other kinds of series. In particular, Chebyshev polynomials https en.wikipedia.org wiki Chebyshev polynomials are especially relevant in the context of IVPs. \"\"\" md\" Numerical zero\" N 20 order of the Taylor series ϕ 0.5 initial condition ν 2.5 time rescaling initial guess zeros Taylor N F DF x F x, ϕ, ν, Taylor N , DF x, ν, Taylor N , Taylor N x bar, success newton F DF, initial guess begin plot LinRange ν, ν, 101 , t x bar t ν linewidth 3, label \"x bar\" xlims ν, ν xlabel \"t\" end md\"\"\" Initializing Newton's method In this example, Newton converged with a simple guess. In general, however, we need to study the solutions of the ODE in more detail using numerical integration. \"\"\" md\" Constructing A \" md\"\"\" We use the projection to split A , the approximate inverse of DF \\bar x , into a finite part and a tail part ```math A \\overset \\text def A N \\Pi N \\Pi N , ``` where A N is a linear map constructed below on \\Pi N \\ell^1 \\mathbb N . By construction, we can write A in the block diagonal form ```math A \\begin pmatrix A N & 0 \\\\ 0 & \\Pi N \\end pmatrix . ``` Next, since the operator \\Pi N DF \\bar x \\Pi N is a finite dimensional square matrix, we define A N to be its numerical inverse. \"\"\" A N inv DF x bar, ν, Taylor N , Taylor N md\" Verifying the contraction\" md\"\"\" We now verify that T x \\overset \\text def x A F x is a contraction around \\bar x \\in \\Pi N \\ell^1 \\mathbb N . To rigorously compute the bounds Y, Z 1, Z 2 , we enclose all relevant data into intervals. \"\"\" iϕ interval 0.5 0.5 is exactly representable as a Float64 iν interval 2.5 2.5 is exactly representable as a Float64 ix bar interval x bar iA N interval A N md\" Computing Y \" function bound Y x bar, ϕ, ν, A N order x bar space Taylor 2N 1 Fx F x bar, ϕ, ν, space Id interval I ext A project Id, space, space ext A 0 N,0 N coefficients A return norm ext A Fx, 1 end Y bound Y ix bar, iϕ, iν, iA N md\" Computing Z 1 \" function bound Z₁ x bar, ν, A N order x bar space Taylor N 1 DFx DF x bar, ν, space, space Id interval I ext A project Id, space, space ext A 0 N,0 N coefficients A return opnorm Id ext A DFx, 1 end Z₁ bound Z₁ ix bar, iν, iA N md\" Computing Z 2 \" R Inf function bound Z₂ ν, A N order domain A Λ project Integral 1 , domain A , domain A , Interval Float64 return 2ν max opnorm A Λ, 1 , inv interval N end Z₂ bound Z₂ iν, iA N md\" Finishing the CAP\" md\"\"\" To determine the values of r that satisfy the radii polynomial inequalities, we use the `interval of existence` function from RadiiPolynomial. This function returns an interval of existence, within which all contained values satisfy the contraction conditions. \"\"\" ie interval of existence Y, Z₁, Z₂, R r inf ie md\"\"\" To guarantee that the fixed point of T is a zero of F , we must check that A is injective. This property comes as a by product of the contraction argument. Indeed, \\|I A DF \\bar x \\| \\le Z 1 1 ensures that A DF \\bar x is invertible, which implies that A is surjective. By construction, A N is surjective and A is injective if and only if A N is injective. Since A N can be represented by a finite square matrix, it follows that A must also be injective. Therefore, we have proved the existence of a zero \\tilde x of F such that ```math \\tilde x \\bar x \\gamma, ``` where \\gamma \\in \\ell^1 \\mathbb N is not known explicitly, but satisfies \\| \\gamma \\| 1 \\le r . Our choice of norm also gives us a C^0 error bound for the function ```math \\begin aligned \\sup t \\in \\nu,\\nu | u t \\sum n 0 ^N \\bar x n t \\nu ^n | & \\sup t \\in 1,1 | w t \\sum n 0 ^N \\bar x n t^n | \\\\ & \\sup t \\in 1,1 | \\sum n \\ge 0 \\tilde x n t^n \\sum n 0 ^N \\bar x n t^n | \\\\ & \\sup t \\in 1,1 | \\sum n \\ge 0 \\tilde x n \\bar x n t^n | \\\\ &\\le \\| \\tilde x \\bar x \\| 1 \\\\ &\\le r. \\end aligned ``` \"\"\" begin rigorous eval x, r, t interval x t , r format midpoint ts LinRange ν, ν, 101 plot interval ts i , ts i 1 , rigorous eval ix bar, r, interval ts i ν, ts i 1 ν for i 1 length ts 1 label \"\", color palegreen3 plot ts, t 1 1 exp t label \"1 1 exp t \", color salmon, linewidth 3 plot ts, t x bar t ν label \"x bar\", color royalblue1, linewidth 3, linestyle dash xlims ν, ν xlabel \"t\" end "},{"url":"mod4/fourier_lecture_notes/","title":"Periodic orbits","tags":["lecture","module4"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 4 order 1 title \"Periodic orbits\" tags \"lecture\", \"module4\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, Plots TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\"\"\" We continue to do CAPs to find solutions of ODEs, but rather than looking at an initial value problem, we now look for periodic solutions. The setting is again infinite dimensional, with some small differences We use Fourier series rather than Taylor series. The Fourier coefficients are two sided sequences of complex numbers. The convolution product is given by an infinite series. The problem of finding a closed orbit is global in the sense that there is no equivalent of \"short time\" integration. \"\"\" md\" Motivating example a forced, damped, nonlinear pendulum\" md\"\"\" Consider the second order ODE ```math u'' t \\beta 1 u' t \\beta 2 u t u t ^2 \\beta 3 \\cos t , ``` where \\beta 1, \\beta 2, \\beta 3 are parameters. We aim to find a periodic solution u t . Since the minimal period of the forcing term is 2\\pi , we look for a periodic solution of period 2 \\pi as a Fourier series u t \\sum k \\in \\mathbb Z x k e^ i k t . We adopt the same strategy as before, organized into the following steps 1. Identify an appropriate Banach space. 2. Reformulate the problem as a zero finding problem F x 0 . 3. Compute an approximate zero \\bar x . 4. Construct an approximate inverse A of DF \\bar x . 5. Derive computable formulas for the bounds Y, Z 1, Z 2 , and verify the radii polynomial inequalities. \"\"\" md\"\"\" Why is this a \"simple\" example? A more natural problem to look at is to find a periodic orbit in a system of ODEs. In such an autonomous system of ODEs the period of a periodic solution is unknown a priori, and determining the period \\tau is thus part of the problem, in addition to finding the unknown \\tau periodic function u t . Furthermore, when u t is a periodic solution, so is u t t 0 for any time shift t 0 . In particular, periodic solutions are not isolated unless an additional phase condition is imposed. A final complication is that for a system of equations the bookkeeping is more involved than for a single equation. Although these difficulties can be overcome, the notation can get in the way of understanding. Since we want to focus here on how to deal with periodic functions, we choose to look at a scalar, non autonomous problem where the period is given. \"\"\" md\" Sequence space\" md\"\"\" The space we are interested in is the space of periodic analytic functions. THe first step is to discretize this space as the sequence space \\nu \\ge 1 ```math \\ell^1 \\nu, \\mathbb Z \\overset \\text def \\left\\ x \\in \\mathbb C ^\\mathbb Z \\, \\, \\| x \\| \\nu \\overset \\text def \\sum k \\in \\mathbb Z |x k| \\nu^ |k| \\infty \\right\\ . ``` We will choose the value of \\nu later. \"\"\" md\"\"\" lemma \"Lemma\" Let \\omega 0 and \\nu \\ge 1 . If x \\in \\ell^1 \\nu, \\mathbb Z , then \\sum k \\in \\mathbb Z x k e^ i k \\omega t converges uniformly. If \\nu 1 , then term by term differentiation up to any order of the Fourier series is justified. \"\"\" md\"\"\" lemma \"Lemma\" \\ell^1 \\nu, \\mathbb Z is a Banach space. \"\"\" md\" Conjugate symmetry\" md\"\"\" We denote the complex conjugate of z \\in \\mathbb C by z^ . For a real valued periodic function u , its Fourier coefficients x \\in \\ell^1 \\nu, \\mathbb Z satisfy x k x k^ for all k \\in \\mathbb Z . Conversely, if x k x k^ for all k \\in \\mathbb Z , then the Fourier series \\sum k \\in \\mathbb Z x k e^ i k \\omega t is real valued. For x \\in \\ell^1 \\nu, \\mathbb Z , we denote by x^\\dagger \\in \\ell^1 \\nu, \\mathbb Z the conjugate given by x^\\dagger k \\overset \\text def x k ^ . With this notation, x x^\\dagger is equivalent to the Fourier series \\sum k \\in \\mathbb Z x k e^ i k \\omega t being real valued. \"\"\" md\" Convolution product\" md\"\"\" lemma \"Lemma Convolution product \" Let \\omega 0 . If u t \\sum k \\in \\mathbb Z x k e^ i k \\omega t and v t \\sum k \\in \\mathbb Z y k e^ i k \\omega t , then u t v t \\sum k \\in \\mathbb Z x y k e^ i k \\omega t where ```math x y k \\overset \\text def \\sum l \\in \\mathbb Z x k l y l, \\qquad k \\in \\mathbb Z . ``` \"\"\" md\"\"\" The product and the norm play together nicely they give the space \\ell^1 \\nu, \\mathbb Z the structure of a Banach algebra, as expressed by the following lemma. \"\"\" md\"\"\" lemma \"Lemma Banach algebra property \" For any \\nu \\ge 1 and x, y \\in \\ell^1 \\nu, \\mathbb Z we have \\| x y \\| \\nu \\le \\| x \\| \\nu \\| y \\| \\nu . \"\"\" md\" Finite dimensional projection\" md\"\"\" We introduce a projection operator on a finite number of modes 2K 1 coefficients \\Pi K \\ell^1 \\nu, \\mathbb Z \\to \\ell^1 \\nu, \\mathbb Z given by ```math \\Pi K x k \\overset \\text def \\begin cases x k, & |k| \\le K, \\\\ 0, & |k| K, \\end cases ``` together with its complement \\Pi K \\overset \\text def I \\Pi K , where I is the identity operator. \"\"\" md\" Zero finding problem\" md\"\"\" Substituting u t \\sum k \\in \\mathbb Z x k e^ i k t into the ODE leads to the infinite set of equations ```math \\lambda k x k x x k \\beta 3 c k 0, \\qquad k \\in \\mathbb Z , ``` where ```math \\lambda k \\overset \\text def k^2 i \\beta 1 k \\beta 2 ``` and c represents the Fourier transform of \\cos t , that is ```math c k \\overset \\text def \\begin cases \\frac 1 2 , & k \\pm 1, \\\\ 0, & k \\ne \\pm 1. \\end cases ``` It is convenient to introduce the diagonal linear operator ```math \\Lambda x k \\overset \\text def \\lambda k x k. ``` When \\beta 1, \\beta 2 \\ne 0 , then the inverse \\Lambda^ 1 , given by \\Lambda^ 1 h k \\lambda k^ 1 h k for all h \\in \\ell^1 \\nu, \\mathbb Z , is well defined as a bounded operator on \\ell^1 \\nu, \\mathbb Z Therefore, the problem of finding a periodic solution to the ODE corresponds to finding a zero of the mapping F \\ell^1 \\nu, \\mathbb Z \\to \\ell^1 \\nu, \\mathbb Z given by ```math F x \\overset \\text def x \\Lambda^ 1 x x \\beta 3 c . ``` \"\"\" md\"\"\" note \"Remark\" Dividing by \\lambda k is a choice that simplifies the linear term, which is beneficial for some of the algebra. In terms of estimates it merely shifts the difficulty to the nonlinear term. Working with the alternative zero finding problem G x \\overset \\text def \\Lambda x x x \\beta 3 c is also a perfectly valid choice. \"\"\" md\"\"\" An implementation, using the RadiiPolynomial library, of the truncated zero finding problem \\Pi K \\circ F \\circ \\Pi K is given below. \"\"\" function Λ⁻¹ β, space ∂ project Derivative 1 , space, space ∂² ∂ ∂ return inv ∂² β 1 ∂ β 2 I end F x, β, c, space x Λ⁻¹ β, space x x β 3 c md\"\"\" The Fréchet derivative of F reads ```math DF x I \\Lambda^ 1 \\mathcal M 2x , ``` where ```math \\mathcal M 2x h 2x h, \\qquad \\forall h \\in \\ell^1 \\nu, \\mathbb Z . ``` In other words, \\mathcal M 2x is the multiplication operator associated with 2x . As a bounded linear operator acting on infinite sequences in \\ell^1 \\nu, \\mathbb Z , \\mathcal M 2x can be visualized as a matrix with an infinite number of rows and columns ```math \\mathcal M 2x \\begin pmatrix \\ddots & \\ddots & \\ddots \\\\ \\ddots & 2x 0 & 2x 1 & 2x 2 \\\\ \\ddots & 2x 1 & 2x 0 & 2x 1 & \\ddots \\\\ & 2x 2 & 2x 1 & 2x 0 & \\ddots \\\\ & & \\ddots & \\ddots & \\ddots \\end pmatrix . ``` An implementation of \\Pi K \\circ DF \\Pi K x \\circ \\Pi K of the truncated problem is given below. \"\"\" DF x, β, domain, codomain I Λ⁻¹ β, codomain project Multiplication 2x , domain, codomain md\" Numerical zero\" md\"\"\" We apply Newton's method to \\Pi K \\circ F \\circ \\Pi K to find \\bar x \\in \\Pi K \\ell^1 \\nu, \\mathbb Z such that \\Pi K F \\bar x \\approx 0 . If the truncation dimension K is large enough we may hope that also \\Pi K F \\bar x \\approx 0 , since we expect the coefficients of \\bar x to decrease for moderately large k . \"\"\" β 0.1, 4.0, 1.0 c Sequence Fourier 1, 1.0 , 0.5, 0.0, 0.5 K 10 initial guess zeros ComplexF64, Fourier K, 1.0 F DF x F x, β, c, space x , DF x, β, space x , space x x bar, success newton F DF, initial guess begin plot LinRange 0, 2π, 201 , t real x bar t linewidth 3, label \"x bar\" xlims 0, 2π xlabel \"t\" end md\"\"\" Initializing Newton's method Here we were a bit lucky that a simple guess sufficed for Newton to converge. For other parameter values, however, we may need to study the solutions of the ODE in more detail using numerical integration. \"\"\" md\" Constructing A \" md\"\"\" We use the projection to split A , the approximate inverse of DF \\bar x , into a finite part and a tail part ```math A \\overset \\text def A K \\Pi K \\Pi K , ``` where A K is a linear map constructed below on \\Pi K \\ell^1 \\nu, \\mathbb Z . By construction, we can write A in the block diagonal form ```math A \\begin pmatrix A K & 0 \\\\ 0 & \\Pi K \\end pmatrix . ``` Next, since the operator \\Pi K DF \\bar x \\Pi K is a finite dimensional square matrix, we define A K to be its numerical inverse. \"\"\" A K inv DF x bar, β, space x bar , space x bar md\"\"\" note \"Remark\" It is not necessary for the truncation dimensions of \\bar x \\in \\Pi K \\ell^1 \\nu, \\mathbb Z and A K to be the same. For clarity, we do not introduce two different truncation dimension parameters. Essentially, the truncation dimension for \\bar x controls the size of the residue, i.e. Y , while the truncation dimension for the approximate inverse A K controls the contractivity of the fixed point operator, i.e. Z 1 . In principle, these dimensions can be managed rather independently. \"\"\" md\"\"\" Verifying the contraction \"\"\" md\"\"\" lemma \"Lemma\" Let r 0 , \\bar x , \\tilde x such that \\tilde x is the unique zero of F such that \\|\\tilde x \\bar x \\| \\le r . If \\bar x ^\\dagger \\bar x , then \\tilde x ^\\dagger \\tilde x . \"\"\" conjugacy symmetry x bar conj x bar K 1 K x bar K K md\"\"\" We now verify that T x \\overset \\text def x A F x is a contraction around \\bar x \\in \\Pi K \\ell^1 \\nu, \\mathbb Z . To rigorously compute the bounds Y, Z 1, Z 2 , we enclose all relevant data into intervals. \"\"\" iβ interval 1 interval 10 , interval 4 , interval 1 ic interval c ix bar interval x bar iA K interval A K md\"\"\" We choose a value for the weight \\nu for the Banach space \\ell^1 \\nu, \\mathbb Z . \"\"\" ν interval 1.1 does not have to be exactly 11 10 X Ell1 GeometricWeight ν md\"\"\" We are now in the Newton Kantorovich context and thus need to derive the appropriate bounds. \"\"\" md\" Computing Y \" md\"\"\" This concerns the bound on the residue A F \\bar x . Determining the residue requires only a finite computation. Indeed, since \\bar x \\bar x k 0 for |k| 2K we infer that \\Pi 2K F \\bar x 0 , and F \\bar x can be computed explicitly. In turn, this implies that A F \\bar x \\Pi 2K A \\Pi 2K F \\bar x . We conclude that \\|A F \\bar x \\| X \\|\\Pi 2K A \\Pi 2K F \\bar x \\| X requires only a finite computation, which we can perform with interval arithmetic to get a rigorous upper bound Y \\ge \\|A F \\bar x \\| X . \"\"\" function bound Y x bar, β, c, A, X K order x bar space Fourier 2K, frequency x bar Fx F x bar, β, c, space Id interval I ext A complex project Id, space, space ext A K K, K K coefficients A return norm ext A Fx, X end Y bound Y ix bar, iβ, ic, iA K, X md\" Computing Z 1 \" md\"\"\" This concerns the bound on the operator I A DF \\bar x . In the analysis we will split the bound in a part which is computable by \"brute force\" and an estimate of the tail. The triangle inequality is often helpful for such arguments, but in our case the characterization of the operator norm gives an additional tool. In particular we will use that for any K' \\in \\mathbb N we have that ```math \\| M \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\max \\left \\| M \\Pi K' \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z , \\| M \\Pi K' \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\right . ``` It follows from the expression for DF x that DF \\bar x is an finite bandwidth operator. It follows from the block diagonal structure of A that this implies that ```math A DF \\bar x \\Pi 2K A K \\Pi K \\Pi K DF \\bar x \\Pi 2K \\Pi K DF \\bar x \\Pi 2K , ``` and we see that this expression does not involve A K . Furthermore, it also follows from the block diagonal structure of A and the finite bandwidth of DF \\bar x that ```math A DF \\bar x \\Pi 2K A \\Pi 3K DF \\bar x \\Pi 2K \\Pi 3K A DF \\bar x \\Pi 2K , ``` which can be represented as a matrix and requires only a finite computation to evaluate. By choosing K' 2K we can thus split the computation of the norm in two parts ```math \\begin aligned \\|I A &DF \\bar x \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\\\ & \\max \\left \\|\\Pi 3K I A DF \\bar x \\Pi 2K \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z , \\| I ADF \\bar x \\Pi 2K \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\right . \\end aligned ``` Provided that K \\ge \\sqrt \\beta 2 , we conclude that ```math \\|I ADF \\bar x \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\|\\Pi 3K 1 I ADF \\bar x \\Pi 2K 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z . ``` The latter operator can be represented by a finite matrix and we can compute the operator norm \\|I ADF \\bar x \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z using interval arithmetic to obtain the bound Z 1 . \"\"\" function bound Z₁ x bar, β, A, X K order x bar domain Fourier 2K, frequency x bar codomain Fourier 3K, frequency x bar DFx DF x bar, β, domain, codomain Id interval I ext A complex project Id, codomain, codomain ext A K K, K K coefficients A return opnorm Id ext A DFx, X end Z₁ bound Z₁ ix bar, iβ, iA K, X md\" Computing Z 2 \" md\"\"\" This concerns the bound on the operator A DF x DF \\bar x . Since this is a Lipschitz bound on the first derivative, one approach is to bound the second derivative. However, here we just do a direct computation to see that A DF x DF \\bar x h 2 A \\Lambda^ 1 x \\bar x h , hence by the Banach algebra property and the definition of the operator norm we arrive at ```math \\|A DF x DF \\bar x h\\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\le 2 \\|A \\Lambda^ 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\|x \\bar x \\| \\ell^1 \\nu, \\mathbb Z \\|h\\| \\ell^1 \\nu, \\mathbb Z . ``` We thus need to bound 2 \\|A \\Lambda^ 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z . Since the operator \\Lambda^ 1 is diagonal, it has a natural restriction to \\Pi K \\ell^1 \\nu, \\mathbb Z . Assume N \\ge \\sqrt \\beta 2 . Then \\|A \\Lambda^ 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z \\max\\left \\|A K \\Lambda^ 1 \\| \\mathscr B \\ell^1 \\nu, \\mathbb Z , |\\lambda K 1 |^ 1 \\right Hint consider \\|A \\Lambda^ 1 e k\\| \\mathscr B \\ell^1 \\nu, \\mathbb Z for |k|\\le K and for |k| K separately . \"\"\" R Inf function bound Z₂ β, A, X K order domain A return 2max opnorm Λ⁻¹ β, domain A A, X , abs K 1 ^2 im β 1 K 1 β 2 end Z₂ bound Z₂ iβ, iA K, X md\" Finishing the CAP\" md\"\"\" To determine the values of r that satisfy the radii polynomial inequalities, we use the `interval of existence` function from RadiiPolynomial. This function returns an interval of existence, within which all contained values satisfy the contraction conditions. \"\"\" ie interval of existence Y, Z₁, Z₂, R r inf ie md\"\"\" To guarantee that the fixed point of T is a zero of F , we must check that A is injective. This property comes as a by product of the contraction argument. Indeed, \\|I A DF \\bar x \\| \\le Z 1 1 ensures that A DF \\bar x is invertible, which implies that A is surjective. By construction, A K is surjective and A is injective if and only if A K is injective. Since A K can be represented by a finite square matrix, it follows that A must also be injective. Therefore, we have proved the existence of a zero \\tilde x of F such that ```math \\tilde x \\bar x \\gamma, ``` where \\gamma \\in \\ell^1 \\nu, \\mathbb Z is not known explicitly, but satisfies \\| \\gamma \\| \\nu \\le r . Our choice of norm also gives us a C^0 error bound for the function ```math \\begin aligned \\max t \\in 0, 2\\pi | \\sum k \\in \\mathbb Z \\tilde x k e^ i k t \\sum |k| \\le K \\bar x k e^ i k t | & \\max t \\in 0, 2\\pi | \\sum k \\in \\mathbb Z \\tilde x k \\bar x k e^ i k t | \\\\ &\\le \\| \\tilde x \\bar x \\| \\nu \\\\ &\\le r. \\end aligned ``` \"\"\" begin rigorous eval x, r, t interval real x t , r format midpoint ts LinRange 0, 2π, 101 plot interval ts i , ts i 1 , rigorous eval ix bar, r, interval ts i , ts i 1 for i 1 length ts 1 label \"\", color palegreen3 plot ts, t real x bar t label \"x bar\", color royalblue1, linewidth 3 xlims 0, 2π xlabel \"t\" end "},{"url":"mod5/manifolds_lecture_notes/","title":"Lorenz system","tags":["lecture","module5"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 5 section 2 order 0.6 title \"Lorenz system\" tags \"lecture\", \"module5\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils html\"\"\" style main margin right auto text align justify style \"\"\" using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, LinearAlgebra html\"\"\" style main margin right auto text align justify style \"\"\" TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\"\"\" A one dimensional local stable manifold in the Lorenz system \"\"\" md\"\"\" The Lorenz system is given by \\begin align \\dot x f x \\begin pmatrix \\sigma x 2 x 1 \\\\ \\rho x 1 x 2 x 1 x 3 \\\\ \\beta x 3 x 1 x 2 \\end pmatrix \\end align where \\sigma,\\rho, \\beta 0 are parameters. It is straightforward Exercise to verify that if \\rho 1 , there are two nontrivial equilibria given by \\left\\ \\begin pmatrix \\sqrt \\beta \\rho 1 \\\\ \\sqrt \\beta \\rho 1 \\\\ \\rho 1 \\end pmatrix , \\quad \\begin pmatrix \\sqrt \\beta \\rho 1 \\\\ \\sqrt \\beta \\rho 1 \\\\ \\rho 1 \\end pmatrix \\right\\ . \"\"\" md\"\"\" We make the following assumptions Assume that \\rho 1 , and let us choose the equilibrium solution to be \\begin align \\tilde x \\begin pmatrix \\sqrt \\beta \\rho 1 \\\\ \\sqrt \\beta \\rho 1 \\\\ \\rho 1 \\end pmatrix . \\end align Assume that there is a unique stable real eigenvalue \\lambda 0 with associated eigenvector \\xi \\in \\mathbb R ^3 . Hence, the dimension of W^s \\text loc \\tilde x is one, that is m 1 . \"\"\" Markdown.MD Markdown.Admonition \"warning\", \"Remark\", md\"\"\" For \\rho 24.75 , \\sigma 10 and \\beta 8 3 , Df \\tilde x has one real negative eigenvalues and two complex conjugate eigenvalues with positive real parts Exercise . In this case, the local stable manifold W^s \\text loc \\tilde x is one dimensional. \"\"\" md\"\"\" Under the above assumptions, m 1 , and the map F is given by \\begin align F a a \\mathcal K \\phi a c, \\quad \\quad \\quad \\rm where \\quad \\phi a \\begin pmatrix \\sigma a 2 a 1 \\\\ \\rho a 1 a 2 a 1 a 3 \\\\ \\beta a 3 a 1 a 2 \\end pmatrix \\end align where a i a j is the Cauchy product defined by \\begin align a i a j n \\sum k 0 ^n a i k a j n k \\end align The following result will be useful when performing the nonlinear analysis. \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise Banach algebra \", md\"\"\" Prove that for all a 1,a 2 \\in \\ell^1 , \\|a 1 a 2\\| 1 \\le \\|a 1\\| 1 \\|a 2\\| 1 . \"\"\" md\"\"\" Note that in the case of a one dimensional manifold, the sequences are indexed over a single index running over \\mathbb N , as opposed to the more general multi index case of an m dimensional stable manifold. In the 1D case, \\begin align \\ell^1 \\left\\ c c n n \\ge 0 c n \\in \\mathbb R , \\quad \\|c\\| 1 \\sum n 0 ^\\infty |c n| \\infty \\right\\ \\end align \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise\", md\"\"\" Show that for all a a 1,a 2,a 3 \\in \\mathcal X \\ell^1 ^3 , F a \\in \\mathcal X . That shows that F \\mathcal X \\to \\mathcal X . \"\"\" md\"\"\" Evaluating the operator norm \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise characterization of operator norms on product of sequence spaces \", md\"\"\" Consider the Banach space \\mathcal X \\ell^1 ^n with norm \\begin align \\|a\\| \\mathcal X \\sum i 1 ^n \\| a i \\| 1. \\end align Let \\Gamma \\in B \\mathcal X be a bounded linear operator acting on \\mathcal X \\ell^1 ^n and represented by \\begin align \\Gamma \\begin pmatrix \\Gamma 1,1 & \\cdots & \\Gamma 1,n \\\\ \\vdots & \\ddots & \\vdots \\\\ \\Gamma n,1 & \\cdots & \\Gamma n,n \\end pmatrix \\end align where each \\Gamma i,j is a bounded linear operator on \\ell^1 . More explicitly, \\Gamma acts on an element a a 1,\\dots,a n \\in \\mathcal X as \\begin align \\Gamma a \\left \\Gamma a 1,\\dots, \\Gamma a n \\right \\left \\sum j 1 ^n \\Gamma 1,j a j , \\dots, \\sum j 1 ^n \\Gamma n,j a j \\right , \\end align where \\Gamma i,j a j n 1 \\sum n 2 \\ge 0 \\Gamma i,j n 1,n 2 a j n 2 . Then, show that \\begin align \\boxed \\|\\Gamma\\| B \\mathcal X \\max j 1,\\dots,n \\sum i 1 ^n \\| \\Gamma i,j \\| B \\ell^1 \\end align where \\begin align \\|\\Gamma i,j \\| B \\ell^1 \\sup n 2 \\ge 0 \\sum n 1 \\ge 0 | \\Gamma i,j n 1,n 2 | . \\end align \"\"\" md\"\"\" Here is an example of how to compute the operator norm of \\pi^ \\le 5 \\mathcal K \"\"\" function K λ, N op zeros typeof λ , Taylor N , Taylor N for n 2 N op n,n inv λ n end return op end begin mat K 2.0, 5 M zeros Taylor 5 ^3, Taylor 5 ^3 The operator K component M, 1, 1 . mat component M, 2, 2 . mat component M, 3, 3 . mat ell1 Ell1 no entry means that the weight is 1 X NormedCartesianSpace ell1, ell1, ell1 , ell1 each space has l1 and the outer norm is l1 opnorm M, X this is equivalent to opnorm M, 1 end Markdown.MD Markdown.Admonition \"note\", \"Exercise\", md\"\"\" Show theoretically that \\|\\mathcal K \\| B \\mathcal X \\le \\frac 1 2|\\lambda| \"\"\" md\"\"\" Finite dimensional projection \"\"\" md\"\"\" Computing an approximate solution to F 0 requires first considering a finite dimensional projection. We need the projection operator on a finite number of Taylor coefficients N 1 coefficients and its complement \\begin align \\pi^ \\leq N b n \\begin cases b n, & n 0,\\dots,N, \\\\ 0, & n N, \\end cases & \\qquad\\qquad \\pi^ N b n \\begin cases 0, & n 0,\\dots,N, \\\\ b n, & n N. \\end cases \\end align Now, given three sequences a 1,a 2,a 3 and for a a 1,a 2,a 3 , consider the finite dimensional projection on a finite number of Taylor coefficients 3 N 1 coefficients and its complement \\begin align \\pi^ \\leq N a \\left \\pi^ \\leq N a 1,\\pi^ \\leq N a 2,\\pi^ \\leq N a 3 \\right \\qquad \\rm and \\qquad \\pi^ N a \\left \\pi^ N a 1,\\pi^ N a 2,\\pi^ N a 3 \\right \\end align so that a \\pi^ \\leq N a \\pi^ N a and \\pi^ \\leq N \\pi^ N 0 \\pi^ N \\pi^ \\leq N . The range \\pi^ \\leq N \\mathcal X is finite dimensional, and the restriction of \\pi^ \\leq N F to \\pi^ \\leq N \\mathcal X , which we denote by F^ \\leq N , is what we will work with in the computer. An implementation is given below, as well as an implementation of its derivative. \"\"\" md\"\"\" Numerics \"\"\" md\"\"\" Implementation code for the finite dimensional projection F^ \\leq N \"\"\" function F a, x, λ, ξ, par, N a₁, a₂, a₃ eachcomponent a σ, ρ, β par F₁ project a₁ K λ, N σ a₂ a₁ , Taylor N F₁ 0 x 1 F₁ 1 ξ 1 F₂ project a₂ K λ, N a₁ ρ a₃ a₂ , Taylor N F₂ 0 x 2 F₂ 1 ξ 2 F₃ project a₃ K λ, N a₁ a₂ β a₃ , Taylor N F₃ 0 x 3 F₃ 1 ξ 3 return Sequence Taylor N ^3, coefficients F₁ coefficients F₂ coefficients F₃ end md\"\"\" Implementation code for the Jacobian matrix DF^ \\leq N \"\"\" function DF a, λ, par, N a₁, a₂, a₃ eachcomponent a σ, ρ, β par D₁F₁ I K λ, N σ D₁F₁ 0, . 0 D₁F₁ 1, . 0 D₁F₁ 0,0 D₁F₁ 1,1 1 D₂F₁ K λ, N σ D₃F₁ zeros Taylor N , Taylor N D₁F₂ K λ, N project Multiplication ρ a₃ , Taylor N , Taylor N D₂F₂ I K λ, N 1 D₂F₂ 0, . 0 D₂F₂ 1, . 0 D₂F₂ 0,0 D₂F₂ 1,1 1 D₃F₂ K λ, N project Multiplication a₁ , Taylor N , Taylor N D₁F₃ K λ, N project Multiplication a₂ , Taylor N , Taylor N D₂F₃ K λ, N project Multiplication a₁ , Taylor N , Taylor N D₃F₃ I K λ, N β D₃F₃ 0, . 0 D₃F₃ 1, . 0 D₃F₃ 0,0 D₃F₃ 1,1 1 return LinearOperator Taylor N ^3, Taylor N ^3, coefficients D₁F₁ coefficients D₂F₁ coefficients D₃F₁ coefficients D₁F₂ coefficients D₂F₂ coefficients D₃F₂ coefficients D₁F₃ coefficients D₂F₃ coefficients D₃F₃ end md\"\"\" From now on, we fix the parameters in the Lorenz system to be the classical ones, namely \\begin align \\rho 28, \\quad \\sigma 10 \\quad \\text and \\quad \\beta 8 3. \\end align \"\"\" begin σ, ρ, β 10.0, 28.0, 8 3 par σ, ρ, β tσ, tρ, tβ interval 10.0 , interval 28.0 , interval 8 interval 3 tpar tσ, tρ, tβ end md\"\"\" For these parameters, there is a unique real negative eigenvalue \\lambda of Df \\tilde x with associated eigenvector \\xi \\in \\mathbb R ^3 see the above Remark . \"\"\" md\"\"\" Rigorous computation of the stable eigenvalue \\lambda and eigenvector \\xi \\in \\mathbb R ^3 \"\"\" md\"\"\" While we could work hard and compute the eigenpair \\lambda,\\xi by hand, we resort to a computer assisted proof to obtain a rigorous enclosure. Here is a code that performs this task. \"\"\" md\"\"\" Numerical approximation and rigorous enclosure of the equilibrium solution \\tilde x \"\"\" begin bx sqrt β ρ 1 , sqrt β ρ 1 , ρ 1 Numerical approximation tx sqrt tβ tρ interval 1 , sqrt tβ tρ interval 1 , tρ interval 1 Rigorous enclosure end md\"\"\" Jacobian matrix for the Lorenz system \"\"\" function Df u, par σ, ρ, β par u₁, u₂, u₃ u return σ σ zero u₃ ρ u₃ one u₂ u₁ u₂ u₁ β end md\"\"\" Computation of an approximate eigenpair \"\"\" begin approx eigenvalues, approx eigenvectors eigen Df bx, par bλ, bξ real approx eigenvalues 1 , real approx eigenvectors ,1 end md\"\"\" Zero finding problem for an eigenpair see Part I of the tutorial \"\"\" function F eig X, M, ū λ X 1 u X 2 end return Sequence sum u . conj ū 1 M u λ u end md\"\"\" The Jacobian of the zero finding map for an eigenpair \"\"\" function DF eig X, M, ū λ X 1 u X 2 end n length X 1 temp zeros eltype X , n 1, n 1 temp 2 end,1 u temp 1,2 end ū' temp 2 end,2 end M λ I return LinearOperator temp end md\"\"\" A Newton Kantorovich Theorem to obtain a computer assisted proof for an eigenpair \"\"\" function validate eigenpair λ, u, M X λ u ū u iA interval. inv DF eig X, mid. M , ū iX interval. X Y norm iA F eig iX, M, ū , 1 Z₁ opnorm I iA DF eig iX, M, ū , 1 Z₂ opnorm iA, 1 return interval of existence Y, Z₁, Z₂, Inf end md\"\"\" The rigorous enclosure of the eigenpair \"\"\" begin err eig inf validate eigenpair bλ, bξ, Df tx, tpar tλ interval bλ, err eig format midpoint tξ interval. bξ, err eig format midpoint end md\"\"\" We introduce a rescaling for the eigenvector will impact the decay of the Taylor coefficients \"\"\" begin eigenvector scaling 60 bξ scaled eigenvector scaling bξ tξ scaled eigenvector scaling tξ end md\"\"\" Compute an numerical approximation of the Taylor coefficients with Newton's method \"\"\" begin N 150 Choose a Taylor order initialguess zeros Taylor N ^3 The initial guess consists of the linear approximation of the manifold for i 1 3 component initialguess, i 0 bx 1 component initialguess, i 1 bξ 1 end a, newton a F a, bx, bλ, bξ scaled, par, N , DF a, bλ, par, N , initialguess end md\"\"\" Plot the image of the parameterization \"\"\" begin using OrdinaryDiffEq using GLMakie function lorenz du, u, p, t du 1 10.0 u 2 u 1 du 2 u 1 28.0 u 3 u 2 du 3 u 1 u 2 8 3 u 3 end u0 0.0 10.0 10.0 tspan 0.0, 50.0 prob ODEProblem lorenz, u0, tspan sol solve prob, Tsit5 fig Figure ax Axis3 fig 1,1 aspect data, azimuth 3π 5 lines ax, Point3f sol t for t LinRange tspan..., 10 001 color royalblue1 lines ax, Point3f a t for t LinRange 1, 1, 101 color salmon, linewidth 3 meshscatter ax, Point3f bx , Point3f bx 1 , bx 2 , bx 3 , Point3f 0,0,0 markersize 1, color palegreen3 fig end md\"\"\" Choosing the approximate inverse A for the Fréchet derivative DF \\bar a \"\"\" md\"\"\" The derivative of F a a \\mathcal K \\phi a c can now be written compactly as \\begin align DF a I \\mathcal K D\\phi a \\end align acting on an element b b 1,b 2,b 3 \\in \\mathcal X as \\begin align DF a b b \\mathcal K D\\phi a b. \\end align \"\"\" md\"\"\" We use the projection to split A into a finite part and a tail part \\begin align A A^ \\le N \\pi^ \\le N I^ N \\pi^ N ,\\end align where A^ \\le N is a linear map to be chosen below on \\pi^ \\le N \\mathcal X and I^ N is the identity on \\pi^ N \\mathcal X . Hence by construction one may also write A as \\begin align A \\pi^ \\le N A^ \\le N \\pi^ \\le N \\pi^ N I^ N \\pi^ N .\\end align \"\"\" md\"\"\" We compute a numerical inverse of the Jacobian DF^ \\le N \\bar a and we denote this inverse matrix by A^ \\le N . Moreover, we compute the operator norm of the operator A . \"\"\" begin A finite interval. inv DF a, bλ, par, N opnorm A finite opnorm A finite, 1 opnormA max opnorm A finite, 1 end md\"\"\" The Newton Kantorovich proof \"\"\" md\"\"\" We are now in the Newton Kantorovich context and thus need to derive the appropriate bounds. \"\"\" md\"\"\" The following code is used to compute the operator \\pi^ N acting on a single sequence or a list of sequences \"\"\" function tail x, N get the tail of a Taylor series y zeros eltype x , space x for n N 1 order x y n x n end return y end md\"\"\" The bound Y \"\"\" md\"\"\" Recall that that bound Y satisfies \\| A F \\bar a \\| \\mathcal X \\le Y . Note that A F \\bar a \\pi^ \\le 2N A F \\bar a \\stackrel 0 \\overbrace \\pi^ 2N A F \\bar a , since \\bar a 1 \\bar a 2 n \\bar a 1 \\bar a 3 n 0 for n 2N . Hence, \\begin align A F \\bar a & \\pi^ \\le 2N A F \\bar a \\\\ & \\pi^ \\le N A F \\bar a \\pi^ \\le 2N \\pi^ \\le N A F \\bar a \\\\ & \\pi^ \\le N A^ \\le N F^ \\le N \\bar a \\pi^ \\le 2 N \\pi^ \\le N \\bar a \\mathcal K \\phi \\bar a c \\\\ & \\pi^ \\le N A^ \\le N F^ \\le N \\bar a \\pi^ \\le 2 N \\pi^ \\le N \\mathcal K \\phi \\bar a \\end align The code just below computes with interval arithmetic the bound Y satisfying \\begin align \\| A F \\bar a \\| \\mathcal X \\le \\| \\pi^ \\le N A^ \\le N F^ \\le N \\bar a \\| \\mathcal X \\frac 1 |\\lambda| N 1 \\| \\pi^ \\le 2 N \\pi^ \\le N \\phi \\bar a \\| \\mathcal X \\le Y. \\end align \"\"\" begin full F F interval. a , tx, tλ, tξ scaled, par, 2N Y norm A finite full F, 1 sum i norm tail component full F, i , N , 1 , 1 3 abs tλ N 1 end md\"\"\" The bound Z 1 \"\"\" md\"\"\" We begin with three Exercises that will be useful in deriving the Z 1 bound. \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise 1 for Z 1\", md\"\"\" Show that \\| \\pi^ N \\mathcal K \\| B \\mathcal X \\le \\frac 1 |\\lambda| N 1 . \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise 2 for Z 1\", md\"\"\" Show that \\begin align \\| D\\phi \\bar a \\| B \\mathcal X \\max i 1,2,3 \\sum j 1 ^3 \\| \\partial i \\phi j \\bar a \\| 1 \\end align \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ . \"\"\" Foldable \"\"\"Hint\"\"\", md\"\"\" Note that \\begin align D\\phi a \\begin pmatrix \\sigma I & \\sigma I & 0 \\\\ \\rho I \\mathcal M a 3 & I & \\mathcal M a 1 \\\\ \\mathcal M a 2 & \\mathcal M a 1 & \\beta I \\end pmatrix \\end align , where \\mathcal M a i \\in B \\ell^1 is the multiplication operator defined by \\mathcal M a i b a i b with norm \\| \\mathcal M a i \\| B \\ell^1 \\| a i\\| 1 . \"\"\" Markdown.MD Markdown.Admonition \"note\", \"Exercise 3 for Z 1\", md\"\"\" Show that \\pi^ \\le N D\\phi \\bar a \\pi^ N 0 . \"\"\" Foldable \"\"\"Hint\"\"\", md\"\"\" Note that each none blocks of D\\phi \\bar a is lower triangular since of the Cauchy products. \"\"\" md\"\"\" Recall that the bound Z 1 satisfies \\begin align \\| I A DF \\bar a \\| B \\mathcal X \\le Z 1. \\end align We use a similar splitting as in the case of periodic orbits using Fourier series see Part 3 of the tutorial , and observe that \\begin align \\|\\Gamma\\| B \\mathcal X \\max \\Big \\|\\Gamma \\pi^ \\le N \\| B \\mathcal X , \\|\\Gamma \\pi^ N \\| B \\mathcal X \\Big . \\end align We compute separately two bounds M 1,M 2 satisfying \\| I A DF \\bar a \\pi^ \\le N \\| B \\mathcal X \\le M 1 and \\| I A DF \\bar a \\pi^ N \\| B \\mathcal X \\le M 2 . Recall that A A^ \\le N \\pi^ \\le N I^ N \\pi^ N . \"\"\" md\"\"\" Computing M 1 \"\"\" md\"\"\" Note first that \\begin align \\| I A DF \\bar a \\pi^ \\le N \\| B \\mathcal X &\\le \\| I A^ \\le N \\pi^ \\le N DF \\bar a \\pi^ \\le N \\| B \\mathcal X \\| \\pi^ N DF \\bar a \\pi^ \\le N \\| B \\mathcal X , \\end align where \\pi^ N DF \\bar a \\pi^ \\le N \\pi^ N I \\mathcal K D\\phi \\bar a \\pi^ \\le N \\pi^ N \\pi^ \\le N \\pi^ N \\mathcal K D\\phi \\bar a \\pi^ \\le N \\pi^ N \\mathcal K D\\phi \\bar a \\pi^ \\le N , and hence by Exercises 1 and 2 \\begin align \\| \\pi^ N DF \\bar a \\pi^ \\le N \\| B \\mathcal X & \\le \\| \\pi^ N \\mathcal K \\| B \\mathcal X \\| \\pi^ N D\\phi \\bar a \\| B \\mathcal X \\\\ & \\le \\frac 1 |\\lambda| N 1 \\| D\\phi \\bar a \\| B \\mathcal X \\\\ & \\le \\frac 1 |\\lambda| N 1 \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ \\end align Using interval arithmetic, one can compute an upper bound M 1 such that \\begin align \\| I A DF \\bar a \\pi^ \\le N \\| B \\mathcal X &\\le \\| I A^ \\le N \\pi^ \\le N DF \\bar a \\pi^ \\le N \\| B \\mathcal X \\frac 1 |\\lambda| N 1 \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ \\le M 1 \\end align \"\"\" md\"\"\" Computing M 2 \"\"\" md\"\"\" Now, for M 2 \\begin align \\| I A DF \\bar a \\pi^ N \\| B \\mathcal X & \\| I A^ \\le N \\pi^ \\le N I^ N \\pi^ N DF \\bar a \\pi^ N \\| B \\mathcal X \\\\ &\\le \\| A^ \\le N \\stackrel 0 \\overbrace \\pi^ \\le N DF \\bar a \\pi^ N \\| B \\mathcal X \\| \\pi^ N \\pi^ N DF \\bar a \\pi^ N \\| B \\mathcal X , \\end align since \\pi^ \\le N DF \\bar a \\pi^ N \\pi^ \\le N I \\mathcal K D\\phi \\bar a \\pi^ N \\pi^ \\le N \\pi^ N \\pi^ \\le N D\\phi \\bar a \\pi^ N \\pi^ \\le N D\\phi \\bar a \\pi^ N 0 by Exercise 3. Now, using a similar idea as for M 1 , one can show that \\begin align \\| \\pi^ N \\pi^ N DF \\bar a \\pi^ N \\| B \\mathcal X \\le \\frac 1 |\\lambda| N 1 \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ \\end align . \"\"\" md\"\"\" Computing Z 1 \"\"\" md\"\"\" Since clearly M 2 \\le M 1 , then we let Z 1 M 1 . Then, using interval arithmetic, one can compute an upper bound Z 1 such that \\begin align \\| I A DF \\bar a \\| B \\mathcal X &\\le \\| I A^ \\le N \\pi^ \\le N DF \\bar a \\pi^ \\le N \\| B \\mathcal X \\frac 1 |\\lambda| N 1 \\max \\left\\ \\sigma \\|\\rho a 3\\| 1 \\|a 2\\| 1, \\sigma 1 \\|a 1\\| 1, \\|a 1\\| 1 \\beta \\right\\ \\le Z 1 \\end align which we do below. \"\"\" begin a₁, a₂, a₃ eachcomponent interval. a opnorm Dϕ max tσ norm ρ a₃, 1 norm a₂, 1 , tσ 1 norm a₁, 1 , norm a₁, 1 β Z₁ opnorm I A finite DF interval. a , tλ, tpar, N , 1 opnorm Dϕ abs tλ N 1 end md\"\"\" The bound Z 2 \"\"\" md\"\"\" This concerns the bound on the operator A DF a DF \\bar a . Since this is a Lipschitz bound on the first derivative, one approach is to bound the second derivative. However, here we just do a direct computation to see that A DF a DF \\bar a b A \\mathcal K D\\phi a D\\phi \\bar a b . Note that \\begin align D\\phi a D\\phi \\bar a b \\begin pmatrix 0 & 0 & 0 \\\\ 0 \\mathcal M a 3 \\mathcal M \\bar a 3 & 0 & \\mathcal M a 1 \\mathcal M \\bar a 1 \\\\ \\mathcal M a 2 \\mathcal M \\bar a 2 & \\mathcal M a 1 \\mathcal M \\bar a 1 & 0 \\end pmatrix \\begin pmatrix b 1 \\\\ b 2 \\\\ b 3 \\end pmatrix \\begin pmatrix 0 \\\\ a 3 \\bar a 3 b 1 a 1 \\bar a 1 b 3 \\\\ a 2 \\bar a 2 b 1 a 1 \\bar a 1 b 2\\end pmatrix \\end align , hence by the Banach algebra property and the definition of the operator norm we arrive at \\begin align \\|A DF a DF \\bar a b\\| \\mathcal X &\\le \\|A\\| B \\mathcal X \\| \\mathcal K \\| B \\mathcal X \\| a 3 \\bar a 3 \\| 1 \\|b 1\\| 1 \\| a 1 \\bar a 1\\| 1 \\|b 3\\| 1 \\|a 2 \\bar a 2\\| 1 \\|b 1\\| 1 \\|a 1 \\bar a 1\\| 1 \\|b 2\\| 1 \\\\ & \\le \\|A\\| B \\mathcal X \\| \\mathcal K \\| B \\mathcal X \\|a \\bar a \\| \\mathcal X \\|b\\| \\mathcal X \\\\ & \\frac 1 2|\\lambda| \\|A\\| B \\mathcal X \\|a \\bar a \\| \\mathcal X \\|b\\| \\mathcal X . \\end align Computing Z 2 boils down to compute or bound \\frac 1 2|\\lambda| \\|A\\| B \\mathcal X . \"\"\" Z₂ 2 abs tλ opnormA md\"\"\" Finishing the CAP \"\"\" md\"\"\" We now evaluate the radii polynomial to finish the Newton Kantorovich proof. \"\"\" begin r star Inf r interval of existence Y, Z₁, Z₂, r star end "},{"url":"mod5/theory_manifolds_lecture_notes/","title":"Parameterization method","tags":["lecture","module5"],"text":" A Pluto.jl notebook v0.19.47 frontmatter chapter 5 section 1 order 0.5 title \"Parameterization method\" tags \"lecture\", \"module5\" layout \"layout.jlhtml\" using Markdown using InteractiveUtils using PlutoTeachingTools, PlutoUI packages for the notebook using RadiiPolynomial, LinearAlgebra html\"\"\" style main margin right auto text align justify style \"\"\" TableOfContents title \"Table of Contents\" indent true, depth 4, aside true md\"\"\" Local stable manifolds of equilibria \"\"\" md\"\"\" This part of the tutorial is concerned with the computation of local stable manifolds the computation of local unstable manifolds is done similarly . Our focus is the development of efficient high order approximation methods with validated error bounds for these manifolds. To be more specific, consider a differential equation \\dot x f x with associated flow \\varphi\\colon \\mathbb R \\times \\mathbb R ^n \\to \\mathbb R ^n and assume that \\tilde x is an equilibrium. The stable set for \\tilde x is defined to be \\begin align W^s \\tilde x \\ x\\in\\mathbb R ^n \\lim t\\to \\infty \\varphi t,x \\tilde x \\ . \\end align At this level of generality there is very little that can be said about W^s \\tilde x , however a natural step is to simplify the problem by restricting the dynamics to a neighborhood of \\tilde x . Hence, let us define a more localized notion of a stable set. Given a neighborhood U of \\tilde x the associated local stable manifold is given by \\begin align W^s \\text loc \\tilde x W^s \\tilde x ,U \\ x \\in W^s \\tilde x \\mid \\varphi 0,\\infty ,x \\subset U \\ . \\end align \"\"\" md\"\"\" The Parameterization Method \"\"\" md\"\"\" Assumptions \"\"\" md\"\"\" For sake of simplicity of the presentation , we make the following assumptions \\tilde x is an equilibrium solution of \\dot x f x there are exactly m stable eigenvalues \\ \\lambda 1, \\ldots, \\lambda m \\ , they are real and there exist m linearly independent associated eigenvector \\xi i \\in \\mathbb R ^n Denote \\begin align \\Lambda \\begin pmatrix \\lambda 1 & \\ldots & 0 \\\\ \\vdots & \\ddots & \\vdots \\\\ 0 & \\ldots & \\lambda m \\end pmatrix \\in M m \\mathbb R \\quad \\text and \\quad A 0 \\xi 1 | \\ldots | \\xi m \\end align an n \\times m matrix whose columns are the associated stable eigenvectors. The linearized equation restricted to the stable subspace is \\dot \\theta \\Lambda \\theta \\theta \\in \\mathbb R ^m with associated flow e^ \\Lambda t . \"\"\" md\"\"\" The conjugacy relation \"\"\" md\"\"\" Denote by B^m \\ \\theta \\theta 1,\\dots,\\theta m |\\theta j| \\le 1 \\ the unit closed \\ell^\\infty ball in \\mathbb R ^m . To solve for the parameterization P B^m \\to \\mathbb R ^n of the local stable manifold, we impose 1 P 0 \\tilde x equilibria are mapped to one another 2 DP 0 A 0 P is tangent to the stable eigenspace \\mathbb E ^s at 0 3 \\varphi t, P \\theta P e^ \\Lambda t \\theta , for all \\theta \\in B^m conjugacy relation \"\"\" Foldable \"\"\"Why such parameterization provides a local stable manifold?\"\"\", md\"\"\" We get that P B^m \\subset W^s \\text loc \\tilde x , since for \\theta \\in B^m , \\begin align \\lim t \\to \\infty \\varphi t, P \\theta \\lim t \\to \\infty P e^ \\Lambda t \\theta P\\left \\lim t \\to \\infty e^ \\Lambda t \\theta \\right P 0 \\tilde x . \\end align \"\"\" md\"\"\" The parameterization lemma \"\"\" md\"\"\" Remark. The utility of 3 above is limited by the appearance of the flow \\varphi , which is only known implicitly. Let us introduce a more practical infinitesimal version of the conjugacy relation, which requires the following important result.\"\"\" Markdown.MD Markdown.Admonition \"tip\", \"Parameterization Lemma\", md\"\"\" Let P \\colon B^m \\to \\mathbb R ^n be a function satisfying 1 and 2 . Then P satisfies 3 \\Longleftrightarrow P solves the partial differential equation \\begin align \\text 4 \\quad DP \\theta \\Lambda \\theta f P \\theta , \\quad \\theta \\in B^m. \\end align \"\"\" Foldable \"\"\"Proof\"\"\", md\"\"\" \\Longleftarrow Assume that the assumption 4 above holds and let \\theta \\in B^m . Let \\gamma t P e^ \\Lambda t \\theta . Then, \\gamma 0 P \\theta and \\begin align \\gamma' t \\frac d dt P\\left e^ \\Lambda t \\theta \\right D P\\left e^ \\Lambda t \\theta \\right \\Lambda e^ \\Lambda t \\theta f\\left P\\left e^ \\Lambda t \\theta \\right \\right f \\gamma t , \\end align that is \\gamma solves the IVP x' f x , x 0 P \\theta . By uniqueness, \\varphi t, P \\theta \\gamma t P e^ \\Lambda t \\theta . \\Longrightarrow Suppose that P solves 3 . Differentiate on both sides with respect to t \\begin align f \\varphi t,P \\theta DP e^ \\Lambda t \\theta \\Lambda e^ \\Lambda t \\theta, \\quad \\text and take t 0. \\quad \\square \\end align \"\"\" md\"\"\" From the Parameterization Lemma, to solve for the parameterization P B^m \\to \\mathbb R ^n , we impose 1 P 0 \\tilde x equilibria are mapped to one another 2 DP 0 A 0 P is tangent to the stable eigenspace \\mathbb E ^s at 0 4 DP \\theta \\Lambda \\theta f P \\theta , \\forall~\\theta \\in B^m invariance equation The invariance equation can be written more explicitly, for \\theta \\theta 1, \\ldots, \\theta m \\in B^m , as \\begin align 4 \\quad \\lambda 1 \\theta 1 \\frac \\partial \\partial \\theta 1 P \\theta 1, \\ldots, \\theta m \\ldots \\lambda m \\theta m \\frac \\partial \\partial \\theta m P \\theta 1, \\ldots, \\theta m f P \\theta 1, \\ldots, \\theta m \\end align \"\"\" md\"\"\" Taylor series representation \"\"\" md\"\"\" We use a Taylor series representation of the form \\begin align P \\theta \\sum |\\alpha| 0 ^\\infty \\begin pmatrix a 1 \\alpha \\\\ a 2 \\alpha \\\\ \\vdots \\\\ a n \\alpha \\end pmatrix \\theta^\\alpha \\end align where \\alpha \\alpha 1,\\dots,\\alpha m \\in \\mathbb N ^m , |\\alpha| \\alpha 1 \\dots \\alpha m , \\theta \\theta 1,\\dots,\\theta m and \\theta^\\alpha \\theta 1^ \\alpha 1 \\cdots \\theta m^ \\alpha m . Denote a a 1,\\dots,a n , where each a i a i \\alpha |\\alpha| \\ge 0 . Plugging the above Taylor series in equations 1 , 2 and 4 1 \\begin pmatrix a 1 0,\\dots,0 \\\\ \\vdots \\\\ a n 0,\\dots,0 \\end pmatrix \\tilde x , for |\\alpha| 0 the equilibrium solution 2 \\begin pmatrix a 1 e j \\\\ \\vdots \\\\ a n e j \\end pmatrix \\xi j , j 1,\\dots,m for |\\alpha| 1 the m stable eigenvectors 4 \\alpha \\cdot \\lambda a i \\alpha \\phi i a \\alpha , i 1,\\dots,n for |\\alpha| \\ge 2 where \\begin align \\alpha \\cdot \\lambda \\alpha 1 \\lambda 1 \\cdots \\alpha m \\lambda m \\quad \\text and \\quad f i P \\theta \\sum |\\alpha| \\ge 0 \\phi i a \\alpha \\theta^\\alpha \\end align \"\"\" md\"\"\" The Zero Finding Problem, Banach Space and Norm \"\"\" md\"\"\" For each i 1,\\dots,n , define F i a \\ F i a \\alpha \\ |\\alpha| \\ge 0 component wise by \\begin align F i a \\alpha \\begin cases a i 0,\\dots,0 \\tilde x i,& |\\alpha| 0, \\\\ a i e j \\xi j i, & |\\alpha| 1, \\rm~with~ \\alpha e j \\rm~for~ j 1,\\dots,m, \\\\ a i \\alpha \\frac 1 \\alpha \\cdot \\lambda \\phi i a \\alpha , & |\\alpha| \\ge 2. \\end cases \\end align For each i 1,\\dots,n , let c i \\ c i \\alpha\\ |\\alpha| \\ge 0 component wise as \\begin align c i \\alpha \\begin cases \\tilde x i, & \\rm~if~ |\\alpha| 0, \\\\ \\xi j , & \\rm~for~ |\\alpha| 1 \\rm~with~ \\alpha e j \\rm~for~ j 1,\\dots,m, \\\\ 0, & \\rm~if~ |\\alpha| \\ge 2 \\end cases \\end align and let c c 1,\\dots,c n . Define the diagonal operator K acting on a sequence b \\ b \\alpha\\ |\\alpha| \\ge 0 as \\begin align K b \\alpha \\begin cases 0, & \\rm~if~ |\\alpha| 0, \\\\ 0, & \\rm~if~ |\\alpha| 1, \\\\ \\frac 1 \\alpha \\cdot \\lambda b \\alpha, & \\rm~if~ |\\alpha| \\ge 2. \\end cases \\end align Define the operator \\mathcal K acting on a a 1,\\dots,a n as \\begin align \\mathcal K a K a 1,K a 2,\\dots,K a n . \\end align With the above notation, for each i 1,\\dots,n , \\begin align F i a a i K \\phi i a c i. \\end align Letting F a F 1 a ,\\dots,F n a and \\phi a \\phi 1 a ,\\dots,\\phi n a , one can densely write \\begin align F a a \\mathcal K \\phi a c \\end align Define the Banach space \\mathcal X \\ell^1 ^n , where \\begin align \\ell^1 \\left\\ c c \\alpha |\\alpha| \\ge 0 c \\alpha \\in \\mathbb R , \\quad \\|c\\| 1 \\sum |\\alpha| 0 ^\\infty |c \\alpha| \\infty \\right\\ . \\end align The norm on \\mathcal X is given by \\begin align \\|a\\| \\mathcal X \\sum i 1 ^n \\| a i \\| 1 \\end align \"\"\" md\"\"\" Code that implements the operator K \"\"\" function K λ, N op zeros typeof λ , Taylor N , Taylor N for n 2 N op n,n inv λ n end return op end K 2.0,5 Markdown.MD Markdown.Admonition \"note\", \"Exercise Compact operator \", md\"\"\" Show that the operator \\mathcal K \\mathcal X \\to \\mathcal X is compact. \"\"\" md\"\"\" We now formalize how a solution to the above zero finding problem leads to local stable manifolds of equilibria of our differential equation. \"\"\" Markdown.MD Markdown.Admonition \"lemma\", \"Lemma A solution to the zero finding problem yields a parameterization of the local stable manifold \", md\"\"\" Assume that \\tilde x is an equilibrium solution of \\dot x f x there are exactly m stable eigenvalues \\ \\lambda 1, \\ldots, \\lambda m \\ , they are real and there exist m linearly independent associated eigenvector \\xi i \\in \\mathbb R ^n . If a \\in \\mathcal X is a solution to F a 0 , then the corresponding Taylor series expansion \\begin align P \\theta \\sum |\\alpha| 0 ^\\infty \\begin pmatrix a 1 \\alpha \\\\ a 2 \\alpha \\\\ \\vdots \\\\ a n \\alpha \\end pmatrix \\theta^\\alpha \\end align converges on B^m \\ \\theta \\theta 1,\\dots,\\theta m |\\theta j| \\le 1 \\ and the function P B^m \\to \\mathbb R ^n provides a parameterization of the local stable manifold W^s \\text loc \\tilde x , that is \\begin align P B^m W^s \\text loc \\tilde x . \\end align \"\"\" md\"\"\" Rather than presenting the bounds for the Newton Kantorovich Theorem in general, let us rather focus on an example. Specifically, we compute a rigorous parameterization of a one dimensional local stable manifold of an equilibrium solution in the Lorenz system. \"\"\" "}] \ No newline at end of file