splinekit 0.2.7__tar.gz → 0.2.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {splinekit-0.2.7 → splinekit-0.2.10}/.gitignore +3 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/PKG-INFO +11 -5
- {splinekit-0.2.7 → splinekit-0.2.10}/README.md +8 -2
- {splinekit-0.2.7 → splinekit-0.2.10/dev/Accelerated}/pyproject.toml +1 -1
- splinekit-0.2.10/dev/Jupyter/periodic-spline/addition/spline_add_prjct.ipynb +173 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/addition/spline_addition.ipynb +165 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/calculus/spline_antigrad.ipynb +146 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/calculus/spline_derivative.ipynb +165 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/calculus/spline_fourier_diff.ipynb +239 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/calculus/spline_gradient.ipynb +173 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/calculus/spline_integrate.ipynb +185 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/construct/spline_from_c.ipynb +244 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/conv_corr/spline_autocorr.ipynb +178 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/conv_corr/spline_convolve.ipynb +190 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/conv_corr/spline_correlate.ipynb +211 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/extrema/spline_curated_xtrm.ipynb +205 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/extrema/spline_xtrm.ipynb +186 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/fourier/spline_fourier.ipynb +4 -6
- splinekit-0.2.10/dev/Jupyter/periodic-spline/fourier/spline_from_fourier.ipynb +188 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/fourier/spline_smoothness.ipynb +139 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/multiresolution/spline_down.ipynb +309 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/multiresolution/spline_down_divisible.ipynb +279 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/multiresolution/spline_rescale.ipynb +207 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/multiresolution/spline_up.ipynb +207 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/multiresolution/spline_up_proj.ipynb +204 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/projection/spline_projection.ipynb +145 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/sgn/spline_curated_zeros.ipynb +220 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/sgn/spline_sgn.ipynb +168 -0
- splinekit-0.2.10/dev/Jupyter/periodic-spline/sgn/spline_zeros.ipynb +365 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/PurePython/pyproject.toml +1 -1
- splinekit-0.2.10/dev/Wolfram/Generic Projection Infinite Support.nb +14906 -0
- splinekit-0.2.10/dev/Wolfram/Generic Projection Periodic coefficients.nb +2710 -0
- splinekit-0.2.10/dev/Wolfram/Generic Projection.nb +8513 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/Test PeriodicSpline1D.nb +293 -169
- splinekit-0.2.10/dev/Wolfram/Verify Upscale Projected.nb +16267 -0
- splinekit-0.2.10/dev/Wolfram/Verify Upscale.nb +1650 -0
- splinekit-0.2.10/dev/Wolfram/Verify downscale_projected.nb +1897 -0
- splinekit-0.2.10/docs/bibliography.rst +15 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/bspline_bases.rst +27 -27
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/bspline_inverse.rst +7 -7
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/bspline_m_scale.rst +1 -1
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/bspline_poles.rst +13 -13
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/bspline_stability.rst +5 -5
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/bspline_vs_pi.rst +2 -2
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/spline_engineer_func.rst +5 -5
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/spline_vs_poly.rst +11 -11
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/padding/change_basis.rst +1 -1
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/padding/padding.rst +34 -34
- splinekit-0.2.10/docs/demos/spline1d/addition.rst +80 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/bounds.rst +16 -16
- splinekit-0.2.10/docs/demos/spline1d/calculus.rst +133 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/constructors.rst +14 -5
- splinekit-0.2.10/docs/demos/spline1d/conv_corr.rst +148 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/evaluation.rst +5 -5
- splinekit-0.2.10/docs/demos/spline1d/extrema.rst +23 -0
- splinekit-0.2.10/docs/demos/spline1d/fourier.rst +143 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/index.rst +8 -0
- splinekit-0.2.10/docs/demos/spline1d/multires.rst +247 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/plot.rst +1 -1
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/polynomials.rst +13 -13
- splinekit-0.2.10/docs/demos/spline1d/projection.rst +39 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/random1d.rst +1 -1
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/random2d.rst +1 -1
- splinekit-0.2.10/docs/demos/spline1d/signum.rst +78 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/stats.rst +1 -1
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/index.rst +1 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/01_periodic_spline_1d.rst +1 -1
- {splinekit-0.2.7/dev/Accelerated → splinekit-0.2.10}/pyproject.toml +1 -1
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/periodic_spline_1d.py +686 -61
- {splinekit-0.2.7 → splinekit-0.2.10}/tests/test_periodic_spline_1d.py +240 -0
- splinekit-0.2.7/.virtual_documents/dev/Jupyter/spline_plot.ipynb +0 -323
- splinekit-0.2.7/_output/api/translations/all.json +0 -9
- splinekit-0.2.7/_output/api/translations/en.json +0 -4
- splinekit-0.2.7/_output/api/workspaces/all.json +0 -1
- splinekit-0.2.7/_output/bootstrap.js +0 -180
- splinekit-0.2.7/_output/config-utils.js +0 -267
- splinekit-0.2.7/_output/consoles/favicon.ico +0 -0
- splinekit-0.2.7/_output/consoles/index.html +0 -126
- splinekit-0.2.7/_output/consoles/jupyter-lite.ipynb +0 -55
- splinekit-0.2.7/_output/consoles/jupyter-lite.json +0 -11
- splinekit-0.2.7/_output/consoles/package.json +0 -350
- splinekit-0.2.7/_output/doc/tree/index.html +0 -14
- splinekit-0.2.7/_output/doc/workspaces/index.html +0 -28
- splinekit-0.2.7/_output/edit/favicon.ico +0 -0
- splinekit-0.2.7/_output/edit/index.html +0 -126
- splinekit-0.2.7/_output/edit/jupyter-lite.ipynb +0 -55
- splinekit-0.2.7/_output/edit/jupyter-lite.json +0 -11
- splinekit-0.2.7/_output/edit/package.json +0 -366
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/install.json +0 -5
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/package.json +0 -96
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/package.json.orig +0 -92
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/plugin.json +0 -57
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/static/48.0570848d2b31a5354b7d.js +0 -2
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/static/48.0570848d2b31a5354b7d.js.LICENSE.txt +0 -8
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/static/509.d51a8122d1920ac82323.js +0 -1
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/static/720.094c38d70b1dec0ceea7.js +0 -1
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/static/remoteEntry.94495aac41d2fef6ad41.js +0 -1
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/static/style.js +0 -4
- splinekit-0.2.7/_output/extensions/jupyterlab-jupytext/static/third-party-licenses.json +0 -28
- splinekit-0.2.7/_output/extensions/jupyterlab_pygments/install.json +0 -5
- splinekit-0.2.7/_output/extensions/jupyterlab_pygments/package.json +0 -205
- splinekit-0.2.7/_output/extensions/jupyterlab_pygments/static/568.1e2faa2ba0bbe59c4780.js +0 -1
- splinekit-0.2.7/_output/extensions/jupyterlab_pygments/static/747.67662283a5707eeb4d4c.js +0 -1
- splinekit-0.2.7/_output/extensions/jupyterlab_pygments/static/remoteEntry.5cbb9d2323598fbda535.js +0 -1
- splinekit-0.2.7/_output/extensions/jupyterlab_pygments/static/style.js +0 -4
- splinekit-0.2.7/_output/extensions/jupyterlab_pygments/static/third-party-licenses.json +0 -16
- splinekit-0.2.7/_output/icon-120x120.png +0 -0
- splinekit-0.2.7/_output/icon-512x512.png +0 -0
- splinekit-0.2.7/_output/index.html +0 -68
- splinekit-0.2.7/_output/jupyter-lite.ipynb +0 -55
- splinekit-0.2.7/_output/jupyter-lite.json +0 -400
- splinekit-0.2.7/_output/jupyterlite.schema.v0.json +0 -325
- splinekit-0.2.7/_output/lab/favicon.ico +0 -0
- splinekit-0.2.7/_output/lab/index.html +0 -126
- splinekit-0.2.7/_output/lab/jupyter-lite.ipynb +0 -55
- splinekit-0.2.7/_output/lab/jupyter-lite.json +0 -10
- splinekit-0.2.7/_output/lab/package.json +0 -362
- splinekit-0.2.7/_output/lab/tree/index.html +0 -14
- splinekit-0.2.7/_output/lab/workspaces/index.html +0 -28
- splinekit-0.2.7/_output/manifest.webmanifest +0 -32
- splinekit-0.2.7/_output/notebooks/favicon.ico +0 -0
- splinekit-0.2.7/_output/notebooks/index.html +0 -126
- splinekit-0.2.7/_output/notebooks/jupyter-lite.ipynb +0 -55
- splinekit-0.2.7/_output/notebooks/jupyter-lite.json +0 -11
- splinekit-0.2.7/_output/notebooks/package.json +0 -375
- splinekit-0.2.7/_output/package.json +0 -44
- splinekit-0.2.7/_output/repl/index.html +0 -126
- splinekit-0.2.7/_output/repl/jupyter-lite.ipynb +0 -55
- splinekit-0.2.7/_output/repl/jupyter-lite.json +0 -7
- splinekit-0.2.7/_output/repl/package.json +0 -289
- splinekit-0.2.7/_output/service-worker.js +0 -1
- splinekit-0.2.7/_output/static/favicons/favicon-busy-1.ico +0 -0
- splinekit-0.2.7/_output/static/favicons/favicon-busy-2.ico +0 -0
- splinekit-0.2.7/_output/static/favicons/favicon-busy-3.ico +0 -0
- splinekit-0.2.7/_output/static/favicons/favicon-file.ico +0 -0
- splinekit-0.2.7/_output/static/favicons/favicon-notebook.ico +0 -0
- splinekit-0.2.7/_output/static/favicons/favicon-terminal.ico +0 -0
- splinekit-0.2.7/_output/static/favicons/favicon.ico +0 -0
- splinekit-0.2.7/_output/tree/favicon.ico +0 -0
- splinekit-0.2.7/_output/tree/index.html +0 -115
- splinekit-0.2.7/_output/tree/jupyter-lite.ipynb +0 -55
- splinekit-0.2.7/_output/tree/jupyter-lite.json +0 -10
- splinekit-0.2.7/_output/tree/package.json +0 -333
- {splinekit-0.2.7 → splinekit-0.2.10}/.github/workflows/deploy-docs.yml +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/.github/workflows/release.yml +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/.github/workflows/test.yml +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/.jupyterlite.doit.db +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/CMakeLists.txt +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/LICENSE +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/ansi_c/spline_padding/src/spline_padding.c +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/ansi_c/spline_padding/src/spline_padding.h +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_cmake/CMakeLists.txt +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_cmake/spline_padding.c +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_cmake/spline_padding.h +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_xcode/libspline_padding.dylib +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_xcode/spline_padding.c +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_xcode/spline_padding.h +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.pbxproj +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.xcworkspace/xcuserdata/pthevena.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/xcuserdata/pthevena.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Accelerated/dispatch.sh +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Accelerated/release.yml +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Accelerated/spline_padding.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/bases/bspline_cardinal.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/bases/bspline_dual.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/bases/bspline_dual_property.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/bases/bspline_member.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/bases/bspline_ortho.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/bases/bspline_ortho_property.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/bases/bspline_sinc.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/hello/bspline_hello.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/hello/bspline_hello_grad.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/hello/bspline_hello_integral.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/inverse/bspline_inv.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/inverse/bspline_periodic_inv.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/m-scale/bspline_m_scale.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/mathfunc/bspline_gauss_exo.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/mathfunc/bspline_trigo_exo.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/mathfunc/bspline_vs_cos.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/mathfunc/bspline_vs_erf.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/mathfunc/bspline_vs_exp.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/mathfunc/bspline_vs_sin.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/members/bspline_member.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/members/bspline_member_diff.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/members/bspline_member_integral.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/poles/bspline_annihilate.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/poles/bspline_poles.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/poly/bspline_convolve_mono.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/poly/bspline_partition_mono.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/poly/bspline_spline_poly.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/stability/bspline_numeric_stability.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/vs-pi/bspline_vs_pi_as_sum.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/bspline/vs-pi/bspline_vs_pi_at0.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/padding/change-basis/padding_bases.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/padding/padding/padding_data.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/padding/padding/padding_speed.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/bounds/spline_bounds.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/construct/spline_approximation.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/construct/spline_interpolation.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/eval/spline_at_array.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/eval/spline_at_scalar.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/eval/spline_evaluation_speed.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/ops/spline_simple_ops.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/plot/spline_plot.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/poly/spline_polynomials.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/random-1d/spline_random_1d.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/random-2d/spline_random_2d.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Jupyter/periodic-spline/stats/spline_stats.ipynb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/PurePython/dispatch.sh +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/PurePython/release.yml +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/PurePython/spline_padding.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/Bspline Poles.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/IntervalChecks.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/PeriodicSplinesChecks.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/SplinePaddingChecks.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/Test BSplines.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/Test PeriodicNonuniformPiecewise.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/Test SplinePadding.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/Test SplineUtilities.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/Verify doc.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/dev/Wolfram/rescued Test SplinePadding.nb +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/.jupyterlite.doit.db +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/_static/custom.css +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/bases/01_bases.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/bases/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/bases/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/bsplines/01_bsplines.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/bsplines/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/bsplines/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/conf.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/bspline_members.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/bspline_numeric_stability.ipynb.gz +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/hello_bspline.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/bspline/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/padding/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/padding/padding_speed.ipynb.gz +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/simple_ops.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/demos/spline1d/spline_evaluation_speed.ipynb.gz +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/environment.yml +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/glossary/glossary-numbers.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/glossary/glossary-polynomials.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/glossary/glossary-splines.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/glossary/glossary-terminology.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/glossary/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/installation/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/bounded/01_bounded.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/bounded/02_open.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/bounded/03_open_closed.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/bounded/04_closed.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/bounded/05_closed_open.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/bounded/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/bounded/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/degenerate/01_degenerate.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/degenerate/02_singleton.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/degenerate/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/degenerate/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/half_bounded/01_half_bounded.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/half_bounded/02_above.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/half_bounded/03_not_below.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/half_bounded/04_not_above.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/half_bounded/05_below.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/half_bounded/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/half_bounded/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/interval/01_interval.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/interval/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/interval/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/universal/01_universal.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/universal/02_empty.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/universal/03_rr.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/universal/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/interval/universal/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_nonuniform_piecewise/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_nonuniform_piecewise/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m00.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m01.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m02.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m03.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m04.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m05.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m06.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m07.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m08.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m09.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m10.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m11.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m12.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m13.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m14.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m15.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m16.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m17.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m18.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m19.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m20.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m21.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m22.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m23.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/m24.png +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/matplotlib-color.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/matplotlib-linestyle.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/matplotlib-marker.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/periodic_spline_1d/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/spline_padding/01_spline_padding.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/spline_padding/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/spline_padding/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/spline_utilities/01_spline_utilities.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/spline_utilities/index.rst +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/docs/spline_utilities/noxfile.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/__init__.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/bases.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/bsplines.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/__init__.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/_known_intervals.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/above.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/below.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/bounded.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/closed.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/closed_open.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/degenerate.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/empty.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/half_bounded.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/interval.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/mypy.ini +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/not_above.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/not_below.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/open.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/open_closed.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/rr.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/singleton.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/interval/universal.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/mypy.ini +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/periodic_nonuniform_piecewise.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/spline_padding.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/src/splinekit/spline_utilities.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/temp/bspline_stability.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/tests/test_bsplines.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/tests/test_periodic_nonuniform_piecewise.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/tests/test_spline_padding.py +0 -0
- {splinekit-0.2.7 → splinekit-0.2.10}/tests/test_spline_utilities.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: splinekit
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.10
|
|
4
4
|
Summary: A set of functions and classes to handle periodic 1D polynomial splines
|
|
5
|
-
Author-Email:
|
|
6
|
-
Maintainer-Email:
|
|
5
|
+
Author-Email: Philippe Thévenaz <philippe.thevenaz@icloud.com>
|
|
6
|
+
Maintainer-Email: Philippe Thévenaz <philippe.thevenaz@icloud.com>
|
|
7
7
|
License-Expression: MIT
|
|
8
8
|
License-File: LICENSE
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -51,7 +51,7 @@ Description-Content-Type: text/markdown
|
|
|
51
51
|
|
|
52
52
|
<!-- splinekit/README.md -->
|
|
53
53
|
|
|
54
|
-
# Version 0.2.
|
|
54
|
+
# Version 0.2.10
|
|
55
55
|
|
|
56
56
|
# splinekit: Spline Operations
|
|
57
57
|
`splinekit` is a Python-based open-source software library aimed at the manipulation of one-dimensional periodic splines.
|
|
@@ -116,7 +116,7 @@ pip install -e .[dev]
|
|
|
116
116
|
|
|
117
117
|
## Release Notes
|
|
118
118
|
|
|
119
|
-
### 0.1
|
|
119
|
+
### 0.1.*
|
|
120
120
|
First stable version. Pure Python.
|
|
121
121
|
|
|
122
122
|
### 0.2.1
|
|
@@ -133,3 +133,9 @@ Some demos added. Documentation minor updates.
|
|
|
133
133
|
|
|
134
134
|
### 0.2.7
|
|
135
135
|
Upgraded to jupyterlite 0.7
|
|
136
|
+
|
|
137
|
+
### 0.2.8
|
|
138
|
+
Some demos added.
|
|
139
|
+
|
|
140
|
+
### 0.2.9 — 0.2.10
|
|
141
|
+
All demos added. Operators. Faster execution.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!-- splinekit/README.md -->
|
|
2
2
|
|
|
3
|
-
# Version 0.2.
|
|
3
|
+
# Version 0.2.10
|
|
4
4
|
|
|
5
5
|
# splinekit: Spline Operations
|
|
6
6
|
`splinekit` is a Python-based open-source software library aimed at the manipulation of one-dimensional periodic splines.
|
|
@@ -65,7 +65,7 @@ pip install -e .[dev]
|
|
|
65
65
|
|
|
66
66
|
## Release Notes
|
|
67
67
|
|
|
68
|
-
### 0.1
|
|
68
|
+
### 0.1.*
|
|
69
69
|
First stable version. Pure Python.
|
|
70
70
|
|
|
71
71
|
### 0.2.1
|
|
@@ -82,3 +82,9 @@ Some demos added. Documentation minor updates.
|
|
|
82
82
|
|
|
83
83
|
### 0.2.7
|
|
84
84
|
Upgraded to jupyterlite 0.7
|
|
85
|
+
|
|
86
|
+
### 0.2.8
|
|
87
|
+
Some demos added.
|
|
88
|
+
|
|
89
|
+
### 0.2.9 — 0.2.10
|
|
90
|
+
All demos added. Operators. Faster execution.
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "006cebf8-f66b-48aa-9f8b-0840d37ca07d",
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"source": [
|
|
8
|
+
"# Addition of Splines of Identical Period\n",
|
|
9
|
+
"We display the augend in the <span style=\"color:#1f77b4\">**azure**</span> color; it is the realization of a random periodic polynomial spline of a specified degree $n_{1}$ and delay $\\delta x_{1}.$ For some other (independent) degree $n_{2}$ and delay $\\delta x_{2},$ we display the addend in the <span style=\"color:#17becf\">**aqua**</span> color; it is another realization of a random periodic polynomial spline. We then plot as a thick curve in the <span style=\"color:#8c564b\">**sepia**</span> color the spline of specified degree $n$ and delay $\\delta x$ that best approximates the addition of the addend to the augend. The augend, the addend, and the approximation of their sum have the same period, but may not share the location of their knots."
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"cell_type": "code",
|
|
14
|
+
"execution_count": null,
|
|
15
|
+
"id": "b3185aea-65df-4ca8-8011-efe4d523876c",
|
|
16
|
+
"metadata": {},
|
|
17
|
+
"outputs": [],
|
|
18
|
+
"source": [
|
|
19
|
+
"# Load the required libraries\n",
|
|
20
|
+
"import ipywidgets as widgets\n",
|
|
21
|
+
"import matplotlib.pyplot as plt\n",
|
|
22
|
+
"import numpy as np\n",
|
|
23
|
+
"\n",
|
|
24
|
+
"import splinekit as sk # This library\n",
|
|
25
|
+
"\n",
|
|
26
|
+
"# Setup\n",
|
|
27
|
+
"max_period = 15 # Maximal period\n",
|
|
28
|
+
"max_degree = 9 # Maximal spline degree\n",
|
|
29
|
+
"max_delay = 3.0 # Maximal absolute delay\n",
|
|
30
|
+
"\n",
|
|
31
|
+
"# Initialize the generator of random numbers\n",
|
|
32
|
+
"rng = np.random.default_rng()\n",
|
|
33
|
+
"\n",
|
|
34
|
+
"# Initial random periodic splines\n",
|
|
35
|
+
"f1 = sk.PeriodicSpline1D.from_spline_coeff(rng.standard_normal(6), degree = 2)\n",
|
|
36
|
+
"f2 = sk.PeriodicSpline1D.from_spline_coeff(rng.standard_normal(6), degree = 3)\n",
|
|
37
|
+
"\n",
|
|
38
|
+
"# Plot\n",
|
|
39
|
+
"def update_plot (\n",
|
|
40
|
+
" period = 6,\n",
|
|
41
|
+
" degree_1 = 2,\n",
|
|
42
|
+
" delay_1 = 0.0,\n",
|
|
43
|
+
" degree_2 = 3,\n",
|
|
44
|
+
" delay_2 = 0.0,\n",
|
|
45
|
+
" degree = 1,\n",
|
|
46
|
+
" delay = 0.0\n",
|
|
47
|
+
"):\n",
|
|
48
|
+
" global f1\n",
|
|
49
|
+
" global f2\n",
|
|
50
|
+
"\n",
|
|
51
|
+
" # Update of the splines\n",
|
|
52
|
+
" if f1.period != period:\n",
|
|
53
|
+
" f1 = sk.PeriodicSpline1D.from_spline_coeff(\n",
|
|
54
|
+
" rng.standard_normal(period),\n",
|
|
55
|
+
" degree = f1.degree\n",
|
|
56
|
+
" )\n",
|
|
57
|
+
" f1.degree = degree_1\n",
|
|
58
|
+
" f1.delay = delay_1\n",
|
|
59
|
+
" if f2.period != period:\n",
|
|
60
|
+
" f2 = sk.PeriodicSpline1D.from_spline_coeff(\n",
|
|
61
|
+
" rng.standard_normal(period),\n",
|
|
62
|
+
" degree = f2.degree\n",
|
|
63
|
+
" )\n",
|
|
64
|
+
" f2.degree = degree_2\n",
|
|
65
|
+
" f2.delay = delay_2\n",
|
|
66
|
+
"\n",
|
|
67
|
+
" # Addition\n",
|
|
68
|
+
" f = sk.PeriodicSpline1D.add_projected(f1, f2, degree = degree, delay = delay)\n",
|
|
69
|
+
"\n",
|
|
70
|
+
" # Dynamic range\n",
|
|
71
|
+
" image = {f1.image(), f2.image(), f.image()}\n",
|
|
72
|
+
" plotrange = sk.interval.Interval.enclosure(image)\n",
|
|
73
|
+
" plotrange = sk.interval.Closed((\n",
|
|
74
|
+
" plotrange.midpoint - 0.55 * plotrange.diameter,\n",
|
|
75
|
+
" plotrange.midpoint + 0.55 * plotrange.diameter\n",
|
|
76
|
+
" ))\n",
|
|
77
|
+
"\n",
|
|
78
|
+
" # Plots\n",
|
|
79
|
+
" subplot = plt.subplots()\n",
|
|
80
|
+
" # Augend\n",
|
|
81
|
+
" f1.plot(subplot, plotrange = plotrange, plotpoints = 200 + 1)\n",
|
|
82
|
+
" # Addend\n",
|
|
83
|
+
" f2.plot(\n",
|
|
84
|
+
" subplot,\n",
|
|
85
|
+
" plotrange = plotrange,\n",
|
|
86
|
+
" plotpoints = 200 + 1,\n",
|
|
87
|
+
" curve_fmt = \"-C9\",\n",
|
|
88
|
+
" curve_markerfmt = \"oC9\",\n",
|
|
89
|
+
" )\n",
|
|
90
|
+
" # Sum\n",
|
|
91
|
+
" f.plot(\n",
|
|
92
|
+
" subplot,\n",
|
|
93
|
+
" plotrange = plotrange,\n",
|
|
94
|
+
" plotpoints = 200 + 1,\n",
|
|
95
|
+
" curve_fmt = \"-C5\",\n",
|
|
96
|
+
" curve_markerfmt = \"oC5\",\n",
|
|
97
|
+
" curve_lw = 2.0\n",
|
|
98
|
+
" )\n",
|
|
99
|
+
"\n",
|
|
100
|
+
" # Final display\n",
|
|
101
|
+
" plt.show()\n",
|
|
102
|
+
"\n",
|
|
103
|
+
"widgets.interactive(\n",
|
|
104
|
+
" update_plot,\n",
|
|
105
|
+
" period = (1, max_period),\n",
|
|
106
|
+
" degree_1 = (0, max_degree),\n",
|
|
107
|
+
" delay_1 = (-max_delay, max_delay),\n",
|
|
108
|
+
" degree_2 = (0, max_degree),\n",
|
|
109
|
+
" delay_2 = (-max_delay, max_delay),\n",
|
|
110
|
+
" degree = (0, max_degree),\n",
|
|
111
|
+
" delay = (-max_delay, max_delay)\n",
|
|
112
|
+
")\n"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"cell_type": "code",
|
|
117
|
+
"execution_count": null,
|
|
118
|
+
"id": "b5490a8b-70d3-4b94-a4ad-ea140f8cd9de",
|
|
119
|
+
"metadata": {},
|
|
120
|
+
"outputs": [],
|
|
121
|
+
"source": [
|
|
122
|
+
"\n",
|
|
123
|
+
"\n",
|
|
124
|
+
"\n",
|
|
125
|
+
"\n",
|
|
126
|
+
"\n",
|
|
127
|
+
"\n",
|
|
128
|
+
"\n",
|
|
129
|
+
"\n",
|
|
130
|
+
"\n",
|
|
131
|
+
"\n",
|
|
132
|
+
"\n",
|
|
133
|
+
"\n",
|
|
134
|
+
"\n",
|
|
135
|
+
"\n",
|
|
136
|
+
"\n",
|
|
137
|
+
"\n",
|
|
138
|
+
"\n",
|
|
139
|
+
"\n",
|
|
140
|
+
"\n",
|
|
141
|
+
"\n"
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"metadata": {
|
|
146
|
+
"kernelspec": {
|
|
147
|
+
"display_name": "Python 3 (ipykernel)",
|
|
148
|
+
"language": "python",
|
|
149
|
+
"name": "python3"
|
|
150
|
+
},
|
|
151
|
+
"language_info": {
|
|
152
|
+
"codemirror_mode": {
|
|
153
|
+
"name": "ipython",
|
|
154
|
+
"version": 3
|
|
155
|
+
},
|
|
156
|
+
"file_extension": ".py",
|
|
157
|
+
"mimetype": "text/x-python",
|
|
158
|
+
"name": "python",
|
|
159
|
+
"nbconvert_exporter": "python",
|
|
160
|
+
"pygments_lexer": "ipython3",
|
|
161
|
+
"version": "3.12.6"
|
|
162
|
+
},
|
|
163
|
+
"widgets": {
|
|
164
|
+
"application/vnd.jupyter.widget-state+json": {
|
|
165
|
+
"state": {},
|
|
166
|
+
"version_major": 2,
|
|
167
|
+
"version_minor": 0
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"nbformat": 4,
|
|
172
|
+
"nbformat_minor": 5
|
|
173
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "006cebf8-f66b-48aa-9f8b-0840d37ca07d",
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"source": [
|
|
8
|
+
"# Addition of Two Compatible Splines\n",
|
|
9
|
+
"We display the augend in the <span style=\"color:#1f77b4\">**azure**</span> color; it is the realization of a random periodic polynomial spline of a specified period, degree, and delay. For the same period, degree, and delay, we display the addend in the <span style=\"color:#17becf\">**aqua**</span> color; it is another realization of a random periodic polynomial spline. We then plot as a thick curve in the <span style=\"color:#8c564b\">**sepia**</span> color the sum resulting from the addition of the addend to the augend."
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"cell_type": "code",
|
|
14
|
+
"execution_count": null,
|
|
15
|
+
"id": "b3185aea-65df-4ca8-8011-efe4d523876c",
|
|
16
|
+
"metadata": {},
|
|
17
|
+
"outputs": [],
|
|
18
|
+
"source": [
|
|
19
|
+
"# Load the required libraries\n",
|
|
20
|
+
"import ipywidgets as widgets\n",
|
|
21
|
+
"import matplotlib.pyplot as plt\n",
|
|
22
|
+
"import numpy as np\n",
|
|
23
|
+
"\n",
|
|
24
|
+
"import splinekit as sk # This library\n",
|
|
25
|
+
"\n",
|
|
26
|
+
"# Setup\n",
|
|
27
|
+
"max_period = 15 # Maximal period\n",
|
|
28
|
+
"max_degree = 9 # Maximal spline degree\n",
|
|
29
|
+
"max_delay = 3.0 # Maximal absolute delay\n",
|
|
30
|
+
"\n",
|
|
31
|
+
"# Initialize the generator of random numbers\n",
|
|
32
|
+
"rng = np.random.default_rng()\n",
|
|
33
|
+
"\n",
|
|
34
|
+
"# Initial random periodic cubic splines\n",
|
|
35
|
+
"f1 = sk.PeriodicSpline1D.from_spline_coeff(rng.standard_normal(6), degree = 3)\n",
|
|
36
|
+
"f2 = sk.PeriodicSpline1D.from_spline_coeff(rng.standard_normal(6), degree = 3)\n",
|
|
37
|
+
"\n",
|
|
38
|
+
"# Plot\n",
|
|
39
|
+
"def update_plot (\n",
|
|
40
|
+
" period = 6,\n",
|
|
41
|
+
" degree = 3,\n",
|
|
42
|
+
" delay = 0.0\n",
|
|
43
|
+
"):\n",
|
|
44
|
+
" global f1\n",
|
|
45
|
+
" global f2\n",
|
|
46
|
+
"\n",
|
|
47
|
+
" # Update of the splines\n",
|
|
48
|
+
" if f1.period != period:\n",
|
|
49
|
+
" f1 = sk.PeriodicSpline1D.from_spline_coeff(\n",
|
|
50
|
+
" rng.standard_normal(period),\n",
|
|
51
|
+
" degree = f1.degree\n",
|
|
52
|
+
" )\n",
|
|
53
|
+
" f1.degree = degree\n",
|
|
54
|
+
" f1.delay = delay\n",
|
|
55
|
+
" if f2.period != period:\n",
|
|
56
|
+
" f2 = sk.PeriodicSpline1D.from_spline_coeff(\n",
|
|
57
|
+
" rng.standard_normal(period),\n",
|
|
58
|
+
" degree = f2.degree\n",
|
|
59
|
+
" )\n",
|
|
60
|
+
" f2.degree = degree\n",
|
|
61
|
+
" f2.delay = delay\n",
|
|
62
|
+
"\n",
|
|
63
|
+
" # Addition\n",
|
|
64
|
+
" f = sk.PeriodicSpline1D.add(f1, f2)\n",
|
|
65
|
+
"\n",
|
|
66
|
+
" # Dynamic range\n",
|
|
67
|
+
" image = {f1.image(), f2.image(), f.image()}\n",
|
|
68
|
+
" plotrange = sk.interval.Interval.enclosure(image)\n",
|
|
69
|
+
" plotrange = sk.interval.Closed((\n",
|
|
70
|
+
" plotrange.midpoint - 0.55 * plotrange.diameter,\n",
|
|
71
|
+
" plotrange.midpoint + 0.55 * plotrange.diameter\n",
|
|
72
|
+
" ))\n",
|
|
73
|
+
"\n",
|
|
74
|
+
" # Plots\n",
|
|
75
|
+
" subplot = plt.subplots()\n",
|
|
76
|
+
" # Augend\n",
|
|
77
|
+
" f1.plot(subplot, plotrange = plotrange, plotpoints = 200 + 1)\n",
|
|
78
|
+
" # Addend\n",
|
|
79
|
+
" f2.plot(\n",
|
|
80
|
+
" subplot,\n",
|
|
81
|
+
" plotrange = plotrange,\n",
|
|
82
|
+
" plotpoints = 200 + 1,\n",
|
|
83
|
+
" curve_fmt = \"-C9\",\n",
|
|
84
|
+
" curve_markerfmt = \"oC9\",\n",
|
|
85
|
+
" )\n",
|
|
86
|
+
" # Sum\n",
|
|
87
|
+
" f.plot(\n",
|
|
88
|
+
" subplot,\n",
|
|
89
|
+
" plotrange = plotrange,\n",
|
|
90
|
+
" plotpoints = 200 + 1,\n",
|
|
91
|
+
" curve_fmt = \"-C5\",\n",
|
|
92
|
+
" curve_markerfmt = \"oC5\",\n",
|
|
93
|
+
" curve_lw = 2.0\n",
|
|
94
|
+
" )\n",
|
|
95
|
+
"\n",
|
|
96
|
+
" # Final display\n",
|
|
97
|
+
" plt.show()\n",
|
|
98
|
+
"\n",
|
|
99
|
+
"widgets.interactive(\n",
|
|
100
|
+
" update_plot,\n",
|
|
101
|
+
" period = (1, max_period),\n",
|
|
102
|
+
" degree = (0, max_degree),\n",
|
|
103
|
+
" delay = (-max_delay, max_delay)\n",
|
|
104
|
+
")\n"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"cell_type": "code",
|
|
109
|
+
"execution_count": null,
|
|
110
|
+
"id": "b5490a8b-70d3-4b94-a4ad-ea140f8cd9de",
|
|
111
|
+
"metadata": {},
|
|
112
|
+
"outputs": [],
|
|
113
|
+
"source": [
|
|
114
|
+
"\n",
|
|
115
|
+
"\n",
|
|
116
|
+
"\n",
|
|
117
|
+
"\n",
|
|
118
|
+
"\n",
|
|
119
|
+
"\n",
|
|
120
|
+
"\n",
|
|
121
|
+
"\n",
|
|
122
|
+
"\n",
|
|
123
|
+
"\n",
|
|
124
|
+
"\n",
|
|
125
|
+
"\n",
|
|
126
|
+
"\n",
|
|
127
|
+
"\n",
|
|
128
|
+
"\n",
|
|
129
|
+
"\n",
|
|
130
|
+
"\n",
|
|
131
|
+
"\n",
|
|
132
|
+
"\n",
|
|
133
|
+
"\n"
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"metadata": {
|
|
138
|
+
"kernelspec": {
|
|
139
|
+
"display_name": "Python 3 (ipykernel)",
|
|
140
|
+
"language": "python",
|
|
141
|
+
"name": "python3"
|
|
142
|
+
},
|
|
143
|
+
"language_info": {
|
|
144
|
+
"codemirror_mode": {
|
|
145
|
+
"name": "ipython",
|
|
146
|
+
"version": 3
|
|
147
|
+
},
|
|
148
|
+
"file_extension": ".py",
|
|
149
|
+
"mimetype": "text/x-python",
|
|
150
|
+
"name": "python",
|
|
151
|
+
"nbconvert_exporter": "python",
|
|
152
|
+
"pygments_lexer": "ipython3",
|
|
153
|
+
"version": "3.12.6"
|
|
154
|
+
},
|
|
155
|
+
"widgets": {
|
|
156
|
+
"application/vnd.jupyter.widget-state+json": {
|
|
157
|
+
"state": {},
|
|
158
|
+
"version_major": 2,
|
|
159
|
+
"version_minor": 0
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"nbformat": 4,
|
|
164
|
+
"nbformat_minor": 5
|
|
165
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "02240a05-3526-4530-ae12-d9522465b594",
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"source": [
|
|
8
|
+
"# Anti-Gradient of Periodic Splines\n",
|
|
9
|
+
"The spline $f$ whose anti-gradient is sought is shown as a <span style=\"color:#c20078\">**fuchsia**</span> curve, with data samples at the integers represented with circles and stem lines. The sample at the origin, as well as its periodized replicates, is indicated by a red circle and stem line. The small black disks depict the knots of the spline. The anti-gradient is shown in the <span style=\"color:#1f77b4\">**azure**</span> color, while the gradient of the anti-gradient is shown in <span style=\"color:#2ca02c\">**green**</span>. Up to some value offset that depends on $E\\{f\\},$ the green and the fuchsia curves are identical.\n",
|
|
10
|
+
"\n",
|
|
11
|
+
"It is instructive to realize that the knots of all three splines share their abscissa. This indicates that the delay associated to the anti-gradient is a half-integer away from the delay associated to the spline $f$ because the degree of one of these two splines is even when the degree of the other one is odd, and reciprocally."
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"cell_type": "code",
|
|
16
|
+
"execution_count": null,
|
|
17
|
+
"id": "230ca8a8-c806-4207-b416-9954d55f1377",
|
|
18
|
+
"metadata": {},
|
|
19
|
+
"outputs": [],
|
|
20
|
+
"source": [
|
|
21
|
+
"# Load the required libraries\n",
|
|
22
|
+
"import ipywidgets as widgets\n",
|
|
23
|
+
"import matplotlib.pyplot as plt\n",
|
|
24
|
+
"import numpy as np\n",
|
|
25
|
+
"\n",
|
|
26
|
+
"import splinekit as sk # This library\n",
|
|
27
|
+
"\n",
|
|
28
|
+
"# Setup\n",
|
|
29
|
+
"max_period = 15 # Maximal period\n",
|
|
30
|
+
"max_degree = 5 # Maximal spline degree\n",
|
|
31
|
+
"max_delay = 8.0 # Maximal absolute delay\n",
|
|
32
|
+
"\n",
|
|
33
|
+
"# Initialize the generator of random numbers\n",
|
|
34
|
+
"rng = np.random.default_rng()\n",
|
|
35
|
+
"\n",
|
|
36
|
+
"# Initial random periodic cubic splines with normal Gaussian coefficients\n",
|
|
37
|
+
"f0 = sk.PeriodicSpline1D.from_spline_coeff(rng.standard_normal(6), degree = 3)\n",
|
|
38
|
+
"f0 = f0.plus(rng.choice([-1.0, 1.0]) * rng.uniform(0.05, 0.15) - f0.mean())\n",
|
|
39
|
+
"\n",
|
|
40
|
+
"# Plot\n",
|
|
41
|
+
"def update_plot (\n",
|
|
42
|
+
" period = 6,\n",
|
|
43
|
+
" degree = 1,\n",
|
|
44
|
+
" delay = 0.0\n",
|
|
45
|
+
"):\n",
|
|
46
|
+
" global f0\n",
|
|
47
|
+
"\n",
|
|
48
|
+
" # Update of the spline\n",
|
|
49
|
+
" if f0.period != period:\n",
|
|
50
|
+
" f0 = sk.PeriodicSpline1D.from_spline_coeff(\n",
|
|
51
|
+
" rng.standard_normal(period),\n",
|
|
52
|
+
" degree = f0.degree\n",
|
|
53
|
+
" )\n",
|
|
54
|
+
" # Slight departure from zero-mean\n",
|
|
55
|
+
" f0 = f0.plus(rng.choice([-1.0, 1.0]) * rng.uniform(0.05, 0.15) - f0.mean())\n",
|
|
56
|
+
" f0.degree = degree\n",
|
|
57
|
+
" f0.delay = delay\n",
|
|
58
|
+
"\n",
|
|
59
|
+
" # Anti-gradient\n",
|
|
60
|
+
" g0 = f0.anti_grad()\n",
|
|
61
|
+
" # Gradient of the anti-gradient\n",
|
|
62
|
+
" f = g0.gradient()\n",
|
|
63
|
+
"\n",
|
|
64
|
+
" # Dynamic range\n",
|
|
65
|
+
" image = {f0.image(), g0.image(), f.image()}\n",
|
|
66
|
+
" plotrange = sk.interval.Interval.enclosure(image)\n",
|
|
67
|
+
" plotrange = sk.interval.Closed((\n",
|
|
68
|
+
" plotrange.midpoint - 0.55 * plotrange.diameter,\n",
|
|
69
|
+
" plotrange.midpoint + 0.55 * plotrange.diameter\n",
|
|
70
|
+
" ))\n",
|
|
71
|
+
"\n",
|
|
72
|
+
" # Plot of the spline\n",
|
|
73
|
+
" subplot = plt.subplots()\n",
|
|
74
|
+
" f0.plot(subplot, plotrange = plotrange, plotpoints = 200 + 1, curve_fmt = \"-m\")\n",
|
|
75
|
+
" g0.plot(subplot, plotrange = plotrange, plotpoints = 200 + 1, curve_fmt = \"-C0\")\n",
|
|
76
|
+
" f.plot(subplot, plotrange = plotrange, plotpoints = 200 + 1, curve_fmt = \"-C2\")\n",
|
|
77
|
+
" plt.show()\n",
|
|
78
|
+
"\n",
|
|
79
|
+
"# Interaction\n",
|
|
80
|
+
"widgets.interactive(\n",
|
|
81
|
+
" update_plot,\n",
|
|
82
|
+
" period = (1, max_period),\n",
|
|
83
|
+
" degree = (0, max_degree),\n",
|
|
84
|
+
" delay = (-max_delay, max_delay)\n",
|
|
85
|
+
")\n"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"cell_type": "code",
|
|
90
|
+
"execution_count": null,
|
|
91
|
+
"id": "c719d9b2-273a-431b-9812-11db4edcb69c",
|
|
92
|
+
"metadata": {},
|
|
93
|
+
"outputs": [],
|
|
94
|
+
"source": [
|
|
95
|
+
"\n",
|
|
96
|
+
"\n",
|
|
97
|
+
"\n",
|
|
98
|
+
"\n",
|
|
99
|
+
"\n",
|
|
100
|
+
"\n",
|
|
101
|
+
"\n",
|
|
102
|
+
"\n",
|
|
103
|
+
"\n",
|
|
104
|
+
"\n",
|
|
105
|
+
"\n",
|
|
106
|
+
"\n",
|
|
107
|
+
"\n",
|
|
108
|
+
"\n",
|
|
109
|
+
"\n",
|
|
110
|
+
"\n",
|
|
111
|
+
"\n",
|
|
112
|
+
"\n",
|
|
113
|
+
"\n",
|
|
114
|
+
"\n"
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"metadata": {
|
|
119
|
+
"kernelspec": {
|
|
120
|
+
"display_name": "Python 3 (ipykernel)",
|
|
121
|
+
"language": "python",
|
|
122
|
+
"name": "python3"
|
|
123
|
+
},
|
|
124
|
+
"language_info": {
|
|
125
|
+
"codemirror_mode": {
|
|
126
|
+
"name": "ipython",
|
|
127
|
+
"version": 3
|
|
128
|
+
},
|
|
129
|
+
"file_extension": ".py",
|
|
130
|
+
"mimetype": "text/x-python",
|
|
131
|
+
"name": "python",
|
|
132
|
+
"nbconvert_exporter": "python",
|
|
133
|
+
"pygments_lexer": "ipython3",
|
|
134
|
+
"version": "3.12.6"
|
|
135
|
+
},
|
|
136
|
+
"widgets": {
|
|
137
|
+
"application/vnd.jupyter.widget-state+json": {
|
|
138
|
+
"state": {},
|
|
139
|
+
"version_major": 2,
|
|
140
|
+
"version_minor": 0
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"nbformat": 4,
|
|
145
|
+
"nbformat_minor": 5
|
|
146
|
+
}
|