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.
Files changed (540) hide show
  1. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/PKG-INFO +101 -57
  2. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/README.md +85 -46
  3. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/__init__.py +9 -3
  4. mathematicskit-0.4.0/mathematicskit/_jit.py +47 -0
  5. mathematicskit-0.4.0/mathematicskit/abstract_algebra/__init__.py +93 -0
  6. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/core/base.py +50 -3
  7. mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/__init__.py +60 -0
  8. mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/actions.py +92 -0
  9. mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/codes.py +103 -0
  10. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/systems/finite_fields.py +12 -1
  11. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/systems/groups.py +110 -1
  12. mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/homomorphisms.py +117 -0
  13. mathematicskit-0.4.0/mathematicskit/abstract_algebra/systems/structure.py +399 -0
  14. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/systems/subgroups.py +55 -42
  15. mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_actions.py +39 -0
  16. mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_codes.py +39 -0
  17. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_finite_fields.py +17 -0
  18. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_groups.py +39 -0
  19. mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_homomorphisms.py +39 -0
  20. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_polynomial_ring.py +13 -0
  21. mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_structure.py +105 -0
  22. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_subgroups.py +35 -0
  23. mathematicskit-0.4.0/mathematicskit/calculus/__init__.py +77 -0
  24. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/core/base.py +16 -2
  25. mathematicskit-0.4.0/mathematicskit/calculus/systems/__init__.py +54 -0
  26. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/systems/autodiff.py +2 -2
  27. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/systems/dual_numbers.py +1 -1
  28. mathematicskit-0.4.0/mathematicskit/calculus/systems/exhaustion.py +59 -0
  29. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/systems/finite_differences.py +38 -2
  30. mathematicskit-0.4.0/mathematicskit/calculus/systems/quadrature.py +460 -0
  31. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/systems/taylor_series.py +47 -19
  32. mathematicskit-0.4.0/mathematicskit/calculus/tests/test_exhaustion.py +38 -0
  33. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_finite_differences.py +20 -0
  34. mathematicskit-0.4.0/mathematicskit/calculus/tests/test_quadrature_rules.py +90 -0
  35. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_taylor_series.py +14 -7
  36. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/utils/series_utils.py +1 -1
  37. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/__init__.py +39 -4
  38. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/core/base.py +15 -1
  39. mathematicskit-0.4.0/mathematicskit/combinatorics/systems/__init__.py +60 -0
  40. mathematicskit-0.4.0/mathematicskit/combinatorics/systems/designs.py +114 -0
  41. mathematicskit-0.4.0/mathematicskit/combinatorics/systems/extremal.py +126 -0
  42. mathematicskit-0.4.0/mathematicskit/combinatorics/systems/matching.py +85 -0
  43. mathematicskit-0.4.0/mathematicskit/combinatorics/systems/necklaces.py +71 -0
  44. mathematicskit-0.4.0/mathematicskit/combinatorics/systems/sequences.py +149 -0
  45. mathematicskit-0.4.0/mathematicskit/combinatorics/systems/trees.py +116 -0
  46. mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_designs.py +36 -0
  47. mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_extremal.py +63 -0
  48. mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_matching.py +30 -0
  49. mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_necklaces.py +23 -0
  50. mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_sequences.py +50 -0
  51. mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_trees.py +24 -0
  52. mathematicskit-0.4.0/mathematicskit/complex_analysis/__init__.py +58 -0
  53. mathematicskit-0.4.0/mathematicskit/complex_analysis/core/__init__.py +13 -0
  54. mathematicskit-0.4.0/mathematicskit/complex_analysis/core/base.py +129 -0
  55. mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/__init__.py +28 -0
  56. mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/conformal_maps.py +167 -0
  57. mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/contours.py +187 -0
  58. mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/domain_coloring.py +64 -0
  59. mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/holomorphic.py +77 -0
  60. mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/laurent.py +62 -0
  61. mathematicskit-0.4.0/mathematicskit/complex_analysis/systems/residues.py +173 -0
  62. mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_conformal_maps.py +88 -0
  63. mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_contours.py +60 -0
  64. mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_domain_coloring.py +44 -0
  65. mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_holomorphic.py +30 -0
  66. mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_laurent.py +43 -0
  67. mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_residues.py +68 -0
  68. mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_visualizers.py +29 -0
  69. mathematicskit-0.4.0/mathematicskit/complex_analysis/utils/__init__.py +5 -0
  70. mathematicskit-0.4.0/mathematicskit/complex_analysis/utils/grids.py +40 -0
  71. mathematicskit-0.4.0/mathematicskit/complex_analysis/visualizers/__init__.py +5 -0
  72. mathematicskit-0.4.0/mathematicskit/complex_analysis/visualizers/plots.py +91 -0
  73. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/__init__.py +20 -4
  74. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/__init__.py +14 -0
  75. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/box_counting.py +6 -4
  76. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/cellular_automata.py +1 -1
  77. mathematicskit-0.4.0/mathematicskit/fractals_chaos/systems/curves.py +229 -0
  78. mathematicskit-0.4.0/mathematicskit/fractals_chaos/systems/dla.py +90 -0
  79. mathematicskit-0.4.0/mathematicskit/fractals_chaos/systems/lsystems.py +101 -0
  80. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/lyapunov.py +1 -1
  81. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/mandelbrot_julia.py +1 -1
  82. mathematicskit-0.4.0/mathematicskit/fractals_chaos/systems/maps.py +49 -0
  83. mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_curves.py +76 -0
  84. mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_lsystems.py +35 -0
  85. mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_maps_and_dla.py +51 -0
  86. mathematicskit-0.4.0/mathematicskit/geometry/__init__.py +81 -0
  87. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/core/base.py +81 -1
  88. mathematicskit-0.4.0/mathematicskit/geometry/systems/__init__.py +39 -0
  89. mathematicskit-0.4.0/mathematicskit/geometry/systems/bezier.py +65 -0
  90. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/systems/convex_hull.py +9 -4
  91. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/systems/curves.py +1 -1
  92. mathematicskit-0.4.0/mathematicskit/geometry/systems/distances.py +38 -0
  93. mathematicskit-0.4.0/mathematicskit/geometry/systems/enclosing.py +82 -0
  94. mathematicskit-0.4.0/mathematicskit/geometry/systems/polygon.py +154 -0
  95. mathematicskit-0.4.0/mathematicskit/geometry/systems/polyhedra.py +56 -0
  96. mathematicskit-0.4.0/mathematicskit/geometry/systems/proximity.py +82 -0
  97. mathematicskit-0.4.0/mathematicskit/geometry/systems/simplification.py +64 -0
  98. mathematicskit-0.4.0/mathematicskit/geometry/systems/surfaces.py +146 -0
  99. mathematicskit-0.4.0/mathematicskit/geometry/tests/test_algorithms.py +96 -0
  100. mathematicskit-0.4.0/mathematicskit/geometry/tests/test_measurement.py +70 -0
  101. mathematicskit-0.4.0/mathematicskit/geometry/tests/test_surfaces.py +45 -0
  102. mathematicskit-0.4.0/mathematicskit/graph_theory/__init__.py +98 -0
  103. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/core/base.py +94 -3
  104. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/__init__.py +38 -0
  105. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/assignment.py +44 -0
  106. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/coloring.py +7 -2
  107. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/components.py +62 -0
  108. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/enumeration.py +49 -0
  109. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/extremal.py +101 -0
  110. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/hamiltonian.py +67 -0
  111. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/matching.py +83 -0
  112. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/max_flow.py +10 -0
  113. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/ranking.py +68 -0
  114. mathematicskit-0.4.0/mathematicskit/graph_theory/systems/search.py +77 -0
  115. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/spanning_tree.py +2 -2
  116. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_coloring.py +9 -0
  117. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_max_flow.py +19 -0
  118. mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_new_algorithms.py +174 -0
  119. mathematicskit-0.4.0/mathematicskit/graph_theory/utils/__init__.py +21 -0
  120. mathematicskit-0.4.0/mathematicskit/graph_theory/utils/generators.py +197 -0
  121. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/integrators/__init__.py +25 -1
  122. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/integrators/adaptive.py +1 -1
  123. mathematicskit-0.4.0/mathematicskit/integrators/bvp.py +124 -0
  124. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/integrators/fixed_step.py +3 -2
  125. mathematicskit-0.4.0/mathematicskit/integrators/implicit.py +258 -0
  126. mathematicskit-0.4.0/mathematicskit/integrators/tests/test_integrators.py +314 -0
  127. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/__init__.py +33 -2
  128. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/core/base.py +75 -9
  129. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/__init__.py +21 -0
  130. mathematicskit-0.4.0/mathematicskit/linalg/systems/cramer.py +68 -0
  131. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/eigen.py +4 -2
  132. mathematicskit-0.4.0/mathematicskit/linalg/systems/gershgorin.py +59 -0
  133. mathematicskit-0.4.0/mathematicskit/linalg/systems/lanczos.py +73 -0
  134. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/lu.py +14 -2
  135. mathematicskit-0.4.0/mathematicskit/linalg/systems/matrix_polynomial.py +84 -0
  136. mathematicskit-0.4.0/mathematicskit/linalg/systems/pseudoinverse.py +91 -0
  137. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/qr.py +10 -4
  138. mathematicskit-0.4.0/mathematicskit/linalg/systems/schur.py +78 -0
  139. mathematicskit-0.4.0/mathematicskit/linalg/systems/stationary.py +224 -0
  140. mathematicskit-0.4.0/mathematicskit/linalg/tests/test_classical.py +105 -0
  141. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_lu.py +22 -1
  142. mathematicskit-0.4.0/mathematicskit/linalg/tests/test_stationary_and_spectral.py +106 -0
  143. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/__init__.py +27 -5
  144. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/core/base.py +39 -7
  145. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/__init__.py +17 -1
  146. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/continued_fractions.py +42 -11
  147. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/crt.py +1 -1
  148. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/diophantine.py +8 -0
  149. mathematicskit-0.4.0/mathematicskit/number_theory/systems/factorization.py +74 -0
  150. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/primality.py +57 -6
  151. mathematicskit-0.4.0/mathematicskit/number_theory/systems/prime_distribution.py +109 -0
  152. mathematicskit-0.4.0/mathematicskit/number_theory/systems/quadratic_residues.py +143 -0
  153. mathematicskit-0.4.0/mathematicskit/number_theory/systems/sums_of_squares.py +104 -0
  154. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/totient.py +1 -1
  155. mathematicskit-0.4.0/mathematicskit/number_theory/systems/zeta.py +58 -0
  156. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_continued_fractions.py +32 -0
  157. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_crt.py +1 -1
  158. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_diophantine.py +11 -0
  159. mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_factorization.py +48 -0
  160. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_primality.py +31 -0
  161. mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_prime_distribution.py +50 -0
  162. mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_quadratic_residues.py +66 -0
  163. mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_sums_of_squares.py +53 -0
  164. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/__init__.py +27 -7
  165. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/core/base.py +43 -0
  166. mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/__init__.py +37 -0
  167. mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/acceleration.py +57 -0
  168. mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/approximation.py +265 -0
  169. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/interpolation.py +67 -2
  170. mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/polynomials.py +141 -0
  171. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/regression.py +4 -1
  172. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/root_finding.py +157 -7
  173. mathematicskit-0.4.0/mathematicskit/numerical_analysis/systems/summation.py +68 -0
  174. mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_acceleration.py +31 -0
  175. mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_approximation.py +98 -0
  176. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_interpolation.py +33 -1
  177. mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_polynomials.py +71 -0
  178. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_root_finding.py +50 -1
  179. mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_summation.py +38 -0
  180. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/utils/error_analysis.py +6 -4
  181. mathematicskit-0.4.0/mathematicskit/ode_dynamics/__init__.py +76 -0
  182. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/core/base.py +40 -3
  183. mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/__init__.py +58 -0
  184. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/bifurcations.py +2 -2
  185. mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/chaotic_flows.py +186 -0
  186. mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/chemical_oscillators.py +97 -0
  187. mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/epidemics.py +156 -0
  188. mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/excitable.py +133 -0
  189. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/limit_cycles.py +56 -4
  190. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/logistic_map.py +2 -1
  191. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/phase_portrait.py +2 -2
  192. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/poincare.py +1 -1
  193. mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/population.py +186 -0
  194. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/systems/stability.py +89 -14
  195. mathematicskit-0.4.0/mathematicskit/ode_dynamics/systems/synchronization.py +149 -0
  196. mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_chaotic_flows.py +59 -0
  197. mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_chemical_oscillators.py +30 -0
  198. mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_epidemics.py +43 -0
  199. mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_excitable.py +37 -0
  200. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_limit_cycles.py +13 -1
  201. mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_population.py +53 -0
  202. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_stability.py +24 -1
  203. mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_synchronization.py +48 -0
  204. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/utils/period_estimation.py +1 -2
  205. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/__init__.py +40 -5
  206. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/core/base.py +93 -2
  207. mathematicskit-0.4.0/mathematicskit/optimization/systems/__init__.py +37 -0
  208. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/systems/conjugate_gradient.py +1 -1
  209. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/systems/constrained.py +6 -1
  210. mathematicskit-0.4.0/mathematicskit/optimization/systems/direct_search.py +78 -0
  211. mathematicskit-0.4.0/mathematicskit/optimization/systems/dynamic_programming.py +72 -0
  212. mathematicskit-0.4.0/mathematicskit/optimization/systems/frank_wolfe.py +104 -0
  213. mathematicskit-0.4.0/mathematicskit/optimization/systems/game_theory.py +80 -0
  214. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/systems/gradient_descent.py +1 -1
  215. mathematicskit-0.4.0/mathematicskit/optimization/systems/least_squares.py +77 -0
  216. mathematicskit-0.4.0/mathematicskit/optimization/systems/linear_programming.py +131 -0
  217. mathematicskit-0.4.0/mathematicskit/optimization/systems/momentum.py +152 -0
  218. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/systems/newton_quasi_newton.py +2 -1
  219. mathematicskit-0.4.0/mathematicskit/optimization/systems/scalar_search.py +78 -0
  220. mathematicskit-0.4.0/mathematicskit/optimization/systems/stochastic.py +82 -0
  221. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_direct_search.py +28 -0
  222. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_dynamic_programming.py +45 -0
  223. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_frank_wolfe.py +45 -0
  224. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_game_theory.py +42 -0
  225. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_least_squares.py +40 -0
  226. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_linear_programming.py +71 -0
  227. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_momentum.py +61 -0
  228. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_scalar_search.py +38 -0
  229. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_stochastic.py +30 -0
  230. mathematicskit-0.4.0/mathematicskit/optimization/tests/test_test_functions.py +69 -0
  231. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/utils/comparison.py +1 -1
  232. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/utils/line_search.py +1 -1
  233. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/utils/test_functions.py +22 -3
  234. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/visualizers/plots.py +6 -4
  235. mathematicskit-0.4.0/mathematicskit/pde/__init__.py +93 -0
  236. mathematicskit-0.4.0/mathematicskit/pde/core/__init__.py +5 -0
  237. mathematicskit-0.4.0/mathematicskit/pde/core/base.py +246 -0
  238. mathematicskit-0.4.0/mathematicskit/pde/systems/__init__.py +63 -0
  239. mathematicskit-0.4.0/mathematicskit/pde/systems/advection.py +138 -0
  240. mathematicskit-0.4.0/mathematicskit/pde/systems/conservation_laws.py +199 -0
  241. mathematicskit-0.4.0/mathematicskit/pde/systems/finite_elements.py +100 -0
  242. mathematicskit-0.4.0/mathematicskit/pde/systems/heat.py +371 -0
  243. mathematicskit-0.4.0/mathematicskit/pde/systems/multigrid.py +145 -0
  244. mathematicskit-0.4.0/mathematicskit/pde/systems/poisson.py +191 -0
  245. mathematicskit-0.4.0/mathematicskit/pde/systems/spectral.py +372 -0
  246. mathematicskit-0.4.0/mathematicskit/pde/systems/stability.py +284 -0
  247. mathematicskit-0.4.0/mathematicskit/pde/systems/wave.py +208 -0
  248. mathematicskit-0.4.0/mathematicskit/pde/tests/test_fem_multigrid_shocks.py +140 -0
  249. mathematicskit-0.4.0/mathematicskit/pde/tests/test_heat.py +176 -0
  250. mathematicskit-0.4.0/mathematicskit/pde/tests/test_operators_and_stability.py +129 -0
  251. mathematicskit-0.4.0/mathematicskit/pde/tests/test_poisson_and_spectral.py +178 -0
  252. mathematicskit-0.4.0/mathematicskit/pde/tests/test_visualizers.py +38 -0
  253. mathematicskit-0.4.0/mathematicskit/pde/tests/test_wave_and_advection.py +109 -0
  254. mathematicskit-0.4.0/mathematicskit/pde/utils/__init__.py +5 -0
  255. mathematicskit-0.4.0/mathematicskit/pde/utils/operators.py +123 -0
  256. mathematicskit-0.4.0/mathematicskit/pde/visualizers/__init__.py +5 -0
  257. mathematicskit-0.4.0/mathematicskit/pde/visualizers/plots.py +118 -0
  258. mathematicskit-0.4.0/mathematicskit/probability/__init__.py +82 -0
  259. mathematicskit-0.4.0/mathematicskit/probability/core/__init__.py +21 -0
  260. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/core/base.py +67 -4
  261. mathematicskit-0.4.0/mathematicskit/probability/systems/__init__.py +48 -0
  262. mathematicskit-0.4.0/mathematicskit/probability/systems/bayes.py +80 -0
  263. mathematicskit-0.4.0/mathematicskit/probability/systems/branching.py +111 -0
  264. mathematicskit-0.4.0/mathematicskit/probability/systems/buffon.py +73 -0
  265. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/continuous.py +38 -2
  266. mathematicskit-0.4.0/mathematicskit/probability/systems/continuous_time_markov.py +81 -0
  267. mathematicskit-0.4.0/mathematicskit/probability/systems/inequalities.py +57 -0
  268. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/markov_chain.py +20 -12
  269. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/monte_carlo.py +1 -1
  270. mathematicskit-0.4.0/mathematicskit/probability/systems/queueing.py +52 -0
  271. mathematicskit-0.4.0/mathematicskit/probability/systems/st_petersburg.py +79 -0
  272. mathematicskit-0.4.0/mathematicskit/probability/systems/stochastic_processes.py +158 -0
  273. mathematicskit-0.4.0/mathematicskit/probability/tests/test_classical_problems.py +90 -0
  274. mathematicskit-0.4.0/mathematicskit/probability/tests/test_stochastic_processes.py +113 -0
  275. mathematicskit-0.4.0/mathematicskit/special_functions/__init__.py +143 -0
  276. mathematicskit-0.4.0/mathematicskit/special_functions/core/base.py +186 -0
  277. mathematicskit-0.4.0/mathematicskit/special_functions/systems/__init__.py +92 -0
  278. mathematicskit-0.4.0/mathematicskit/special_functions/systems/airy.py +46 -0
  279. mathematicskit-0.4.0/mathematicskit/special_functions/systems/convolution.py +176 -0
  280. mathematicskit-0.4.0/mathematicskit/special_functions/systems/elliptic.py +132 -0
  281. mathematicskit-0.4.0/mathematicskit/special_functions/systems/error_functions.py +93 -0
  282. mathematicskit-0.4.0/mathematicskit/special_functions/systems/filters.py +197 -0
  283. mathematicskit-0.4.0/mathematicskit/special_functions/systems/gamma_beta.py +160 -0
  284. mathematicskit-0.4.0/mathematicskit/special_functions/systems/hypergeometric.py +80 -0
  285. mathematicskit-0.4.0/mathematicskit/special_functions/systems/lambert_w.py +56 -0
  286. mathematicskit-0.4.0/mathematicskit/special_functions/systems/laplace_transform.py +216 -0
  287. mathematicskit-0.4.0/mathematicskit/special_functions/systems/mathieu.py +122 -0
  288. mathematicskit-0.4.0/mathematicskit/special_functions/systems/wavelets.py +272 -0
  289. mathematicskit-0.4.0/mathematicskit/special_functions/systems/z_transform.py +154 -0
  290. mathematicskit-0.4.0/mathematicskit/special_functions/systems/zeta.py +85 -0
  291. mathematicskit-0.4.0/mathematicskit/special_functions/tests/__init__.py +0 -0
  292. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_airy.py +49 -0
  293. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_convolution.py +64 -0
  294. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_elliptic.py +74 -0
  295. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_error_functions.py +65 -0
  296. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_filters.py +77 -0
  297. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/tests/test_gamma_beta.py +29 -0
  298. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_hypergeometric.py +66 -0
  299. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_lambert_w.py +47 -0
  300. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_laplace_transform.py +91 -0
  301. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_mathieu.py +56 -0
  302. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_visualizers.py +51 -0
  303. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_wavelets.py +93 -0
  304. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_z_transform.py +74 -0
  305. mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_zeta.py +44 -0
  306. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/utils/orthogonality.py +1 -1
  307. mathematicskit-0.4.0/mathematicskit/special_functions/visualizers/__init__.py +19 -0
  308. mathematicskit-0.4.0/mathematicskit/special_functions/visualizers/plots.py +196 -0
  309. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/__init__.py +41 -5
  310. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/core/base.py +121 -0
  311. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/__init__.py +20 -1
  312. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/bootstrap.py +1 -1
  313. mathematicskit-0.4.0/mathematicskit/statistics/systems/correlation.py +99 -0
  314. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/hypothesis_tests.py +10 -2
  315. mathematicskit-0.4.0/mathematicskit/statistics/systems/jackknife.py +62 -0
  316. mathematicskit-0.4.0/mathematicskit/statistics/systems/likelihood.py +95 -0
  317. mathematicskit-0.4.0/mathematicskit/statistics/systems/multiple_testing.py +86 -0
  318. mathematicskit-0.4.0/mathematicskit/statistics/systems/nonparametric.py +168 -0
  319. mathematicskit-0.4.0/mathematicskit/statistics/systems/shrinkage.py +64 -0
  320. mathematicskit-0.4.0/mathematicskit/statistics/tests/__init__.py +0 -0
  321. mathematicskit-0.4.0/mathematicskit/statistics/tests/test_correlation.py +45 -0
  322. mathematicskit-0.4.0/mathematicskit/statistics/tests/test_jackknife.py +28 -0
  323. mathematicskit-0.4.0/mathematicskit/statistics/tests/test_likelihood.py +58 -0
  324. mathematicskit-0.4.0/mathematicskit/statistics/tests/test_multiple_testing.py +43 -0
  325. mathematicskit-0.4.0/mathematicskit/statistics/tests/test_nonparametric.py +74 -0
  326. mathematicskit-0.4.0/mathematicskit/statistics/tests/test_shrinkage.py +36 -0
  327. mathematicskit-0.4.0/mathematicskit/tests/__init__.py +0 -0
  328. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/PKG-INFO +101 -57
  329. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/SOURCES.txt +200 -0
  330. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/requires.txt +6 -5
  331. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/pyproject.toml +38 -16
  332. mathematicskit-0.2.0/mathematicskit/abstract_algebra/__init__.py +0 -43
  333. mathematicskit-0.2.0/mathematicskit/abstract_algebra/systems/__init__.py +0 -23
  334. mathematicskit-0.2.0/mathematicskit/calculus/__init__.py +0 -48
  335. mathematicskit-0.2.0/mathematicskit/calculus/systems/__init__.py +0 -27
  336. mathematicskit-0.2.0/mathematicskit/calculus/systems/quadrature.py +0 -184
  337. mathematicskit-0.2.0/mathematicskit/combinatorics/systems/__init__.py +0 -29
  338. mathematicskit-0.2.0/mathematicskit/geometry/__init__.py +0 -42
  339. mathematicskit-0.2.0/mathematicskit/geometry/systems/__init__.py +0 -19
  340. mathematicskit-0.2.0/mathematicskit/geometry/systems/polygon.py +0 -73
  341. mathematicskit-0.2.0/mathematicskit/graph_theory/__init__.py +0 -47
  342. mathematicskit-0.2.0/mathematicskit/graph_theory/systems/__init__.py +0 -19
  343. mathematicskit-0.2.0/mathematicskit/graph_theory/utils/__init__.py +0 -5
  344. mathematicskit-0.2.0/mathematicskit/graph_theory/utils/generators.py +0 -111
  345. mathematicskit-0.2.0/mathematicskit/integrators/tests/test_integrators.py +0 -115
  346. mathematicskit-0.2.0/mathematicskit/numerical_analysis/systems/__init__.py +0 -22
  347. mathematicskit-0.2.0/mathematicskit/ode_dynamics/__init__.py +0 -44
  348. mathematicskit-0.2.0/mathematicskit/ode_dynamics/systems/__init__.py +0 -30
  349. mathematicskit-0.2.0/mathematicskit/optimization/systems/__init__.py +0 -19
  350. mathematicskit-0.2.0/mathematicskit/optimization/systems/linear_programming.py +0 -67
  351. mathematicskit-0.2.0/mathematicskit/optimization/tests/test_linear_programming.py +0 -37
  352. mathematicskit-0.2.0/mathematicskit/probability/__init__.py +0 -43
  353. mathematicskit-0.2.0/mathematicskit/probability/core/__init__.py +0 -5
  354. mathematicskit-0.2.0/mathematicskit/probability/systems/__init__.py +0 -24
  355. mathematicskit-0.2.0/mathematicskit/special_functions/__init__.py +0 -39
  356. mathematicskit-0.2.0/mathematicskit/special_functions/core/base.py +0 -38
  357. mathematicskit-0.2.0/mathematicskit/special_functions/systems/__init__.py +0 -22
  358. mathematicskit-0.2.0/mathematicskit/special_functions/systems/gamma_beta.py +0 -87
  359. mathematicskit-0.2.0/mathematicskit/special_functions/tests/test_visualizers.py +0 -20
  360. mathematicskit-0.2.0/mathematicskit/special_functions/visualizers/__init__.py +0 -5
  361. mathematicskit-0.2.0/mathematicskit/special_functions/visualizers/plots.py +0 -73
  362. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/LICENSE +0 -0
  363. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/systems/polynomial_ring.py +0 -0
  364. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/__init__.py +0 -0
  365. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/tests/test_visualizers.py +0 -0
  366. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/utils/__init__.py +0 -0
  367. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/utils/checks.py +0 -0
  368. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/visualizers/__init__.py +0 -0
  369. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/abstract_algebra/visualizers/plots.py +0 -0
  370. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/core/__init__.py +0 -0
  371. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/__init__.py +0 -0
  372. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_autodiff.py +0 -0
  373. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_dual_numbers.py +0 -0
  374. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_quadrature.py +0 -0
  375. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/tests/test_visualizers.py +0 -0
  376. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/utils/__init__.py +0 -0
  377. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/visualizers/__init__.py +0 -0
  378. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/calculus/visualizers/plots.py +0 -0
  379. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/core/__init__.py +0 -0
  380. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/counting.py +0 -0
  381. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/inclusion_exclusion.py +0 -0
  382. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/partitions.py +0 -0
  383. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/pascals_triangle.py +0 -0
  384. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/systems/special_numbers.py +0 -0
  385. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/__init__.py +0 -0
  386. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_counting.py +0 -0
  387. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_inclusion_exclusion.py +0 -0
  388. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_partitions.py +0 -0
  389. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_pascals_triangle.py +0 -0
  390. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_special_numbers.py +0 -0
  391. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/tests/test_visualizers.py +0 -0
  392. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/utils/__init__.py +0 -0
  393. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/utils/bell_number.py +0 -0
  394. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/visualizers/__init__.py +0 -0
  395. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/combinatorics/visualizers/plots.py +0 -0
  396. {mathematicskit-0.2.0/mathematicskit/fractals_chaos → mathematicskit-0.4.0/mathematicskit/complex_analysis}/tests/__init__.py +0 -0
  397. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/constants.py +0 -0
  398. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/core/__init__.py +0 -0
  399. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/core/base.py +0 -0
  400. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/systems/ifs.py +0 -0
  401. {mathematicskit-0.2.0/mathematicskit/geometry → mathematicskit-0.4.0/mathematicskit/fractals_chaos}/tests/__init__.py +0 -0
  402. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_box_counting.py +0 -0
  403. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_cellular_automata.py +0 -0
  404. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_ifs.py +0 -0
  405. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_lyapunov.py +0 -0
  406. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_mandelbrot_julia.py +0 -0
  407. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/tests/test_visualizers.py +0 -0
  408. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/utils/__init__.py +0 -0
  409. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/utils/ifs_utils.py +0 -0
  410. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/visualizers/__init__.py +0 -0
  411. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/fractals_chaos/visualizers/plots.py +0 -0
  412. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/core/__init__.py +0 -0
  413. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/systems/intersections.py +0 -0
  414. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/systems/triangulation.py +0 -0
  415. {mathematicskit-0.2.0/mathematicskit/graph_theory → mathematicskit-0.4.0/mathematicskit/geometry}/tests/__init__.py +0 -0
  416. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_convex_hull.py +0 -0
  417. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_curves.py +0 -0
  418. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_intersections.py +0 -0
  419. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_polygon.py +0 -0
  420. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_triangulation.py +0 -0
  421. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/tests/test_visualizers.py +0 -0
  422. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/utils/__init__.py +0 -0
  423. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/utils/curves_library.py +0 -0
  424. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/visualizers/__init__.py +0 -0
  425. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/geometry/visualizers/plots.py +0 -0
  426. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/core/__init__.py +0 -0
  427. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/shortest_paths.py +0 -0
  428. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/systems/spectral.py +0 -0
  429. {mathematicskit-0.2.0/mathematicskit/integrators → mathematicskit-0.4.0/mathematicskit/graph_theory}/tests/__init__.py +0 -0
  430. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_generators.py +0 -0
  431. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_graph.py +0 -0
  432. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_shortest_paths.py +0 -0
  433. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_spanning_tree.py +0 -0
  434. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_spectral.py +0 -0
  435. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/tests/test_visualizers.py +0 -0
  436. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/visualizers/__init__.py +0 -0
  437. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/graph_theory/visualizers/plots.py +0 -0
  438. {mathematicskit-0.2.0/mathematicskit/linalg → mathematicskit-0.4.0/mathematicskit/integrators}/tests/__init__.py +0 -0
  439. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/core/__init__.py +0 -0
  440. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/cholesky.py +0 -0
  441. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/iterative.py +0 -0
  442. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/stability.py +0 -0
  443. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/systems/svd.py +0 -0
  444. {mathematicskit-0.2.0/mathematicskit/number_theory → mathematicskit-0.4.0/mathematicskit/linalg}/tests/__init__.py +0 -0
  445. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_cholesky.py +0 -0
  446. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_eigen.py +0 -0
  447. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_iterative.py +0 -0
  448. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_qr.py +0 -0
  449. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_stability.py +0 -0
  450. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_svd.py +0 -0
  451. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/tests/test_visualizers.py +0 -0
  452. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/utils/__init__.py +0 -0
  453. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/utils/matrix_utils.py +0 -0
  454. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/visualizers/__init__.py +0 -0
  455. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/linalg/visualizers/plots.py +0 -0
  456. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/core/__init__.py +0 -0
  457. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/systems/modular_arithmetic.py +0 -0
  458. {mathematicskit-0.2.0/mathematicskit/numerical_analysis → mathematicskit-0.4.0/mathematicskit/number_theory}/tests/__init__.py +0 -0
  459. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_gcd_lcm.py +0 -0
  460. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_modular_arithmetic.py +0 -0
  461. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_totient.py +0 -0
  462. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/tests/test_visualizers.py +0 -0
  463. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/utils/__init__.py +0 -0
  464. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/utils/gcd_lcm.py +0 -0
  465. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/visualizers/__init__.py +0 -0
  466. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/number_theory/visualizers/plots.py +0 -0
  467. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/core/__init__.py +0 -0
  468. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/chebyshev.py +0 -0
  469. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/systems/splines.py +0 -0
  470. {mathematicskit-0.2.0/mathematicskit/ode_dynamics → mathematicskit-0.4.0/mathematicskit/numerical_analysis}/tests/__init__.py +0 -0
  471. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_chebyshev.py +0 -0
  472. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_error_analysis.py +0 -0
  473. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_regression.py +0 -0
  474. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_splines.py +0 -0
  475. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/tests/test_visualizers.py +0 -0
  476. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/utils/__init__.py +0 -0
  477. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/visualizers/__init__.py +0 -0
  478. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/numerical_analysis/visualizers/plots.py +0 -0
  479. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/core/__init__.py +0 -0
  480. {mathematicskit-0.2.0/mathematicskit/optimization → mathematicskit-0.4.0/mathematicskit/ode_dynamics}/tests/__init__.py +0 -0
  481. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_bifurcations.py +0 -0
  482. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_logistic_map.py +0 -0
  483. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_phase_portrait.py +0 -0
  484. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_poincare.py +0 -0
  485. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/tests/test_visualizers.py +0 -0
  486. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/utils/__init__.py +0 -0
  487. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/visualizers/__init__.py +0 -0
  488. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/ode_dynamics/visualizers/plots.py +0 -0
  489. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/core/__init__.py +0 -0
  490. {mathematicskit-0.2.0/mathematicskit/probability → mathematicskit-0.4.0/mathematicskit/optimization}/tests/__init__.py +0 -0
  491. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_comparison.py +0 -0
  492. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_conjugate_gradient.py +0 -0
  493. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_constrained.py +0 -0
  494. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_gradient_descent.py +0 -0
  495. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_newton_quasi_newton.py +0 -0
  496. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/tests/test_visualizers.py +0 -0
  497. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/utils/__init__.py +0 -0
  498. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/optimization/visualizers/__init__.py +0 -0
  499. {mathematicskit-0.2.0/mathematicskit/special_functions → mathematicskit-0.4.0/mathematicskit/pde}/tests/__init__.py +0 -0
  500. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/discrete.py +0 -0
  501. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/systems/limit_theorems.py +0 -0
  502. {mathematicskit-0.2.0/mathematicskit/statistics → mathematicskit-0.4.0/mathematicskit/probability}/tests/__init__.py +0 -0
  503. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_continuous.py +0 -0
  504. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_discrete.py +0 -0
  505. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_limit_theorems.py +0 -0
  506. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_markov_chain.py +0 -0
  507. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_monte_carlo.py +0 -0
  508. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/tests/test_visualizers.py +0 -0
  509. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/utils/__init__.py +0 -0
  510. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/utils/diagnostics.py +0 -0
  511. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/visualizers/__init__.py +0 -0
  512. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/probability/visualizers/plots.py +0 -0
  513. /mathematicskit-0.2.0/mathematicskit/tests/__init__.py → /mathematicskit-0.4.0/mathematicskit/py.typed +0 -0
  514. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/core/__init__.py +0 -0
  515. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/systems/bessel.py +0 -0
  516. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/systems/fourier_transform.py +0 -0
  517. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/systems/orthogonal_polynomials.py +0 -0
  518. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/tests/test_bessel.py +0 -0
  519. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/tests/test_fourier_transform.py +0 -0
  520. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/tests/test_orthogonal_polynomials.py +0 -0
  521. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/special_functions/utils/__init__.py +0 -0
  522. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/core/__init__.py +0 -0
  523. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/confidence_intervals.py +0 -0
  524. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/descriptive.py +0 -0
  525. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/systems/regression.py +0 -0
  526. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_bootstrap.py +0 -0
  527. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_confidence_intervals.py +0 -0
  528. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_descriptive.py +0 -0
  529. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_effect_size.py +0 -0
  530. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_hypothesis_tests.py +0 -0
  531. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_regression.py +0 -0
  532. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/tests/test_visualizers.py +0 -0
  533. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/utils/__init__.py +0 -0
  534. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/utils/effect_size.py +0 -0
  535. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/visualizers/__init__.py +0 -0
  536. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/statistics/visualizers/plots.py +0 -0
  537. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit/tests/test_package.py +0 -0
  538. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/dependency_links.txt +0 -0
  539. {mathematicskit-0.2.0 → mathematicskit-0.4.0}/mathematicskit.egg-info/top_level.txt +0 -0
  540. {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.2.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 -- all hand-rolled from first principles.
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 :: 3 - Alpha
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.9
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
- Requires-Dist: numba>=0.58
29
- Requires-Dist: plotly>=5.15
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 | [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) |
59
64
  | Downloads | [![Downloads](https://static.pepy.tech/badge/mathematicskit)](https://pepy.tech/project/mathematicskit) [![Downloads/Month](https://static.pepy.tech/badge/mathematicskit/month)](https://pepy.tech/project/mathematicskit) |
60
65
  | Community | [![GitHub Stars](https://img.shields.io/github/stars/cpoli/mathematicskit?style=social)](https://github.com/cpoli/mathematicskit) [![GitHub Forks](https://img.shields.io/github/forks/cpoli/mathematicskit?style=social)](https://github.com/cpoli/mathematicskit) [![Contributors](https://img.shields.io/github/contributors/cpoli/mathematicskit)](https://github.com/cpoli/mathematicskit/graphs/contributors) [![Last Commit](https://img.shields.io/github/last-commit/cpoli/mathematicskit)](https://github.com/cpoli/mathematicskit/commits/main) |
61
-
62
- A unified toolkit for computational mathematics, spanning the field end
63
- to end: Newton's method chasing roots and Poincare sections of the
64
- driven Duffing oscillator, Mandelbrot sets and the Feigenbaum route to
65
- chaos, Dijkstra's shortest paths and finite-field arithmetic, the
66
- Central Limit Theorem in action and Bessel functions in closed form --
67
- with each domain's docs tracing the field's own foundational
68
- breakthroughs in chronological, pedagogical order, every historical
69
- milestone linked directly to the runnable code that reproduces it. 14
70
- domain subpackages, one consistent NumPy-based API -- built directly on
71
- `numpy`/`scipy` for anything they already implement (decompositions,
72
- eigensolvers, quadrature, statistical distributions, optimization
73
- routines, and more), hand-rolling an algorithm from scratch only where
74
- no `numpy`/`scipy` equivalent exists (e.g. graph algorithms, the simplex
75
- method, modular arithmetic) or where the algorithm's own iterate
76
- behavior is the pedagogical subject (e.g. root-finder convergence
77
- history, autodiff). No hard dependency on `networkx`, `cvxpy`, or
78
- SageMath. Sharing common ODE integrators throughout. Conventionally
79
- imported as `mk`.
80
-
81
- All 14 domains from `mathkit-spec.md`'s build plan are implemented --
82
- see [Subpackages](#subpackages) for the full list, or browse the docs at
83
- <https://cpoli.github.io/mathematicskit/>.
66
+ | Try it online | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/cpoli/mathematicskit/main?labpath=notebooks%2Fquickstart.ipynb) [![JupyterLite](https://jupyterlite.rtfd.io/en/latest/_static/badge.svg)](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
+ ![Mandelbrot set, Newton vs. bisection convergence, and the logistic-map bifurcation diagram, all drawn with mathematicskit](https://raw.githubusercontent.com/cpoli/mathematicskit/main/docs/source/_static/images/readme_hero.png)
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
- python -m venv .venv && source .venv/bin/activate
89
- pip install -e ".[dev]"
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
- Published on PyPI as `mathematicskit` (the shorter name `mathkit` was
93
- already taken by an unrelated package) -- `pip install mathematicskit`,
94
- then `import mathematicskit as mk` as usual.
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
- spline = mk.numerical_analysis.CubicSpline(x=[0, 1, 2, 3], y=[0, 1, 0, 1], boundary="natural")
102
- print(spline.evaluate(1.5))
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, and the discrete Fourier transform via `numpy.fft` alongside a hand-rolled naive-DFT-vs-radix-2-FFT pedagogical speed comparison.
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.9-3.12 on Linux and
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
- 620 tests, 96% line coverage overall. Per-subpackage coverage:
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% | | `ode_dynamics` | 92% |
160
- | `calculus` | 95% | | `optimization` | 99% |
161
- | `combinatorics` | 98% | | `probability` | 98% |
162
- | `fractals_chaos` | 92% | | `special_functions` | 100% |
163
- | `geometry` | 100% | | `statistics` | 99% |
164
- | `graph_theory` | 99% | | `integrators` | 50% |
165
- | `linalg` | 95% | | `constants` | 100% |
166
- | `number_theory` | 99% | | | |
167
- | `numerical_analysis` | 97% | | | |
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` sits lower
172
- because several of its fixed-step/adaptive methods aren't exercised
173
- directly by its own tests, only indirectly through the two subpackages
174
- (`ode_dynamics`, `fractals_chaos`) that call into it.
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 | [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) |
9
9
  | Downloads | [![Downloads](https://static.pepy.tech/badge/mathematicskit)](https://pepy.tech/project/mathematicskit) [![Downloads/Month](https://static.pepy.tech/badge/mathematicskit/month)](https://pepy.tech/project/mathematicskit) |
10
10
  | Community | [![GitHub Stars](https://img.shields.io/github/stars/cpoli/mathematicskit?style=social)](https://github.com/cpoli/mathematicskit) [![GitHub Forks](https://img.shields.io/github/forks/cpoli/mathematicskit?style=social)](https://github.com/cpoli/mathematicskit) [![Contributors](https://img.shields.io/github/contributors/cpoli/mathematicskit)](https://github.com/cpoli/mathematicskit/graphs/contributors) [![Last Commit](https://img.shields.io/github/last-commit/cpoli/mathematicskit)](https://github.com/cpoli/mathematicskit/commits/main) |
11
-
12
- A unified toolkit for computational mathematics, spanning the field end
13
- to end: Newton's method chasing roots and Poincare sections of the
14
- driven Duffing oscillator, Mandelbrot sets and the Feigenbaum route to
15
- chaos, Dijkstra's shortest paths and finite-field arithmetic, the
16
- Central Limit Theorem in action and Bessel functions in closed form --
17
- with each domain's docs tracing the field's own foundational
18
- breakthroughs in chronological, pedagogical order, every historical
19
- milestone linked directly to the runnable code that reproduces it. 14
20
- domain subpackages, one consistent NumPy-based API -- built directly on
21
- `numpy`/`scipy` for anything they already implement (decompositions,
22
- eigensolvers, quadrature, statistical distributions, optimization
23
- routines, and more), hand-rolling an algorithm from scratch only where
24
- no `numpy`/`scipy` equivalent exists (e.g. graph algorithms, the simplex
25
- method, modular arithmetic) or where the algorithm's own iterate
26
- behavior is the pedagogical subject (e.g. root-finder convergence
27
- history, autodiff). No hard dependency on `networkx`, `cvxpy`, or
28
- SageMath. Sharing common ODE integrators throughout. Conventionally
29
- imported as `mk`.
30
-
31
- All 14 domains from `mathkit-spec.md`'s build plan are implemented --
32
- see [Subpackages](#subpackages) for the full list, or browse the docs at
33
- <https://cpoli.github.io/mathematicskit/>.
11
+ | Try it online | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/cpoli/mathematicskit/main?labpath=notebooks%2Fquickstart.ipynb) [![JupyterLite](https://jupyterlite.rtfd.io/en/latest/_static/badge.svg)](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
+ ![Mandelbrot set, Newton vs. bisection convergence, and the logistic-map bifurcation diagram, all drawn with mathematicskit](https://raw.githubusercontent.com/cpoli/mathematicskit/main/docs/source/_static/images/readme_hero.png)
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
- python -m venv .venv && source .venv/bin/activate
39
- pip install -e ".[dev]"
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
- Published on PyPI as `mathematicskit` (the shorter name `mathkit` was
43
- already taken by an unrelated package) -- `pip install mathematicskit`,
44
- then `import mathematicskit as mk` as usual.
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
- spline = mk.numerical_analysis.CubicSpline(x=[0, 1, 2, 3], y=[0, 1, 0, 1], boundary="natural")
52
- print(spline.evaluate(1.5))
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, and the discrete Fourier transform via `numpy.fft` alongside a hand-rolled naive-DFT-vs-radix-2-FFT pedagogical speed comparison.
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.9-3.12 on Linux and
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
- 620 tests, 96% line coverage overall. Per-subpackage coverage:
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% | | `ode_dynamics` | 92% |
110
- | `calculus` | 95% | | `optimization` | 99% |
111
- | `combinatorics` | 98% | | `probability` | 98% |
112
- | `fractals_chaos` | 92% | | `special_functions` | 100% |
113
- | `geometry` | 100% | | `statistics` | 99% |
114
- | `graph_theory` | 99% | | `integrators` | 50% |
115
- | `linalg` | 95% | | `constants` | 100% |
116
- | `number_theory` | 99% | | | |
117
- | `numerical_analysis` | 97% | | | |
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` sits lower
122
- because several of its fixed-step/adaptive methods aren't exercised
123
- directly by its own tests, only indirectly through the two subpackages
124
- (`ode_dynamics`, `fractals_chaos`) that call into it.
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
- from mathematicskit import (
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