mathematicskit 0.2.0__tar.gz → 0.4.0__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.
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/PKG-INFO +101 -57
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/README.md +85 -46
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/__init__.py +9 -3
- mathematicskit-0.4.0/mathematicskit/_jit.py +47 -0
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/__init__.py +93 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/core/base.py +50 -3
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/__init__.py +60 -0
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/actions.py +92 -0
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/codes.py +103 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/systems/finite_fields.py +12 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/systems/groups.py +110 -1
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/homomorphisms.py +117 -0
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/structure.py +399 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/systems/subgroups.py +55 -42
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_actions.py +39 -0
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_codes.py +39 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_finite_fields.py +17 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_groups.py +39 -0
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_homomorphisms.py +39 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_polynomial_ring.py +13 -0
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_structure.py +105 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_subgroups.py +35 -0
- mathematicskit-0.4.0/mathematicskit/calculus/__init__.py +77 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/core/base.py +16 -2
- mathematicskit-0.4.0/mathematicskit/calculus/systems/__init__.py +54 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/systems/autodiff.py +2 -2
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/systems/dual_numbers.py +1 -1
- mathematicskit-0.4.0/mathematicskit/calculus/systems/exhaustion.py +59 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/systems/finite_differences.py +38 -2
- mathematicskit-0.4.0/mathematicskit/calculus/systems/quadrature.py +460 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/systems/taylor_series.py +47 -19
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_exhaustion.py +38 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_finite_differences.py +20 -0
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_quadrature_rules.py +90 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_taylor_series.py +14 -7
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/utils/series_utils.py +1 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/__init__.py +39 -4
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/core/base.py +15 -1
- mathematicskit-0.4.0/mathematicskit/combinatorics/systems/__init__.py +60 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/systems/designs.py +114 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/systems/extremal.py +126 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/systems/matching.py +85 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/systems/necklaces.py +71 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/systems/sequences.py +149 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/systems/trees.py +116 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_designs.py +36 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_extremal.py +63 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_matching.py +30 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_necklaces.py +23 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_sequences.py +50 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_trees.py +24 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/__init__.py +58 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/core/__init__.py +13 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/core/base.py +129 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/__init__.py +28 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/conformal_maps.py +167 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/contours.py +187 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/domain_coloring.py +64 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/holomorphic.py +77 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/laurent.py +62 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/residues.py +173 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_conformal_maps.py +88 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_contours.py +60 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_domain_coloring.py +44 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_holomorphic.py +30 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_laurent.py +43 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_residues.py +68 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_visualizers.py +29 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/utils/__init__.py +5 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/utils/grids.py +40 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/visualizers/__init__.py +5 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/visualizers/plots.py +91 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/__init__.py +20 -4
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/__init__.py +14 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/box_counting.py +6 -4
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/cellular_automata.py +1 -1
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/systems/curves.py +229 -0
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/systems/dla.py +90 -0
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/systems/lsystems.py +101 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/lyapunov.py +1 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/mandelbrot_julia.py +1 -1
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/systems/maps.py +49 -0
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_curves.py +76 -0
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_lsystems.py +35 -0
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_maps_and_dla.py +51 -0
- mathematicskit-0.4.0/mathematicskit/geometry/__init__.py +81 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/core/base.py +81 -1
- mathematicskit-0.4.0/mathematicskit/geometry/systems/__init__.py +39 -0
- mathematicskit-0.4.0/mathematicskit/geometry/systems/bezier.py +65 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/systems/convex_hull.py +9 -4
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/systems/curves.py +1 -1
- mathematicskit-0.4.0/mathematicskit/geometry/systems/distances.py +38 -0
- mathematicskit-0.4.0/mathematicskit/geometry/systems/enclosing.py +82 -0
- mathematicskit-0.4.0/mathematicskit/geometry/systems/polygon.py +154 -0
- mathematicskit-0.4.0/mathematicskit/geometry/systems/polyhedra.py +56 -0
- mathematicskit-0.4.0/mathematicskit/geometry/systems/proximity.py +82 -0
- mathematicskit-0.4.0/mathematicskit/geometry/systems/simplification.py +64 -0
- mathematicskit-0.4.0/mathematicskit/geometry/systems/surfaces.py +146 -0
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_algorithms.py +96 -0
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_measurement.py +70 -0
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_surfaces.py +45 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/__init__.py +98 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/core/base.py +94 -3
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/__init__.py +38 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/assignment.py +44 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/coloring.py +7 -2
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/components.py +62 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/enumeration.py +49 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/extremal.py +101 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/hamiltonian.py +67 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/matching.py +83 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/max_flow.py +10 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/ranking.py +68 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/systems/search.py +77 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/spanning_tree.py +2 -2
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_coloring.py +9 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_max_flow.py +19 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_new_algorithms.py +174 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/utils/__init__.py +21 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/utils/generators.py +197 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/integrators/__init__.py +25 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/integrators/adaptive.py +1 -1
- mathematicskit-0.4.0/mathematicskit/integrators/bvp.py +124 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/integrators/fixed_step.py +3 -2
- mathematicskit-0.4.0/mathematicskit/integrators/implicit.py +258 -0
- mathematicskit-0.4.0/mathematicskit/integrators/tests/test_integrators.py +314 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/__init__.py +33 -2
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/core/base.py +75 -9
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/__init__.py +21 -0
- mathematicskit-0.4.0/mathematicskit/linalg/systems/cramer.py +68 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/eigen.py +4 -2
- mathematicskit-0.4.0/mathematicskit/linalg/systems/gershgorin.py +59 -0
- mathematicskit-0.4.0/mathematicskit/linalg/systems/lanczos.py +73 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/lu.py +14 -2
- mathematicskit-0.4.0/mathematicskit/linalg/systems/matrix_polynomial.py +84 -0
- mathematicskit-0.4.0/mathematicskit/linalg/systems/pseudoinverse.py +91 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/qr.py +10 -4
- mathematicskit-0.4.0/mathematicskit/linalg/systems/schur.py +78 -0
- mathematicskit-0.4.0/mathematicskit/linalg/systems/stationary.py +224 -0
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_classical.py +105 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_lu.py +22 -1
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_stationary_and_spectral.py +106 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/__init__.py +27 -5
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/core/base.py +39 -7
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/__init__.py +17 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/continued_fractions.py +42 -11
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/crt.py +1 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/diophantine.py +8 -0
- mathematicskit-0.4.0/mathematicskit/number_theory/systems/factorization.py +74 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/primality.py +57 -6
- mathematicskit-0.4.0/mathematicskit/number_theory/systems/prime_distribution.py +109 -0
- mathematicskit-0.4.0/mathematicskit/number_theory/systems/quadratic_residues.py +143 -0
- mathematicskit-0.4.0/mathematicskit/number_theory/systems/sums_of_squares.py +104 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/totient.py +1 -1
- mathematicskit-0.4.0/mathematicskit/number_theory/systems/zeta.py +58 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_continued_fractions.py +32 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_crt.py +1 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_diophantine.py +11 -0
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_factorization.py +48 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_primality.py +31 -0
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_prime_distribution.py +50 -0
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_quadratic_residues.py +66 -0
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_sums_of_squares.py +53 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/__init__.py +27 -7
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/core/base.py +43 -0
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/__init__.py +37 -0
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/acceleration.py +57 -0
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/approximation.py +265 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/interpolation.py +67 -2
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/polynomials.py +141 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/regression.py +4 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/root_finding.py +157 -7
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/summation.py +68 -0
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_acceleration.py +31 -0
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_approximation.py +98 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_interpolation.py +33 -1
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_polynomials.py +71 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_root_finding.py +50 -1
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_summation.py +38 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/utils/error_analysis.py +6 -4
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/__init__.py +76 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/core/base.py +40 -3
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/__init__.py +58 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/bifurcations.py +2 -2
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/chaotic_flows.py +186 -0
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/chemical_oscillators.py +97 -0
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/epidemics.py +156 -0
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/excitable.py +133 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/limit_cycles.py +56 -4
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/logistic_map.py +2 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/phase_portrait.py +2 -2
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/poincare.py +1 -1
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/population.py +186 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/stability.py +89 -14
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/synchronization.py +149 -0
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_chaotic_flows.py +59 -0
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_chemical_oscillators.py +30 -0
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_epidemics.py +43 -0
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_excitable.py +37 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_limit_cycles.py +13 -1
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_population.py +53 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_stability.py +24 -1
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_synchronization.py +48 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/utils/period_estimation.py +1 -2
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/__init__.py +40 -5
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/core/base.py +93 -2
- mathematicskit-0.4.0/mathematicskit/optimization/systems/__init__.py +37 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/systems/conjugate_gradient.py +1 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/systems/constrained.py +6 -1
- mathematicskit-0.4.0/mathematicskit/optimization/systems/direct_search.py +78 -0
- mathematicskit-0.4.0/mathematicskit/optimization/systems/dynamic_programming.py +72 -0
- mathematicskit-0.4.0/mathematicskit/optimization/systems/frank_wolfe.py +104 -0
- mathematicskit-0.4.0/mathematicskit/optimization/systems/game_theory.py +80 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/systems/gradient_descent.py +1 -1
- mathematicskit-0.4.0/mathematicskit/optimization/systems/least_squares.py +77 -0
- mathematicskit-0.4.0/mathematicskit/optimization/systems/linear_programming.py +131 -0
- mathematicskit-0.4.0/mathematicskit/optimization/systems/momentum.py +152 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/systems/newton_quasi_newton.py +2 -1
- mathematicskit-0.4.0/mathematicskit/optimization/systems/scalar_search.py +78 -0
- mathematicskit-0.4.0/mathematicskit/optimization/systems/stochastic.py +82 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_direct_search.py +28 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_dynamic_programming.py +45 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_frank_wolfe.py +45 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_game_theory.py +42 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_least_squares.py +40 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_linear_programming.py +71 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_momentum.py +61 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_scalar_search.py +38 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_stochastic.py +30 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_test_functions.py +69 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/utils/comparison.py +1 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/utils/line_search.py +1 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/utils/test_functions.py +22 -3
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/visualizers/plots.py +6 -4
- mathematicskit-0.4.0/mathematicskit/pde/__init__.py +93 -0
- mathematicskit-0.4.0/mathematicskit/pde/core/__init__.py +5 -0
- mathematicskit-0.4.0/mathematicskit/pde/core/base.py +246 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/__init__.py +63 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/advection.py +138 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/conservation_laws.py +199 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/finite_elements.py +100 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/heat.py +371 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/multigrid.py +145 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/poisson.py +191 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/spectral.py +372 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/stability.py +284 -0
- mathematicskit-0.4.0/mathematicskit/pde/systems/wave.py +208 -0
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_fem_multigrid_shocks.py +140 -0
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_heat.py +176 -0
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_operators_and_stability.py +129 -0
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_poisson_and_spectral.py +178 -0
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_visualizers.py +38 -0
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_wave_and_advection.py +109 -0
- mathematicskit-0.4.0/mathematicskit/pde/utils/__init__.py +5 -0
- mathematicskit-0.4.0/mathematicskit/pde/utils/operators.py +123 -0
- mathematicskit-0.4.0/mathematicskit/pde/visualizers/__init__.py +5 -0
- mathematicskit-0.4.0/mathematicskit/pde/visualizers/plots.py +118 -0
- mathematicskit-0.4.0/mathematicskit/probability/__init__.py +82 -0
- mathematicskit-0.4.0/mathematicskit/probability/core/__init__.py +21 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/core/base.py +67 -4
- mathematicskit-0.4.0/mathematicskit/probability/systems/__init__.py +48 -0
- mathematicskit-0.4.0/mathematicskit/probability/systems/bayes.py +80 -0
- mathematicskit-0.4.0/mathematicskit/probability/systems/branching.py +111 -0
- mathematicskit-0.4.0/mathematicskit/probability/systems/buffon.py +73 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/continuous.py +38 -2
- mathematicskit-0.4.0/mathematicskit/probability/systems/continuous_time_markov.py +81 -0
- mathematicskit-0.4.0/mathematicskit/probability/systems/inequalities.py +57 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/markov_chain.py +20 -12
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/monte_carlo.py +1 -1
- mathematicskit-0.4.0/mathematicskit/probability/systems/queueing.py +52 -0
- mathematicskit-0.4.0/mathematicskit/probability/systems/st_petersburg.py +79 -0
- mathematicskit-0.4.0/mathematicskit/probability/systems/stochastic_processes.py +158 -0
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_classical_problems.py +90 -0
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_stochastic_processes.py +113 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/__init__.py +143 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/core/base.py +186 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/__init__.py +92 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/airy.py +46 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/convolution.py +176 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/elliptic.py +132 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/error_functions.py +93 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/filters.py +197 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/gamma_beta.py +160 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/hypergeometric.py +80 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/lambert_w.py +56 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/laplace_transform.py +216 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/mathieu.py +122 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/wavelets.py +272 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/z_transform.py +154 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/systems/zeta.py +85 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_airy.py +49 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_convolution.py +64 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_elliptic.py +74 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_error_functions.py +65 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_filters.py +77 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/tests/test_gamma_beta.py +29 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_hypergeometric.py +66 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_lambert_w.py +47 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_laplace_transform.py +91 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_mathieu.py +56 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_visualizers.py +51 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_wavelets.py +93 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_z_transform.py +74 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_zeta.py +44 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/utils/orthogonality.py +1 -1
- mathematicskit-0.4.0/mathematicskit/special_functions/visualizers/__init__.py +19 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/visualizers/plots.py +196 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/__init__.py +41 -5
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/core/base.py +121 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/__init__.py +20 -1
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/bootstrap.py +1 -1
- mathematicskit-0.4.0/mathematicskit/statistics/systems/correlation.py +99 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/hypothesis_tests.py +10 -2
- mathematicskit-0.4.0/mathematicskit/statistics/systems/jackknife.py +62 -0
- mathematicskit-0.4.0/mathematicskit/statistics/systems/likelihood.py +95 -0
- mathematicskit-0.4.0/mathematicskit/statistics/systems/multiple_testing.py +86 -0
- mathematicskit-0.4.0/mathematicskit/statistics/systems/nonparametric.py +168 -0
- mathematicskit-0.4.0/mathematicskit/statistics/systems/shrinkage.py +64 -0
- mathematicskit-0.4.0/mathematicskit/statistics/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_correlation.py +45 -0
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_jackknife.py +28 -0
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_likelihood.py +58 -0
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_multiple_testing.py +43 -0
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_nonparametric.py +74 -0
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_shrinkage.py +36 -0
- mathematicskit-0.4.0/mathematicskit/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/PKG-INFO +101 -57
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/SOURCES.txt +200 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/requires.txt +6 -5
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/pyproject.toml +38 -16
- mathematicskit-0.2.0/mathematicskit/abstract_algebra/__init__.py +0 -43
- mathematicskit-0.2.0/mathematicskit/abstract_algebra/systems/__init__.py +0 -23
- mathematicskit-0.2.0/mathematicskit/calculus/__init__.py +0 -48
- mathematicskit-0.2.0/mathematicskit/calculus/systems/__init__.py +0 -27
- mathematicskit-0.2.0/mathematicskit/calculus/systems/quadrature.py +0 -184
- mathematicskit-0.2.0/mathematicskit/combinatorics/systems/__init__.py +0 -29
- mathematicskit-0.2.0/mathematicskit/geometry/__init__.py +0 -42
- mathematicskit-0.2.0/mathematicskit/geometry/systems/__init__.py +0 -19
- mathematicskit-0.2.0/mathematicskit/geometry/systems/polygon.py +0 -73
- mathematicskit-0.2.0/mathematicskit/graph_theory/__init__.py +0 -47
- mathematicskit-0.2.0/mathematicskit/graph_theory/systems/__init__.py +0 -19
- mathematicskit-0.2.0/mathematicskit/graph_theory/utils/__init__.py +0 -5
- mathematicskit-0.2.0/mathematicskit/graph_theory/utils/generators.py +0 -111
- mathematicskit-0.2.0/mathematicskit/integrators/tests/test_integrators.py +0 -115
- mathematicskit-0.2.0/mathematicskit/numerical_analysis/systems/__init__.py +0 -22
- mathematicskit-0.2.0/mathematicskit/ode_dynamics/__init__.py +0 -44
- mathematicskit-0.2.0/mathematicskit/ode_dynamics/systems/__init__.py +0 -30
- mathematicskit-0.2.0/mathematicskit/optimization/systems/__init__.py +0 -19
- mathematicskit-0.2.0/mathematicskit/optimization/systems/linear_programming.py +0 -67
- mathematicskit-0.2.0/mathematicskit/optimization/tests/test_linear_programming.py +0 -37
- mathematicskit-0.2.0/mathematicskit/probability/__init__.py +0 -43
- mathematicskit-0.2.0/mathematicskit/probability/core/__init__.py +0 -5
- mathematicskit-0.2.0/mathematicskit/probability/systems/__init__.py +0 -24
- mathematicskit-0.2.0/mathematicskit/special_functions/__init__.py +0 -39
- mathematicskit-0.2.0/mathematicskit/special_functions/core/base.py +0 -38
- mathematicskit-0.2.0/mathematicskit/special_functions/systems/__init__.py +0 -22
- mathematicskit-0.2.0/mathematicskit/special_functions/systems/gamma_beta.py +0 -87
- mathematicskit-0.2.0/mathematicskit/special_functions/tests/test_visualizers.py +0 -20
- mathematicskit-0.2.0/mathematicskit/special_functions/visualizers/__init__.py +0 -5
- mathematicskit-0.2.0/mathematicskit/special_functions/visualizers/plots.py +0 -73
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/LICENSE +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/systems/polynomial_ring.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/utils/checks.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_autodiff.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_dual_numbers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_quadrature.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/counting.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/inclusion_exclusion.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/partitions.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/pascals_triangle.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/special_numbers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_counting.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_inclusion_exclusion.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_partitions.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_pascals_triangle.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_special_numbers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/utils/bell_number.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/fractals_chaos → mathematicskit-0.4.0/mathematicskit/complex_analysis}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/constants.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/core/base.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/ifs.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/geometry → mathematicskit-0.4.0/mathematicskit/fractals_chaos}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_box_counting.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_cellular_automata.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_ifs.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_lyapunov.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_mandelbrot_julia.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/utils/ifs_utils.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/systems/intersections.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/systems/triangulation.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/graph_theory → mathematicskit-0.4.0/mathematicskit/geometry}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_convex_hull.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_curves.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_intersections.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_polygon.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_triangulation.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/utils/curves_library.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/shortest_paths.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/spectral.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/integrators → mathematicskit-0.4.0/mathematicskit/graph_theory}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_generators.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_graph.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_shortest_paths.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_spanning_tree.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_spectral.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/linalg → mathematicskit-0.4.0/mathematicskit/integrators}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/cholesky.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/iterative.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/stability.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/svd.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/number_theory → mathematicskit-0.4.0/mathematicskit/linalg}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_cholesky.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_eigen.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_iterative.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_qr.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_stability.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_svd.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/utils/matrix_utils.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/modular_arithmetic.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/numerical_analysis → mathematicskit-0.4.0/mathematicskit/number_theory}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_gcd_lcm.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_modular_arithmetic.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_totient.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/utils/gcd_lcm.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/chebyshev.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/splines.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/ode_dynamics → mathematicskit-0.4.0/mathematicskit/numerical_analysis}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_chebyshev.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_error_analysis.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_regression.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_splines.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/core/__init__.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/optimization → mathematicskit-0.4.0/mathematicskit/ode_dynamics}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_bifurcations.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_logistic_map.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_phase_portrait.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_poincare.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/core/__init__.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/probability → mathematicskit-0.4.0/mathematicskit/optimization}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_comparison.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_conjugate_gradient.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_constrained.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_gradient_descent.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_newton_quasi_newton.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/special_functions → mathematicskit-0.4.0/mathematicskit/pde}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/discrete.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/limit_theorems.py +0 -0
- {mathematicskit-0.2.0/mathematicskit/statistics → mathematicskit-0.4.0/mathematicskit/probability}/tests/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_continuous.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_discrete.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_limit_theorems.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_markov_chain.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_monte_carlo.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/utils/diagnostics.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/visualizers/plots.py +0 -0
- /mathematicskit-0.2.0/mathematicskit/tests/__init__.py → /mathematicskit-0.4.0/mathematicskit/py.typed +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/systems/bessel.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/systems/fourier_transform.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/systems/orthogonal_polynomials.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/tests/test_bessel.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/tests/test_fourier_transform.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/tests/test_orthogonal_polynomials.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/core/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/confidence_intervals.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/descriptive.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/regression.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_bootstrap.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_confidence_intervals.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_descriptive.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_effect_size.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_hypothesis_tests.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_regression.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_visualizers.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/utils/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/utils/effect_size.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/visualizers/__init__.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/visualizers/plots.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/tests/test_package.py +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/dependency_links.txt +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/top_level.txt +0 -0
- {mathematicskit-0.2.0 → mathematicskit-0.4.0}/setup.cfg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mathematicskit
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Unified computational mathematics toolkit: numerical analysis, linear algebra, calculus, dynamical systems, optimization, probability, statistics, number theory, combinatorics, graph theory, abstract algebra, geometry, special functions, and fractals/chaos --
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Unified computational mathematics toolkit: numerical analysis, linear algebra, calculus, dynamical systems, partial differential equations, optimization, probability, statistics, number theory, combinatorics, complex analysis, graph theory, abstract algebra, geometry, special functions, and fractals/chaos -- built on numpy/scipy, hand-rolling algorithms only where no library equivalent exists.
|
|
5
5
|
Author-email: Charles Poli <cpoli374@gmail.com>
|
|
6
6
|
Maintainer-email: Charles Poli <cpoli374@gmail.com>
|
|
7
7
|
License: MIT
|
|
@@ -9,26 +9,29 @@ Project-URL: Homepage, https://github.com/cpoli/mathematicskit
|
|
|
9
9
|
Project-URL: Issues, https://github.com/cpoli/mathematicskit/issues
|
|
10
10
|
Project-URL: Changelog, https://github.com/cpoli/mathematicskit/blob/main/CHANGELOG.md
|
|
11
11
|
Project-URL: Documentation, https://cpoli.github.io/mathematicskit/
|
|
12
|
-
Keywords: mathematics,numerical-analysis,linear-algebra,computational-mathematics,optimization,graph-theory,number-theory,probability,statistics
|
|
13
|
-
Classifier: Development Status ::
|
|
12
|
+
Keywords: mathematics,numerical-analysis,linear-algebra,computational-mathematics,optimization,partial-differential-equations,graph-theory,number-theory,probability,statistics,education,numerical-methods,dynamical-systems,fractals
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Education
|
|
14
15
|
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
15
17
|
Classifier: License :: OSI Approved :: MIT License
|
|
16
18
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
18
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Typing :: Typed
|
|
25
|
+
Classifier: Topic :: Education
|
|
21
26
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
22
|
-
Requires-Python: >=3.
|
|
27
|
+
Requires-Python: >=3.10
|
|
23
28
|
Description-Content-Type: text/markdown
|
|
24
29
|
License-File: LICENSE
|
|
25
30
|
Requires-Dist: numpy>=1.24
|
|
26
31
|
Requires-Dist: scipy>=1.10
|
|
27
32
|
Requires-Dist: matplotlib>=3.6
|
|
28
|
-
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist: sympy>=1.11
|
|
31
|
-
Requires-Dist: tqdm>=4.65
|
|
33
|
+
Provides-Extra: fast
|
|
34
|
+
Requires-Dist: numba>=0.58; extra == "fast"
|
|
32
35
|
Provides-Extra: test
|
|
33
36
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
34
37
|
Requires-Dist: pytest-cov; extra == "test"
|
|
@@ -41,8 +44,10 @@ Requires-Dist: sphinx-autodoc-typehints>=1.25; extra == "docs"
|
|
|
41
44
|
Requires-Dist: myst-parser>=2.0; extra == "docs"
|
|
42
45
|
Requires-Dist: sphinx-gallery>=0.15; extra == "docs"
|
|
43
46
|
Requires-Dist: sphinx-design>=0.6; extra == "docs"
|
|
47
|
+
Requires-Dist: jupyterlite-sphinx>=0.17; extra == "docs"
|
|
48
|
+
Requires-Dist: jupyterlite-pyodide-kernel>=0.4; extra == "docs"
|
|
44
49
|
Provides-Extra: dev
|
|
45
|
-
Requires-Dist: mathematicskit[docs,test]; extra == "dev"
|
|
50
|
+
Requires-Dist: mathematicskit[docs,fast,test]; extra == "dev"
|
|
46
51
|
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
47
52
|
Requires-Dist: mypy>=1.10; extra == "dev"
|
|
48
53
|
Requires-Dist: pre-commit>=3.7; extra == "dev"
|
|
@@ -58,50 +63,68 @@ Dynamic: license-file
|
|
|
58
63
|
| Code style | [](https://github.com/astral-sh/ruff) |
|
|
59
64
|
| Downloads | [](https://pepy.tech/project/mathematicskit) [](https://pepy.tech/project/mathematicskit) |
|
|
60
65
|
| Community | [](https://github.com/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit/graphs/contributors) [](https://github.com/cpoli/mathematicskit/commits/main) |
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
breakthroughs in
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
66
|
+
| Try it online | [](https://colab.research.google.com/github/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) [](https://mybinder.org/v2/gh/cpoli/mathematicskit/main?labpath=notebooks%2Fquickstart.ipynb) [](https://cpoli.github.io/mathematicskit/lite/lab/) |
|
|
67
|
+
|
|
68
|
+
**See how the algorithms of computational mathematics actually work.**
|
|
69
|
+
mathematicskit is a Python toolkit for learning and teaching numerical
|
|
70
|
+
methods, dynamical systems, and discrete mathematics. Every iterative method
|
|
71
|
+
keeps its iterates, every result is an inspectable dataclass, every domain
|
|
72
|
+
ships plotting helpers, and each domain's docs walk through the field's
|
|
73
|
+
breakthroughs in historical order, each one linked to runnable code that
|
|
74
|
+
reproduces it.
|
|
75
|
+
|
|
76
|
+

|
|
77
|
+
|
|
78
|
+
- **For students:** watch Newton's method converge quadratically while
|
|
79
|
+
bisection converges linearly, see the Runge phenomenon appear, trace the
|
|
80
|
+
Feigenbaum route to chaos, all in a few lines each.
|
|
81
|
+
- **For instructors:** 16 domains, one consistent API, and hundreds of
|
|
82
|
+
gallery examples, each downloadable as a notebook or runnable in the
|
|
83
|
+
browser, ready to hand out as course material.
|
|
84
|
+
- **Built on numpy/scipy:** production-grade library routines under the
|
|
85
|
+
hood, with algorithms hand-rolled only where the steps themselves are
|
|
86
|
+
what you're learning (see [Design](#design)).
|
|
87
|
+
|
|
88
|
+
mathematicskit is part of a family of packages --
|
|
89
|
+
[physicskit](https://github.com/cpoli/physicskit), **mathematicskit**
|
|
90
|
+
and [chemistrykit](https://github.com/cpoli/chemistrykit) -- that share
|
|
91
|
+
the same architecture, API conventions, and history-driven documentation.
|
|
84
92
|
|
|
85
93
|
## Install
|
|
86
94
|
|
|
87
95
|
```bash
|
|
88
|
-
|
|
89
|
-
pip install
|
|
96
|
+
pip install "mathematicskit[fast]" # with numba JIT acceleration (recommended)
|
|
97
|
+
pip install mathematicskit # pure numpy/scipy/matplotlib, e.g. for Pyodide/JupyterLite
|
|
90
98
|
```
|
|
91
99
|
|
|
92
|
-
|
|
93
|
-
already taken by an unrelated package)
|
|
94
|
-
|
|
100
|
+
Then `import mathematicskit as mk`. (The shorter name `mathkit` was
|
|
101
|
+
already taken on PyPI by an unrelated package.) The `fast` extra adds
|
|
102
|
+
[numba](https://numba.pydata.org/), which compiles the inner loops of
|
|
103
|
+
`ode_dynamics`, `fractals_chaos`, `pde`, and `integrators`. Without it
|
|
104
|
+
those kernels run as plain Python: same results, slower.
|
|
105
|
+
|
|
106
|
+
For development: `pip install -e ".[dev]"` (see [CONTRIBUTING.md](CONTRIBUTING.md)).
|
|
95
107
|
|
|
96
108
|
## Quick start
|
|
97
109
|
|
|
98
110
|
```python
|
|
111
|
+
import numpy as np
|
|
99
112
|
import mathematicskit as mk
|
|
113
|
+
from mathematicskit.numerical_analysis.visualizers import plot_convergence_history
|
|
114
|
+
|
|
115
|
+
f, fprime = (lambda x: x**2 - 2.0), (lambda x: 2.0 * x)
|
|
116
|
+
newton = mk.numerical_analysis.NewtonRaphson(f, fprime, x0=3.0, tol=1e-14).solve()
|
|
117
|
+
bisection = mk.numerical_analysis.Bisection(f, 0.0, 3.0, tol=1e-14).solve()
|
|
118
|
+
print(len(newton.history), len(bisection.history)) # 8 iterates vs. 49
|
|
100
119
|
|
|
101
|
-
|
|
102
|
-
|
|
120
|
+
ax = plot_convergence_history(bisection, root_exact=np.sqrt(2))
|
|
121
|
+
plot_convergence_history(newton, root_exact=np.sqrt(2), ax=ax)
|
|
122
|
+
ax.legend()
|
|
103
123
|
```
|
|
104
124
|
|
|
125
|
+
The [quickstart notebook](https://github.com/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) tours six domains in
|
|
126
|
+
ten minutes. Open it in Colab or Binder using the badges above.
|
|
127
|
+
|
|
105
128
|
## Subpackages
|
|
106
129
|
|
|
107
130
|
Domain subpackages, each with runnable examples linked below:
|
|
@@ -110,16 +133,18 @@ Domain subpackages, each with runnable examples linked below:
|
|
|
110
133
|
- [`mathematicskit.linalg`](https://cpoli.github.io/mathematicskit/api/gallery/linalg/) -- LU/QR/Cholesky decompositions and eigenvalue computation via `scipy.linalg`/`numpy.linalg`, power/inverse iteration (hand-rolled), SVD, conjugate gradient and GMRES via `scipy.sparse.linalg`, and least-squares stability (normal equations vs. QR vs. `numpy.linalg.lstsq`).
|
|
111
134
|
- [`mathematicskit.calculus`](https://cpoli.github.io/mathematicskit/api/gallery/calculus/) -- finite-difference derivatives with Richardson extrapolation (hand-rolled), `scipy.integrate`-backed trapezoidal/Simpson/Gauss-Legendre/adaptive quadrature, forward-mode (dual numbers) and reverse-mode (backpropagation) automatic differentiation (hand-rolled), and Taylor/Maclaurin series.
|
|
112
135
|
- [`mathematicskit.ode_dynamics`](https://cpoli.github.io/mathematicskit/api/gallery/ode_dynamics/) -- Jacobian-linearization fixed-point stability (node/saddle/spiral/center), phase portraits, the logistic map's Feigenbaum route to chaos, saddle-node/pitchfork/Hopf bifurcation normal forms, the Van der Pol limit cycle, and Poincare sections of the driven Duffing oscillator.
|
|
136
|
+
- [`mathematicskit.pde`](https://cpoli.github.io/mathematicskit/api/gallery/pde/) -- the heat equation in 1D and 2D by the method of lines on `mathematicskit.integrators` and by the theta-method family (FTCS, Crank-Nicolson, backward Euler via `scipy.sparse.linalg.splu`); the wave equation with symplectic leapfrog stepping against d'Alembert's solution; upwind, Lax-Friedrichs and Lax-Wendroff advection; Poisson/Laplace problems solved with `scipy.sparse.linalg.spsolve` or `mathematicskit.linalg`'s CG/Jacobi/Gauss-Seidel/SOR; CFL checks and von Neumann amplification factors; and Fourier (`numpy.fft`) and Chebyshev spectral methods.
|
|
113
137
|
- [`mathematicskit.fractals_chaos`](https://cpoli.github.io/mathematicskit/api/gallery/fractals_chaos/) -- Lyapunov exponent estimation, box-counting fractal dimension, Numba-accelerated Mandelbrot/Julia set generation, iterated function systems (Barnsley fern, Sierpinski triangle/carpet), and cellular automata (Wolfram rules, Conway's Game of Life).
|
|
114
138
|
- [`mathematicskit.optimization`](https://cpoli.github.io/mathematicskit/api/gallery/optimization/) -- gradient descent and nonlinear conjugate gradient (hand-rolled, iterate-path-exposing), Newton's method and BFGS via `scipy.optimize.minimize`, Lagrange multipliers and KKT-condition verification, a quadratic-penalty method, and linear programming via `scipy.optimize.linprog`.
|
|
115
139
|
- [`mathematicskit.probability`](https://cpoli.github.io/mathematicskit/api/gallery/probability/) -- binomial/Poisson/geometric/uniform/exponential/normal/gamma distributions via `scipy.stats` (plus mathematicskit's own MGFs), Monte Carlo integration with variance reduction (importance sampling, control variates), Law of Large Numbers/Central Limit Theorem simulation, and discrete-time Markov chains.
|
|
116
140
|
- [`mathematicskit.statistics`](https://cpoli.github.io/mathematicskit/api/gallery/statistics/) -- descriptive statistics, z/t/chi-square hypothesis tests and one-way ANOVA, confidence intervals for means/proportions/variances, OLS linear regression with residual diagnostics, and bootstrap resampling via `scipy.stats.bootstrap`.
|
|
117
141
|
- [`mathematicskit.number_theory`](https://cpoli.github.io/mathematicskit/api/gallery/number_theory/) -- the extended Euclidean algorithm and modular inverses, fast modular exponentiation, primality testing (trial division, Miller-Rabin) and prime generation, the Chinese Remainder Theorem, continued fractions and best rational approximations, Euler's totient/Mobius/divisor-sum functions, and linear/Pell Diophantine equation solvers (hand-rolled -- exact-integer number theory has no `numpy`/`scipy` equivalent).
|
|
118
142
|
- [`mathematicskit.combinatorics`](https://cpoli.github.io/mathematicskit/api/gallery/combinatorics/) -- permutation/combination counting via `scipy.special.perm`/`comb` (sequence generation via `itertools`), a hand-rolled Pascal's triangle, integer partitions and Young/Ferrers diagrams, the inclusion-exclusion principle and derangements, and Stirling/Catalan/Bell numbers (hand-rolled -- no scipy/numpy equivalent).
|
|
143
|
+
- [`mathematicskit.complex_analysis`](https://cpoli.github.io/mathematicskit/api/gallery/complex_analysis/) -- the Cauchy-Riemann equations, contour integrals via `scipy.integrate.quad` (`complex_func=True`), winding numbers and Cauchy's integral formula, residues (periodic trapezoidal rule), the residue theorem and the argument principle, conformal maps (Möbius transformations, Joukowski airfoils), and domain coloring.
|
|
119
144
|
- [`mathematicskit.graph_theory`](https://cpoli.github.io/mathematicskit/api/gallery/graph_theory/) -- a lightweight own graph container (no `networkx`); shortest paths (Dijkstra/Bellman-Ford/Floyd-Warshall) and minimum spanning tree (Kruskal) via `scipy.sparse.csgraph`, with a hand-rolled Prim's kept for comparison; maximum flow/minimum cut via `scipy.sparse.csgraph.maximum_flow`; hand-rolled graph coloring (greedy, exact backtracking); and spectral graph theory (Laplacian via scipy, eigendecomposition via `numpy.linalg.eigh`).
|
|
120
145
|
- [`mathematicskit.abstract_algebra`](https://cpoli.github.io/mathematicskit/api/gallery/abstract_algebra/) -- cyclic and permutation groups with Cayley tables and group-property checks, subgroup/coset enumeration, finite field arithmetic (`GF(p)`/`GF(p^n)` via irreducible polynomials), and polynomial ring arithmetic over Z/Q/finite fields (hand-rolled throughout -- no scipy/numpy equivalent).
|
|
121
146
|
- [`mathematicskit.geometry`](https://cpoli.github.io/mathematicskit/api/gallery/geometry/) -- convex hull via `scipy.spatial.ConvexHull` (with a hand-rolled Graham scan comparison), Delaunay triangulation/Voronoi diagrams via `scipy.spatial`, hand-rolled segment intersection and point-in-polygon tests, polygon area/centroid via the shoelace formula, and curvature/arc-length/the Frenet-Serret frame for parametric curves.
|
|
122
|
-
- [`mathematicskit.special_functions`](https://cpoli.github.io/mathematicskit/api/gallery/special_functions/) -- the gamma/beta functions and Bessel functions via `scipy.special`, orthogonal polynomial families (Legendre/Chebyshev/Hermite/Laguerre) via `numpy.polynomial` with numerically-verified orthogonality,
|
|
147
|
+
- [`mathematicskit.special_functions`](https://cpoli.github.io/mathematicskit/api/gallery/special_functions/) -- the gamma/beta functions and Bessel functions via `scipy.special`, orthogonal polynomial families (Legendre/Chebyshev/Hermite/Laguerre) via `numpy.polynomial` with numerically-verified orthogonality, the discrete Fourier transform via `numpy.fft` alongside a hand-rolled naive-DFT-vs-radix-2-FFT pedagogical speed comparison, and signal processing: direct/FFT convolution and Butterworth/Chebyshev/window-FIR filters via `scipy.signal`, the Z-transform with partial-fraction inversion, the Laplace transform with hand-rolled Talbot/Gaver-Stehfest numerical inversion, and hand-rolled Daubechies wavelets, the discrete wavelet transform, and the Morlet continuous wavelet transform (no numpy/scipy equivalent since scipy 1.15).
|
|
123
148
|
|
|
124
149
|
Shared infrastructure, used across the subpackages above rather than
|
|
125
150
|
standalone toolkits:
|
|
@@ -130,6 +155,20 @@ standalone toolkits:
|
|
|
130
155
|
leapfrog, Yoshida4, adaptive Dormand-Prince), used by
|
|
131
156
|
`mathematicskit.ode_dynamics`.
|
|
132
157
|
|
|
158
|
+
## Design
|
|
159
|
+
|
|
160
|
+
mathematicskit calls `numpy`/`scipy` directly for anything they already
|
|
161
|
+
implement (decompositions, eigensolvers, quadrature, statistical
|
|
162
|
+
distributions, optimization routines, and more), and hand-rolls an
|
|
163
|
+
algorithm only where no `numpy`/`scipy` equivalent exists (e.g. graph
|
|
164
|
+
algorithms, finite fields, modular arithmetic) or where the
|
|
165
|
+
algorithm's own iterate behavior is the pedagogical subject (e.g.
|
|
166
|
+
root-finder convergence history, autodiff). No hard dependency on
|
|
167
|
+
`networkx`, `cvxpy`, or SageMath. The ODE integrators are shared across
|
|
168
|
+
domains.
|
|
169
|
+
|
|
170
|
+
The public API follows the [stability and deprecation policy](CONTRIBUTING.md#api-stability-and-deprecation-policy).
|
|
171
|
+
|
|
133
172
|
## Test
|
|
134
173
|
|
|
135
174
|
Tests live alongside each subpackage, at `mathematicskit/<name>/tests/`.
|
|
@@ -143,7 +182,7 @@ MPLBACKEND=Agg pytest --doctest-modules mathematicskit --ignore-glob="*/tests/*"
|
|
|
143
182
|
```
|
|
144
183
|
|
|
145
184
|
Both commands, plus `ruff check`/`ruff format --check`, run in CI on
|
|
146
|
-
every PR (`.github/workflows/ci.yml`) across Python 3.
|
|
185
|
+
every PR (`.github/workflows/ci.yml`) across Python 3.10-3.14 on Linux and
|
|
147
186
|
macOS. See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a PR.
|
|
148
187
|
|
|
149
188
|
### Coverage
|
|
@@ -152,26 +191,31 @@ macOS. See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a PR.
|
|
|
152
191
|
MPLBACKEND=Agg pytest -q --cov=mathematicskit --cov-report=term
|
|
153
192
|
```
|
|
154
193
|
|
|
155
|
-
|
|
194
|
+
1568 tests, 96% line coverage overall (94% excluding the test files
|
|
195
|
+
themselves). Per-subpackage coverage, excluding tests:
|
|
156
196
|
|
|
157
197
|
| Subpackage | Coverage | | Subpackage | Coverage |
|
|
158
198
|
|:--|--:|---|:--|--:|
|
|
159
|
-
| `abstract_algebra` | 97% | | `
|
|
160
|
-
| `calculus` |
|
|
161
|
-
| `combinatorics` |
|
|
162
|
-
| `
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
199
|
+
| `abstract_algebra` | 97% | | `numerical_analysis` | 95% |
|
|
200
|
+
| `calculus` | 93% | | `ode_dynamics` | 85% |
|
|
201
|
+
| `combinatorics` | 96% | | `optimization` | 99% |
|
|
202
|
+
| `complex_analysis` | 99% | | `pde` | 94% |
|
|
203
|
+
| `fractals_chaos` | 83% | | `probability` | 98% |
|
|
204
|
+
| `geometry` | 99% | | `special_functions` | 99% |
|
|
205
|
+
| `graph_theory` | 99% | | `statistics` | 99% |
|
|
206
|
+
| `linalg` | 94% | | `integrators` | 41% |
|
|
207
|
+
| `number_theory` | 97% | | `constants` | 100% |
|
|
168
208
|
|
|
169
209
|
`visualizers/` modules are smoke-tested only (correct return type/shape,
|
|
170
210
|
or that `anim.save()` succeeds) rather than covered line-by-line, per the
|
|
171
|
-
testing convention in [CLAUDE.md](CLAUDE.md). `integrators`
|
|
172
|
-
because
|
|
173
|
-
|
|
174
|
-
|
|
211
|
+
testing convention in [CLAUDE.md](CLAUDE.md). `integrators` looks low
|
|
212
|
+
only because its bodies are `@njit`-compiled, and coverage cannot trace
|
|
213
|
+
compiled code; every integrator is tested directly, and with the JIT
|
|
214
|
+
disabled the subpackage is fully covered:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
NUMBA_DISABLE_JIT=1 MPLBACKEND=Agg pytest -q mathematicskit/integrators --cov=mathematicskit.integrators
|
|
218
|
+
```
|
|
175
219
|
|
|
176
220
|
## Docs
|
|
177
221
|
|
|
@@ -8,50 +8,68 @@
|
|
|
8
8
|
| Code style | [](https://github.com/astral-sh/ruff) |
|
|
9
9
|
| Downloads | [](https://pepy.tech/project/mathematicskit) [](https://pepy.tech/project/mathematicskit) |
|
|
10
10
|
| Community | [](https://github.com/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit/graphs/contributors) [](https://github.com/cpoli/mathematicskit/commits/main) |
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
breakthroughs in
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
11
|
+
| Try it online | [](https://colab.research.google.com/github/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) [](https://mybinder.org/v2/gh/cpoli/mathematicskit/main?labpath=notebooks%2Fquickstart.ipynb) [](https://cpoli.github.io/mathematicskit/lite/lab/) |
|
|
12
|
+
|
|
13
|
+
**See how the algorithms of computational mathematics actually work.**
|
|
14
|
+
mathematicskit is a Python toolkit for learning and teaching numerical
|
|
15
|
+
methods, dynamical systems, and discrete mathematics. Every iterative method
|
|
16
|
+
keeps its iterates, every result is an inspectable dataclass, every domain
|
|
17
|
+
ships plotting helpers, and each domain's docs walk through the field's
|
|
18
|
+
breakthroughs in historical order, each one linked to runnable code that
|
|
19
|
+
reproduces it.
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
- **For students:** watch Newton's method converge quadratically while
|
|
24
|
+
bisection converges linearly, see the Runge phenomenon appear, trace the
|
|
25
|
+
Feigenbaum route to chaos, all in a few lines each.
|
|
26
|
+
- **For instructors:** 16 domains, one consistent API, and hundreds of
|
|
27
|
+
gallery examples, each downloadable as a notebook or runnable in the
|
|
28
|
+
browser, ready to hand out as course material.
|
|
29
|
+
- **Built on numpy/scipy:** production-grade library routines under the
|
|
30
|
+
hood, with algorithms hand-rolled only where the steps themselves are
|
|
31
|
+
what you're learning (see [Design](#design)).
|
|
32
|
+
|
|
33
|
+
mathematicskit is part of a family of packages --
|
|
34
|
+
[physicskit](https://github.com/cpoli/physicskit), **mathematicskit**
|
|
35
|
+
and [chemistrykit](https://github.com/cpoli/chemistrykit) -- that share
|
|
36
|
+
the same architecture, API conventions, and history-driven documentation.
|
|
34
37
|
|
|
35
38
|
## Install
|
|
36
39
|
|
|
37
40
|
```bash
|
|
38
|
-
|
|
39
|
-
pip install
|
|
41
|
+
pip install "mathematicskit[fast]" # with numba JIT acceleration (recommended)
|
|
42
|
+
pip install mathematicskit # pure numpy/scipy/matplotlib, e.g. for Pyodide/JupyterLite
|
|
40
43
|
```
|
|
41
44
|
|
|
42
|
-
|
|
43
|
-
already taken by an unrelated package)
|
|
44
|
-
|
|
45
|
+
Then `import mathematicskit as mk`. (The shorter name `mathkit` was
|
|
46
|
+
already taken on PyPI by an unrelated package.) The `fast` extra adds
|
|
47
|
+
[numba](https://numba.pydata.org/), which compiles the inner loops of
|
|
48
|
+
`ode_dynamics`, `fractals_chaos`, `pde`, and `integrators`. Without it
|
|
49
|
+
those kernels run as plain Python: same results, slower.
|
|
50
|
+
|
|
51
|
+
For development: `pip install -e ".[dev]"` (see [CONTRIBUTING.md](CONTRIBUTING.md)).
|
|
45
52
|
|
|
46
53
|
## Quick start
|
|
47
54
|
|
|
48
55
|
```python
|
|
56
|
+
import numpy as np
|
|
49
57
|
import mathematicskit as mk
|
|
58
|
+
from mathematicskit.numerical_analysis.visualizers import plot_convergence_history
|
|
59
|
+
|
|
60
|
+
f, fprime = (lambda x: x**2 - 2.0), (lambda x: 2.0 * x)
|
|
61
|
+
newton = mk.numerical_analysis.NewtonRaphson(f, fprime, x0=3.0, tol=1e-14).solve()
|
|
62
|
+
bisection = mk.numerical_analysis.Bisection(f, 0.0, 3.0, tol=1e-14).solve()
|
|
63
|
+
print(len(newton.history), len(bisection.history)) # 8 iterates vs. 49
|
|
50
64
|
|
|
51
|
-
|
|
52
|
-
|
|
65
|
+
ax = plot_convergence_history(bisection, root_exact=np.sqrt(2))
|
|
66
|
+
plot_convergence_history(newton, root_exact=np.sqrt(2), ax=ax)
|
|
67
|
+
ax.legend()
|
|
53
68
|
```
|
|
54
69
|
|
|
70
|
+
The [quickstart notebook](https://github.com/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) tours six domains in
|
|
71
|
+
ten minutes. Open it in Colab or Binder using the badges above.
|
|
72
|
+
|
|
55
73
|
## Subpackages
|
|
56
74
|
|
|
57
75
|
Domain subpackages, each with runnable examples linked below:
|
|
@@ -60,16 +78,18 @@ Domain subpackages, each with runnable examples linked below:
|
|
|
60
78
|
- [`mathematicskit.linalg`](https://cpoli.github.io/mathematicskit/api/gallery/linalg/) -- LU/QR/Cholesky decompositions and eigenvalue computation via `scipy.linalg`/`numpy.linalg`, power/inverse iteration (hand-rolled), SVD, conjugate gradient and GMRES via `scipy.sparse.linalg`, and least-squares stability (normal equations vs. QR vs. `numpy.linalg.lstsq`).
|
|
61
79
|
- [`mathematicskit.calculus`](https://cpoli.github.io/mathematicskit/api/gallery/calculus/) -- finite-difference derivatives with Richardson extrapolation (hand-rolled), `scipy.integrate`-backed trapezoidal/Simpson/Gauss-Legendre/adaptive quadrature, forward-mode (dual numbers) and reverse-mode (backpropagation) automatic differentiation (hand-rolled), and Taylor/Maclaurin series.
|
|
62
80
|
- [`mathematicskit.ode_dynamics`](https://cpoli.github.io/mathematicskit/api/gallery/ode_dynamics/) -- Jacobian-linearization fixed-point stability (node/saddle/spiral/center), phase portraits, the logistic map's Feigenbaum route to chaos, saddle-node/pitchfork/Hopf bifurcation normal forms, the Van der Pol limit cycle, and Poincare sections of the driven Duffing oscillator.
|
|
81
|
+
- [`mathematicskit.pde`](https://cpoli.github.io/mathematicskit/api/gallery/pde/) -- the heat equation in 1D and 2D by the method of lines on `mathematicskit.integrators` and by the theta-method family (FTCS, Crank-Nicolson, backward Euler via `scipy.sparse.linalg.splu`); the wave equation with symplectic leapfrog stepping against d'Alembert's solution; upwind, Lax-Friedrichs and Lax-Wendroff advection; Poisson/Laplace problems solved with `scipy.sparse.linalg.spsolve` or `mathematicskit.linalg`'s CG/Jacobi/Gauss-Seidel/SOR; CFL checks and von Neumann amplification factors; and Fourier (`numpy.fft`) and Chebyshev spectral methods.
|
|
63
82
|
- [`mathematicskit.fractals_chaos`](https://cpoli.github.io/mathematicskit/api/gallery/fractals_chaos/) -- Lyapunov exponent estimation, box-counting fractal dimension, Numba-accelerated Mandelbrot/Julia set generation, iterated function systems (Barnsley fern, Sierpinski triangle/carpet), and cellular automata (Wolfram rules, Conway's Game of Life).
|
|
64
83
|
- [`mathematicskit.optimization`](https://cpoli.github.io/mathematicskit/api/gallery/optimization/) -- gradient descent and nonlinear conjugate gradient (hand-rolled, iterate-path-exposing), Newton's method and BFGS via `scipy.optimize.minimize`, Lagrange multipliers and KKT-condition verification, a quadratic-penalty method, and linear programming via `scipy.optimize.linprog`.
|
|
65
84
|
- [`mathematicskit.probability`](https://cpoli.github.io/mathematicskit/api/gallery/probability/) -- binomial/Poisson/geometric/uniform/exponential/normal/gamma distributions via `scipy.stats` (plus mathematicskit's own MGFs), Monte Carlo integration with variance reduction (importance sampling, control variates), Law of Large Numbers/Central Limit Theorem simulation, and discrete-time Markov chains.
|
|
66
85
|
- [`mathematicskit.statistics`](https://cpoli.github.io/mathematicskit/api/gallery/statistics/) -- descriptive statistics, z/t/chi-square hypothesis tests and one-way ANOVA, confidence intervals for means/proportions/variances, OLS linear regression with residual diagnostics, and bootstrap resampling via `scipy.stats.bootstrap`.
|
|
67
86
|
- [`mathematicskit.number_theory`](https://cpoli.github.io/mathematicskit/api/gallery/number_theory/) -- the extended Euclidean algorithm and modular inverses, fast modular exponentiation, primality testing (trial division, Miller-Rabin) and prime generation, the Chinese Remainder Theorem, continued fractions and best rational approximations, Euler's totient/Mobius/divisor-sum functions, and linear/Pell Diophantine equation solvers (hand-rolled -- exact-integer number theory has no `numpy`/`scipy` equivalent).
|
|
68
87
|
- [`mathematicskit.combinatorics`](https://cpoli.github.io/mathematicskit/api/gallery/combinatorics/) -- permutation/combination counting via `scipy.special.perm`/`comb` (sequence generation via `itertools`), a hand-rolled Pascal's triangle, integer partitions and Young/Ferrers diagrams, the inclusion-exclusion principle and derangements, and Stirling/Catalan/Bell numbers (hand-rolled -- no scipy/numpy equivalent).
|
|
88
|
+
- [`mathematicskit.complex_analysis`](https://cpoli.github.io/mathematicskit/api/gallery/complex_analysis/) -- the Cauchy-Riemann equations, contour integrals via `scipy.integrate.quad` (`complex_func=True`), winding numbers and Cauchy's integral formula, residues (periodic trapezoidal rule), the residue theorem and the argument principle, conformal maps (Möbius transformations, Joukowski airfoils), and domain coloring.
|
|
69
89
|
- [`mathematicskit.graph_theory`](https://cpoli.github.io/mathematicskit/api/gallery/graph_theory/) -- a lightweight own graph container (no `networkx`); shortest paths (Dijkstra/Bellman-Ford/Floyd-Warshall) and minimum spanning tree (Kruskal) via `scipy.sparse.csgraph`, with a hand-rolled Prim's kept for comparison; maximum flow/minimum cut via `scipy.sparse.csgraph.maximum_flow`; hand-rolled graph coloring (greedy, exact backtracking); and spectral graph theory (Laplacian via scipy, eigendecomposition via `numpy.linalg.eigh`).
|
|
70
90
|
- [`mathematicskit.abstract_algebra`](https://cpoli.github.io/mathematicskit/api/gallery/abstract_algebra/) -- cyclic and permutation groups with Cayley tables and group-property checks, subgroup/coset enumeration, finite field arithmetic (`GF(p)`/`GF(p^n)` via irreducible polynomials), and polynomial ring arithmetic over Z/Q/finite fields (hand-rolled throughout -- no scipy/numpy equivalent).
|
|
71
91
|
- [`mathematicskit.geometry`](https://cpoli.github.io/mathematicskit/api/gallery/geometry/) -- convex hull via `scipy.spatial.ConvexHull` (with a hand-rolled Graham scan comparison), Delaunay triangulation/Voronoi diagrams via `scipy.spatial`, hand-rolled segment intersection and point-in-polygon tests, polygon area/centroid via the shoelace formula, and curvature/arc-length/the Frenet-Serret frame for parametric curves.
|
|
72
|
-
- [`mathematicskit.special_functions`](https://cpoli.github.io/mathematicskit/api/gallery/special_functions/) -- the gamma/beta functions and Bessel functions via `scipy.special`, orthogonal polynomial families (Legendre/Chebyshev/Hermite/Laguerre) via `numpy.polynomial` with numerically-verified orthogonality,
|
|
92
|
+
- [`mathematicskit.special_functions`](https://cpoli.github.io/mathematicskit/api/gallery/special_functions/) -- the gamma/beta functions and Bessel functions via `scipy.special`, orthogonal polynomial families (Legendre/Chebyshev/Hermite/Laguerre) via `numpy.polynomial` with numerically-verified orthogonality, the discrete Fourier transform via `numpy.fft` alongside a hand-rolled naive-DFT-vs-radix-2-FFT pedagogical speed comparison, and signal processing: direct/FFT convolution and Butterworth/Chebyshev/window-FIR filters via `scipy.signal`, the Z-transform with partial-fraction inversion, the Laplace transform with hand-rolled Talbot/Gaver-Stehfest numerical inversion, and hand-rolled Daubechies wavelets, the discrete wavelet transform, and the Morlet continuous wavelet transform (no numpy/scipy equivalent since scipy 1.15).
|
|
73
93
|
|
|
74
94
|
Shared infrastructure, used across the subpackages above rather than
|
|
75
95
|
standalone toolkits:
|
|
@@ -80,6 +100,20 @@ standalone toolkits:
|
|
|
80
100
|
leapfrog, Yoshida4, adaptive Dormand-Prince), used by
|
|
81
101
|
`mathematicskit.ode_dynamics`.
|
|
82
102
|
|
|
103
|
+
## Design
|
|
104
|
+
|
|
105
|
+
mathematicskit calls `numpy`/`scipy` directly for anything they already
|
|
106
|
+
implement (decompositions, eigensolvers, quadrature, statistical
|
|
107
|
+
distributions, optimization routines, and more), and hand-rolls an
|
|
108
|
+
algorithm only where no `numpy`/`scipy` equivalent exists (e.g. graph
|
|
109
|
+
algorithms, finite fields, modular arithmetic) or where the
|
|
110
|
+
algorithm's own iterate behavior is the pedagogical subject (e.g.
|
|
111
|
+
root-finder convergence history, autodiff). No hard dependency on
|
|
112
|
+
`networkx`, `cvxpy`, or SageMath. The ODE integrators are shared across
|
|
113
|
+
domains.
|
|
114
|
+
|
|
115
|
+
The public API follows the [stability and deprecation policy](CONTRIBUTING.md#api-stability-and-deprecation-policy).
|
|
116
|
+
|
|
83
117
|
## Test
|
|
84
118
|
|
|
85
119
|
Tests live alongside each subpackage, at `mathematicskit/<name>/tests/`.
|
|
@@ -93,7 +127,7 @@ MPLBACKEND=Agg pytest --doctest-modules mathematicskit --ignore-glob="*/tests/*"
|
|
|
93
127
|
```
|
|
94
128
|
|
|
95
129
|
Both commands, plus `ruff check`/`ruff format --check`, run in CI on
|
|
96
|
-
every PR (`.github/workflows/ci.yml`) across Python 3.
|
|
130
|
+
every PR (`.github/workflows/ci.yml`) across Python 3.10-3.14 on Linux and
|
|
97
131
|
macOS. See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a PR.
|
|
98
132
|
|
|
99
133
|
### Coverage
|
|
@@ -102,26 +136,31 @@ macOS. See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a PR.
|
|
|
102
136
|
MPLBACKEND=Agg pytest -q --cov=mathematicskit --cov-report=term
|
|
103
137
|
```
|
|
104
138
|
|
|
105
|
-
|
|
139
|
+
1568 tests, 96% line coverage overall (94% excluding the test files
|
|
140
|
+
themselves). Per-subpackage coverage, excluding tests:
|
|
106
141
|
|
|
107
142
|
| Subpackage | Coverage | | Subpackage | Coverage |
|
|
108
143
|
|:--|--:|---|:--|--:|
|
|
109
|
-
| `abstract_algebra` | 97% | | `
|
|
110
|
-
| `calculus` |
|
|
111
|
-
| `combinatorics` |
|
|
112
|
-
| `
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
116
|
-
| `
|
|
117
|
-
| `
|
|
144
|
+
| `abstract_algebra` | 97% | | `numerical_analysis` | 95% |
|
|
145
|
+
| `calculus` | 93% | | `ode_dynamics` | 85% |
|
|
146
|
+
| `combinatorics` | 96% | | `optimization` | 99% |
|
|
147
|
+
| `complex_analysis` | 99% | | `pde` | 94% |
|
|
148
|
+
| `fractals_chaos` | 83% | | `probability` | 98% |
|
|
149
|
+
| `geometry` | 99% | | `special_functions` | 99% |
|
|
150
|
+
| `graph_theory` | 99% | | `statistics` | 99% |
|
|
151
|
+
| `linalg` | 94% | | `integrators` | 41% |
|
|
152
|
+
| `number_theory` | 97% | | `constants` | 100% |
|
|
118
153
|
|
|
119
154
|
`visualizers/` modules are smoke-tested only (correct return type/shape,
|
|
120
155
|
or that `anim.save()` succeeds) rather than covered line-by-line, per the
|
|
121
|
-
testing convention in [CLAUDE.md](CLAUDE.md). `integrators`
|
|
122
|
-
because
|
|
123
|
-
|
|
124
|
-
|
|
156
|
+
testing convention in [CLAUDE.md](CLAUDE.md). `integrators` looks low
|
|
157
|
+
only because its bodies are `@njit`-compiled, and coverage cannot trace
|
|
158
|
+
compiled code; every integrator is tested directly, and with the JIT
|
|
159
|
+
disabled the subpackage is fully covered:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
NUMBA_DISABLE_JIT=1 MPLBACKEND=Agg pytest -q mathematicskit/integrators --cov=mathematicskit.integrators
|
|
163
|
+
```
|
|
125
164
|
|
|
126
165
|
## Docs
|
|
127
166
|
|
|
@@ -9,10 +9,15 @@ Domains are added incrementally; see ``__all__`` for what's currently
|
|
|
9
9
|
implemented, and CHANGELOG.md for the full roadmap.
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
# Defined before the subpackage imports: each subpackage re-exports it via
|
|
13
|
+
# ``from mathematicskit import __version__`` while this module is still loading.
|
|
14
|
+
__version__ = "0.4.0"
|
|
15
|
+
|
|
16
|
+
from mathematicskit import ( # noqa: E402
|
|
13
17
|
abstract_algebra,
|
|
14
18
|
calculus,
|
|
15
19
|
combinatorics,
|
|
20
|
+
complex_analysis,
|
|
16
21
|
constants,
|
|
17
22
|
fractals_chaos,
|
|
18
23
|
geometry,
|
|
@@ -23,17 +28,17 @@ from mathematicskit import (
|
|
|
23
28
|
numerical_analysis,
|
|
24
29
|
ode_dynamics,
|
|
25
30
|
optimization,
|
|
31
|
+
pde,
|
|
26
32
|
probability,
|
|
27
33
|
special_functions,
|
|
28
34
|
statistics,
|
|
29
35
|
)
|
|
30
36
|
|
|
31
|
-
__version__ = "0.1.0"
|
|
32
|
-
|
|
33
37
|
__all__ = [
|
|
34
38
|
"abstract_algebra",
|
|
35
39
|
"calculus",
|
|
36
40
|
"combinatorics",
|
|
41
|
+
"complex_analysis",
|
|
37
42
|
"constants",
|
|
38
43
|
"fractals_chaos",
|
|
39
44
|
"geometry",
|
|
@@ -44,6 +49,7 @@ __all__ = [
|
|
|
44
49
|
"numerical_analysis",
|
|
45
50
|
"ode_dynamics",
|
|
46
51
|
"optimization",
|
|
52
|
+
"pde",
|
|
47
53
|
"probability",
|
|
48
54
|
"special_functions",
|
|
49
55
|
"statistics",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Optional Numba acceleration.
|
|
2
|
+
|
|
3
|
+
Numba is an optional dependency (``pip install mathematicskit[fast]``).
|
|
4
|
+
When it is installed, :func:`njit` is :func:`numba.njit`. When it is not
|
|
5
|
+
(including in Pyodide/JupyterLite, where Numba cannot run), :func:`njit`
|
|
6
|
+
is a no-op decorator: every kernel runs as plain Python/NumPy with
|
|
7
|
+
identical results, only slower. Both call forms are supported --
|
|
8
|
+
``@njit`` and ``@njit(cache=True)`` -- so decorated code never needs to
|
|
9
|
+
know which is in use.
|
|
10
|
+
|
|
11
|
+
Examples
|
|
12
|
+
--------
|
|
13
|
+
>>> from mathematicskit.integrators import njit
|
|
14
|
+
>>> @njit
|
|
15
|
+
... def square(x):
|
|
16
|
+
... return x * x
|
|
17
|
+
>>> square(3.0)
|
|
18
|
+
9.0
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
from collections.abc import Callable
|
|
24
|
+
from typing import Any
|
|
25
|
+
|
|
26
|
+
__all__ = ["HAS_NUMBA", "njit"]
|
|
27
|
+
|
|
28
|
+
try:
|
|
29
|
+
from numba import njit as _numba_njit
|
|
30
|
+
|
|
31
|
+
HAS_NUMBA = True
|
|
32
|
+
except ImportError: # pragma: no cover - exercised only without numba installed
|
|
33
|
+
HAS_NUMBA = False
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _identity_njit(*args: Any, **kwargs: Any) -> Any:
|
|
37
|
+
"""Stand-in for :func:`numba.njit` that returns the function unchanged."""
|
|
38
|
+
if len(args) == 1 and callable(args[0]) and not kwargs:
|
|
39
|
+
return args[0]
|
|
40
|
+
|
|
41
|
+
def decorator(func: Callable[..., Any]) -> Callable[..., Any]:
|
|
42
|
+
return func
|
|
43
|
+
|
|
44
|
+
return decorator
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
njit: Callable[..., Any] = _numba_njit if HAS_NUMBA else _identity_njit
|