mathematicskit 0.4.0__tar.gz → 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/PKG-INFO +77 -29
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/README.md +76 -28
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/__init__.py +1 -1
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/integrators/__init__.py +32 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/integrators/adaptive.py +2 -2
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/integrators/fixed_step.py +96 -6
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/integrators/implicit.py +3 -3
- mathematicskit-0.5.0/mathematicskit/integrators/multistep.py +111 -0
- mathematicskit-0.5.0/mathematicskit/integrators/stability.py +163 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/__init__.py +28 -2
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/core/base.py +71 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/__init__.py +11 -0
- mathematicskit-0.5.0/mathematicskit/numerical_analysis/systems/floating_point.py +296 -0
- mathematicskit-0.5.0/mathematicskit/numerical_analysis/systems/nonlinear_systems.py +287 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/stability.py +14 -56
- mathematicskit-0.5.0/mathematicskit/ode_dynamics/visualizers/__init__.py +11 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/visualizers/plots.py +49 -2
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit.egg-info/PKG-INFO +77 -29
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit.egg-info/SOURCES.txt +5 -190
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_actions.py +0 -39
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_codes.py +0 -39
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_finite_fields.py +0 -88
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_groups.py +0 -123
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_homomorphisms.py +0 -39
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_polynomial_ring.py +0 -92
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_structure.py +0 -105
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_subgroups.py +0 -94
- mathematicskit-0.4.0/mathematicskit/abstract_algebra/tests/test_visualizers.py +0 -15
- mathematicskit-0.4.0/mathematicskit/calculus/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_autodiff.py +0 -51
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_dual_numbers.py +0 -48
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_exhaustion.py +0 -38
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_finite_differences.py +0 -67
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_quadrature.py +0 -61
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_quadrature_rules.py +0 -90
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_taylor_series.py +0 -60
- mathematicskit-0.4.0/mathematicskit/calculus/tests/test_visualizers.py +0 -23
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_counting.py +0 -56
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_designs.py +0 -36
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_extremal.py +0 -63
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_inclusion_exclusion.py +0 -44
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_matching.py +0 -30
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_necklaces.py +0 -23
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_partitions.py +0 -46
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_pascals_triangle.py +0 -24
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_sequences.py +0 -50
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_special_numbers.py +0 -56
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_trees.py +0 -24
- mathematicskit-0.4.0/mathematicskit/combinatorics/tests/test_visualizers.py +0 -26
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_conformal_maps.py +0 -88
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_contours.py +0 -60
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_domain_coloring.py +0 -44
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_holomorphic.py +0 -30
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_laurent.py +0 -43
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_residues.py +0 -68
- mathematicskit-0.4.0/mathematicskit/complex_analysis/tests/test_visualizers.py +0 -29
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_box_counting.py +0 -56
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_cellular_automata.py +0 -74
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_curves.py +0 -76
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_ifs.py +0 -54
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_lsystems.py +0 -35
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_lyapunov.py +0 -42
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_mandelbrot_julia.py +0 -62
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_maps_and_dla.py +0 -51
- mathematicskit-0.4.0/mathematicskit/fractals_chaos/tests/test_visualizers.py +0 -41
- mathematicskit-0.4.0/mathematicskit/geometry/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_algorithms.py +0 -96
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_convex_hull.py +0 -48
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_curves.py +0 -55
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_intersections.py +0 -48
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_measurement.py +0 -70
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_polygon.py +0 -46
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_surfaces.py +0 -45
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_triangulation.py +0 -44
- mathematicskit-0.4.0/mathematicskit/geometry/tests/test_visualizers.py +0 -38
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_coloring.py +0 -58
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_generators.py +0 -34
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_graph.py +0 -54
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_max_flow.py +0 -83
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_new_algorithms.py +0 -174
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_shortest_paths.py +0 -56
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_spanning_tree.py +0 -46
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_spectral.py +0 -50
- mathematicskit-0.4.0/mathematicskit/graph_theory/tests/test_visualizers.py +0 -37
- mathematicskit-0.4.0/mathematicskit/integrators/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/integrators/tests/test_integrators.py +0 -314
- mathematicskit-0.4.0/mathematicskit/linalg/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_cholesky.py +0 -50
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_classical.py +0 -105
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_eigen.py +0 -59
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_iterative.py +0 -67
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_lu.py +0 -67
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_qr.py +0 -54
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_stability.py +0 -46
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_stationary_and_spectral.py +0 -106
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_svd.py +0 -42
- mathematicskit-0.4.0/mathematicskit/linalg/tests/test_visualizers.py +0 -30
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_continued_fractions.py +0 -75
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_crt.py +0 -35
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_diophantine.py +0 -54
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_factorization.py +0 -48
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_gcd_lcm.py +0 -35
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_modular_arithmetic.py +0 -53
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_primality.py +0 -81
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_prime_distribution.py +0 -50
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_quadratic_residues.py +0 -66
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_sums_of_squares.py +0 -53
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_totient.py +0 -54
- mathematicskit-0.4.0/mathematicskit/number_theory/tests/test_visualizers.py +0 -21
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_acceleration.py +0 -31
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_approximation.py +0 -98
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_chebyshev.py +0 -37
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_error_analysis.py +0 -40
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_interpolation.py +0 -109
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_polynomials.py +0 -71
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_regression.py +0 -52
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_root_finding.py +0 -137
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_splines.py +0 -61
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_summation.py +0 -38
- mathematicskit-0.4.0/mathematicskit/numerical_analysis/tests/test_visualizers.py +0 -38
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_bifurcations.py +0 -50
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_chaotic_flows.py +0 -59
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_chemical_oscillators.py +0 -30
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_epidemics.py +0 -43
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_excitable.py +0 -37
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_limit_cycles.py +0 -50
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_logistic_map.py +0 -45
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_phase_portrait.py +0 -39
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_poincare.py +0 -43
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_population.py +0 -53
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_stability.py +0 -106
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_synchronization.py +0 -48
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/tests/test_visualizers.py +0 -41
- mathematicskit-0.4.0/mathematicskit/ode_dynamics/visualizers/__init__.py +0 -5
- mathematicskit-0.4.0/mathematicskit/optimization/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_comparison.py +0 -36
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_conjugate_gradient.py +0 -50
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_constrained.py +0 -77
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_direct_search.py +0 -28
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_dynamic_programming.py +0 -45
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_frank_wolfe.py +0 -45
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_game_theory.py +0 -42
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_gradient_descent.py +0 -63
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_least_squares.py +0 -40
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_linear_programming.py +0 -71
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_momentum.py +0 -61
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_newton_quasi_newton.py +0 -54
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_scalar_search.py +0 -38
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_stochastic.py +0 -30
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_test_functions.py +0 -69
- mathematicskit-0.4.0/mathematicskit/optimization/tests/test_visualizers.py +0 -27
- mathematicskit-0.4.0/mathematicskit/pde/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_fem_multigrid_shocks.py +0 -140
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_heat.py +0 -176
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_operators_and_stability.py +0 -129
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_poisson_and_spectral.py +0 -178
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_visualizers.py +0 -38
- mathematicskit-0.4.0/mathematicskit/pde/tests/test_wave_and_advection.py +0 -109
- mathematicskit-0.4.0/mathematicskit/probability/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_classical_problems.py +0 -90
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_continuous.py +0 -74
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_discrete.py +0 -66
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_limit_theorems.py +0 -37
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_markov_chain.py +0 -68
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_monte_carlo.py +0 -45
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_stochastic_processes.py +0 -113
- mathematicskit-0.4.0/mathematicskit/probability/tests/test_visualizers.py +0 -36
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_airy.py +0 -49
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_bessel.py +0 -43
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_convolution.py +0 -64
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_elliptic.py +0 -74
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_error_functions.py +0 -65
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_filters.py +0 -77
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_fourier_transform.py +0 -54
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_gamma_beta.py +0 -71
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_hypergeometric.py +0 -66
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_lambert_w.py +0 -47
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_laplace_transform.py +0 -91
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_mathieu.py +0 -56
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_orthogonal_polynomials.py +0 -60
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_visualizers.py +0 -51
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_wavelets.py +0 -93
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_z_transform.py +0 -74
- mathematicskit-0.4.0/mathematicskit/special_functions/tests/test_zeta.py +0 -44
- mathematicskit-0.4.0/mathematicskit/statistics/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_bootstrap.py +0 -41
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_confidence_intervals.py +0 -63
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_correlation.py +0 -45
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_descriptive.py +0 -43
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_effect_size.py +0 -23
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_hypothesis_tests.py +0 -99
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_jackknife.py +0 -28
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_likelihood.py +0 -58
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_multiple_testing.py +0 -43
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_nonparametric.py +0 -74
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_regression.py +0 -57
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_shrinkage.py +0 -36
- mathematicskit-0.4.0/mathematicskit/statistics/tests/test_visualizers.py +0 -32
- mathematicskit-0.4.0/mathematicskit/tests/__init__.py +0 -0
- mathematicskit-0.4.0/mathematicskit/tests/test_package.py +0 -33
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/LICENSE +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/_jit.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/actions.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/codes.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/finite_fields.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/groups.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/homomorphisms.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/polynomial_ring.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/structure.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/systems/subgroups.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/utils/checks.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/abstract_algebra/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/systems/autodiff.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/systems/dual_numbers.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/systems/exhaustion.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/systems/finite_differences.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/systems/quadrature.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/systems/taylor_series.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/utils/series_utils.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/calculus/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/counting.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/designs.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/extremal.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/inclusion_exclusion.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/matching.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/necklaces.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/partitions.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/pascals_triangle.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/sequences.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/special_numbers.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/systems/trees.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/utils/bell_number.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/combinatorics/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/systems/conformal_maps.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/systems/contours.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/systems/domain_coloring.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/systems/holomorphic.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/systems/laurent.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/systems/residues.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/utils/grids.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/complex_analysis/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/constants.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/box_counting.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/cellular_automata.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/curves.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/dla.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/ifs.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/lsystems.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/lyapunov.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/mandelbrot_julia.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/systems/maps.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/utils/ifs_utils.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/fractals_chaos/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/bezier.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/convex_hull.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/curves.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/distances.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/enclosing.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/intersections.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/polygon.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/polyhedra.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/proximity.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/simplification.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/surfaces.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/systems/triangulation.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/utils/curves_library.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/geometry/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/assignment.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/coloring.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/components.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/enumeration.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/extremal.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/hamiltonian.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/matching.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/max_flow.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/ranking.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/search.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/shortest_paths.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/spanning_tree.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/systems/spectral.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/utils/generators.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/graph_theory/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/integrators/bvp.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/cholesky.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/cramer.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/eigen.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/gershgorin.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/iterative.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/lanczos.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/lu.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/matrix_polynomial.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/pseudoinverse.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/qr.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/schur.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/stability.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/stationary.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/systems/svd.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/utils/matrix_utils.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/linalg/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/continued_fractions.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/crt.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/diophantine.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/factorization.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/modular_arithmetic.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/primality.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/prime_distribution.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/quadratic_residues.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/sums_of_squares.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/totient.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/systems/zeta.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/utils/gcd_lcm.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/number_theory/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/acceleration.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/approximation.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/chebyshev.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/interpolation.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/polynomials.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/regression.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/root_finding.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/splines.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/systems/summation.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/utils/error_analysis.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/numerical_analysis/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/bifurcations.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/chaotic_flows.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/chemical_oscillators.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/epidemics.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/excitable.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/limit_cycles.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/logistic_map.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/phase_portrait.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/poincare.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/population.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/systems/synchronization.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/ode_dynamics/utils/period_estimation.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/conjugate_gradient.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/constrained.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/direct_search.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/dynamic_programming.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/frank_wolfe.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/game_theory.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/gradient_descent.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/least_squares.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/linear_programming.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/momentum.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/newton_quasi_newton.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/scalar_search.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/systems/stochastic.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/utils/comparison.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/utils/line_search.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/utils/test_functions.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/optimization/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/advection.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/conservation_laws.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/finite_elements.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/heat.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/multigrid.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/poisson.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/spectral.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/stability.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/systems/wave.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/utils/operators.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/pde/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/bayes.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/branching.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/buffon.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/continuous.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/continuous_time_markov.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/discrete.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/inequalities.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/limit_theorems.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/markov_chain.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/monte_carlo.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/queueing.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/st_petersburg.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/systems/stochastic_processes.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/utils/diagnostics.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/probability/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/py.typed +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/airy.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/bessel.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/convolution.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/elliptic.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/error_functions.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/filters.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/fourier_transform.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/gamma_beta.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/hypergeometric.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/lambert_w.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/laplace_transform.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/mathieu.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/orthogonal_polynomials.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/wavelets.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/z_transform.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/systems/zeta.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/utils/orthogonality.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/special_functions/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/core/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/core/base.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/bootstrap.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/confidence_intervals.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/correlation.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/descriptive.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/hypothesis_tests.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/jackknife.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/likelihood.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/multiple_testing.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/nonparametric.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/regression.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/systems/shrinkage.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/utils/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/utils/effect_size.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/visualizers/__init__.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit/statistics/visualizers/plots.py +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit.egg-info/dependency_links.txt +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit.egg-info/requires.txt +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/mathematicskit.egg-info/top_level.txt +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/pyproject.toml +0 -0
- {mathematicskit-0.4.0 → mathematicskit-0.5.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mathematicskit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
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>
|
|
@@ -58,20 +58,20 @@ Dynamic: license-file
|
|
|
58
58
|
| | |
|
|
59
59
|
|:--|:-:|
|
|
60
60
|
| Package | [](https://pypi.org/project/mathematicskit/) [](https://pypi.org/project/mathematicskit/) |
|
|
61
|
-
| Quality | [](https://github.com/cpoli/mathematicskit/blob/main/LICENSE) [](https://github.com/cpoli/mathematicskit/actions/workflows/ci.yml) [](https://codecov.io/gh/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit/blob/main/LICENSE) [](https://github.com/cpoli/mathematicskit/actions/workflows/ci.yml) [](https://codecov.io/gh/cpoli/mathematicskit) [](#coverage) |
|
|
62
62
|
| Documentation | [](https://cpoli.github.io/mathematicskit/) |
|
|
63
63
|
| Code style | [](https://github.com/astral-sh/ruff) |
|
|
64
64
|
| Downloads | [](https://pepy.tech/project/mathematicskit) [](https://pepy.tech/project/mathematicskit) |
|
|
65
65
|
| Community | [](https://github.com/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit/graphs/contributors) [](https://github.com/cpoli/mathematicskit/commits/main) |
|
|
66
|
-
| Try it online | [](https://colab.research.google.com/github/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) [](https://colab.research.google.com/github/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) [](https://cpoli.github.io/mathematicskit/lite/lab/) |
|
|
67
67
|
|
|
68
68
|
**See how the algorithms of computational mathematics actually work.**
|
|
69
69
|
mathematicskit is a Python toolkit for learning and teaching numerical
|
|
70
|
-
methods, dynamical systems, and discrete mathematics.
|
|
71
|
-
|
|
72
|
-
ships plotting helpers, and each domain's docs walk through the
|
|
73
|
-
breakthroughs in historical order, each one linked to runnable code
|
|
74
|
-
reproduces it.
|
|
70
|
+
methods, dynamical systems, and discrete mathematics. No black boxes: every
|
|
71
|
+
iterative method shows its work, every result is an inspectable dataclass,
|
|
72
|
+
every domain ships plotting helpers, and each domain's docs walk through the
|
|
73
|
+
field's breakthroughs in historical order, each one linked to runnable code
|
|
74
|
+
that reproduces it.
|
|
75
75
|
|
|
76
76
|

|
|
77
77
|
|
|
@@ -123,36 +123,85 @@ ax.legend()
|
|
|
123
123
|
```
|
|
124
124
|
|
|
125
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
|
|
126
|
+
ten minutes. Open it in Colab using the badge above.
|
|
127
127
|
|
|
128
128
|
## Subpackages
|
|
129
129
|
|
|
130
130
|
Domain subpackages, each with runnable examples linked below:
|
|
131
131
|
|
|
132
|
-
- [`mathematicskit.numerical_analysis`](https://cpoli.github.io/mathematicskit/api/gallery/numerical_analysis/) -- root finding (bisection, Newton-Raphson, secant, fixed-point, hand-rolled for their convergence history), Lagrange/Newton (hand-rolled) plus scipy-backed cubic-spline interpolation, numpy-backed Chebyshev nodes, `numpy.linalg.lstsq`-based polynomial regression, and `numpy.linalg.cond`-based error/condition-number analysis.
|
|
132
|
+
- [`mathematicskit.numerical_analysis`](https://cpoli.github.io/mathematicskit/api/gallery/numerical_analysis/) -- root finding (bisection, Newton-Raphson, secant, fixed-point, hand-rolled for their convergence history), Newton's and Broyden's methods for nonlinear systems, Lagrange/Newton (hand-rolled) plus scipy-backed cubic-spline interpolation, numpy-backed Chebyshev nodes, `numpy.linalg.lstsq`-based polynomial regression, floating-point arithmetic (IEEE 754 bit fields, machine epsilon, catastrophic cancellation), and `numpy.linalg.cond`-based error/condition-number analysis.
|
|
133
|
+
|
|
134
|
+

|
|
135
|
+
|
|
133
136
|
- [`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`).
|
|
137
|
+
|
|
138
|
+

|
|
139
|
+
|
|
134
140
|
- [`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.
|
|
141
|
+
|
|
142
|
+

|
|
143
|
+
|
|
135
144
|
- [`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.
|
|
145
|
+
|
|
146
|
+

|
|
147
|
+
|
|
136
148
|
- [`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.
|
|
149
|
+
|
|
150
|
+

|
|
151
|
+
|
|
137
152
|
- [`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).
|
|
153
|
+
|
|
154
|
+

|
|
155
|
+
|
|
138
156
|
- [`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`.
|
|
157
|
+
|
|
158
|
+

|
|
159
|
+
|
|
139
160
|
- [`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.
|
|
161
|
+
|
|
162
|
+

|
|
163
|
+
|
|
140
164
|
- [`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`.
|
|
165
|
+
|
|
166
|
+

|
|
167
|
+
|
|
141
168
|
- [`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).
|
|
169
|
+
|
|
170
|
+

|
|
171
|
+
|
|
142
172
|
- [`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).
|
|
173
|
+
|
|
174
|
+

|
|
175
|
+
|
|
143
176
|
- [`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.
|
|
177
|
+
|
|
178
|
+

|
|
179
|
+
|
|
144
180
|
- [`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`).
|
|
181
|
+
|
|
182
|
+

|
|
183
|
+
|
|
145
184
|
- [`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).
|
|
185
|
+
|
|
186
|
+

|
|
187
|
+
|
|
146
188
|
- [`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.
|
|
189
|
+
|
|
190
|
+

|
|
191
|
+
|
|
147
192
|
- [`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).
|
|
148
193
|
|
|
194
|
+

|
|
195
|
+
|
|
196
|
+
|
|
149
197
|
Shared infrastructure, used across the subpackages above rather than
|
|
150
198
|
standalone toolkits:
|
|
151
199
|
|
|
152
200
|
- `mathematicskit.constants` -- mathematical constants and default numerical
|
|
153
201
|
tolerances shared across subpackages.
|
|
154
|
-
- `mathematicskit.integrators` -- shared numerical ODE integrators (
|
|
155
|
-
|
|
202
|
+
- `mathematicskit.integrators` -- shared numerical ODE integrators (explicit
|
|
203
|
+
Euler, RK4, Adams-Bashforth, leapfrog, Yoshida4, adaptive
|
|
204
|
+
Dormand-Prince, backward Euler) and their linear stability regions, used by
|
|
156
205
|
`mathematicskit.ode_dynamics`.
|
|
157
206
|
|
|
158
207
|
## Design
|
|
@@ -188,34 +237,33 @@ macOS. See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a PR.
|
|
|
188
237
|
### Coverage
|
|
189
238
|
|
|
190
239
|
```bash
|
|
191
|
-
MPLBACKEND=Agg pytest -q --cov=mathematicskit --cov-report=
|
|
240
|
+
MPLBACKEND=Agg pytest -q --cov=mathematicskit --cov-report=
|
|
241
|
+
NUMBA_DISABLE_JIT=1 MPLBACKEND=Agg pytest -q --cov=mathematicskit --cov-append --cov-report=term
|
|
192
242
|
```
|
|
193
243
|
|
|
194
|
-
|
|
195
|
-
|
|
244
|
+
Coverage cannot trace `@njit`-compiled code, so the kernel bodies in
|
|
245
|
+
`ode_dynamics`, `fractals_chaos`, `pde` and `integrators` are only
|
|
246
|
+
covered by the second run, where they execute as plain Python. CI does
|
|
247
|
+
the same: the numba and no-numba jobs both upload to Codecov, which
|
|
248
|
+
merges them. Combined: 1672 tests, 99% line coverage overall (98%
|
|
249
|
+
excluding the test files themselves). Per-subpackage coverage,
|
|
250
|
+
excluding tests:
|
|
196
251
|
|
|
197
252
|
| Subpackage | Coverage | | Subpackage | Coverage |
|
|
198
253
|
|:--|--:|---|:--|--:|
|
|
199
|
-
| `abstract_algebra` | 97% | | `numerical_analysis` |
|
|
200
|
-
| `calculus` | 93% | | `ode_dynamics` |
|
|
254
|
+
| `abstract_algebra` | 97% | | `numerical_analysis` | 96% |
|
|
255
|
+
| `calculus` | 93% | | `ode_dynamics` | 100% |
|
|
201
256
|
| `combinatorics` | 96% | | `optimization` | 99% |
|
|
202
|
-
| `complex_analysis` | 99% | | `pde` |
|
|
203
|
-
| `fractals_chaos` |
|
|
257
|
+
| `complex_analysis` | 99% | | `pde` | 99% |
|
|
258
|
+
| `fractals_chaos` | 100% | | `probability` | 98% |
|
|
204
259
|
| `geometry` | 99% | | `special_functions` | 99% |
|
|
205
260
|
| `graph_theory` | 99% | | `statistics` | 99% |
|
|
206
|
-
| `linalg` | 94% | | `integrators` |
|
|
207
|
-
| `number_theory` |
|
|
261
|
+
| `linalg` | 94% | | `integrators` | 100% |
|
|
262
|
+
| `number_theory` | 98% | | `constants` | 100% |
|
|
208
263
|
|
|
209
264
|
`visualizers/` modules are smoke-tested only (correct return type/shape,
|
|
210
265
|
or that `anim.save()` succeeds) rather than covered line-by-line, per the
|
|
211
|
-
testing convention in [CLAUDE.md](CLAUDE.md).
|
|
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
|
-
```
|
|
266
|
+
testing convention in [CLAUDE.md](CLAUDE.md).
|
|
219
267
|
|
|
220
268
|
## Docs
|
|
221
269
|
|
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
| | |
|
|
4
4
|
|:--|:-:|
|
|
5
5
|
| Package | [](https://pypi.org/project/mathematicskit/) [](https://pypi.org/project/mathematicskit/) |
|
|
6
|
-
| Quality | [](https://github.com/cpoli/mathematicskit/blob/main/LICENSE) [](https://github.com/cpoli/mathematicskit/actions/workflows/ci.yml) [](https://codecov.io/gh/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit/blob/main/LICENSE) [](https://github.com/cpoli/mathematicskit/actions/workflows/ci.yml) [](https://codecov.io/gh/cpoli/mathematicskit) [](#coverage) |
|
|
7
7
|
| Documentation | [](https://cpoli.github.io/mathematicskit/) |
|
|
8
8
|
| Code style | [](https://github.com/astral-sh/ruff) |
|
|
9
9
|
| Downloads | [](https://pepy.tech/project/mathematicskit) [](https://pepy.tech/project/mathematicskit) |
|
|
10
10
|
| Community | [](https://github.com/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit) [](https://github.com/cpoli/mathematicskit/graphs/contributors) [](https://github.com/cpoli/mathematicskit/commits/main) |
|
|
11
|
-
| Try it online | [](https://colab.research.google.com/github/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) [](https://colab.research.google.com/github/cpoli/mathematicskit/blob/main/notebooks/quickstart.ipynb) [](https://cpoli.github.io/mathematicskit/lite/lab/) |
|
|
12
12
|
|
|
13
13
|
**See how the algorithms of computational mathematics actually work.**
|
|
14
14
|
mathematicskit is a Python toolkit for learning and teaching numerical
|
|
15
|
-
methods, dynamical systems, and discrete mathematics.
|
|
16
|
-
|
|
17
|
-
ships plotting helpers, and each domain's docs walk through the
|
|
18
|
-
breakthroughs in historical order, each one linked to runnable code
|
|
19
|
-
reproduces it.
|
|
15
|
+
methods, dynamical systems, and discrete mathematics. No black boxes: every
|
|
16
|
+
iterative method shows its work, every result is an inspectable dataclass,
|
|
17
|
+
every domain ships plotting helpers, and each domain's docs walk through the
|
|
18
|
+
field's breakthroughs in historical order, each one linked to runnable code
|
|
19
|
+
that reproduces it.
|
|
20
20
|
|
|
21
21
|

|
|
22
22
|
|
|
@@ -68,36 +68,85 @@ ax.legend()
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
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
|
|
71
|
+
ten minutes. Open it in Colab using the badge above.
|
|
72
72
|
|
|
73
73
|
## Subpackages
|
|
74
74
|
|
|
75
75
|
Domain subpackages, each with runnable examples linked below:
|
|
76
76
|
|
|
77
|
-
- [`mathematicskit.numerical_analysis`](https://cpoli.github.io/mathematicskit/api/gallery/numerical_analysis/) -- root finding (bisection, Newton-Raphson, secant, fixed-point, hand-rolled for their convergence history), Lagrange/Newton (hand-rolled) plus scipy-backed cubic-spline interpolation, numpy-backed Chebyshev nodes, `numpy.linalg.lstsq`-based polynomial regression, and `numpy.linalg.cond`-based error/condition-number analysis.
|
|
77
|
+
- [`mathematicskit.numerical_analysis`](https://cpoli.github.io/mathematicskit/api/gallery/numerical_analysis/) -- root finding (bisection, Newton-Raphson, secant, fixed-point, hand-rolled for their convergence history), Newton's and Broyden's methods for nonlinear systems, Lagrange/Newton (hand-rolled) plus scipy-backed cubic-spline interpolation, numpy-backed Chebyshev nodes, `numpy.linalg.lstsq`-based polynomial regression, floating-point arithmetic (IEEE 754 bit fields, machine epsilon, catastrophic cancellation), and `numpy.linalg.cond`-based error/condition-number analysis.
|
|
78
|
+
|
|
79
|
+

|
|
80
|
+
|
|
78
81
|
- [`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`).
|
|
82
|
+
|
|
83
|
+

|
|
84
|
+
|
|
79
85
|
- [`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.
|
|
86
|
+
|
|
87
|
+

|
|
88
|
+
|
|
80
89
|
- [`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.
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
81
93
|
- [`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.
|
|
94
|
+
|
|
95
|
+

|
|
96
|
+
|
|
82
97
|
- [`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).
|
|
98
|
+
|
|
99
|
+

|
|
100
|
+
|
|
83
101
|
- [`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`.
|
|
102
|
+
|
|
103
|
+

|
|
104
|
+
|
|
84
105
|
- [`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.
|
|
106
|
+
|
|
107
|
+

|
|
108
|
+
|
|
85
109
|
- [`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`.
|
|
110
|
+
|
|
111
|
+

|
|
112
|
+
|
|
86
113
|
- [`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).
|
|
114
|
+
|
|
115
|
+

|
|
116
|
+
|
|
87
117
|
- [`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).
|
|
118
|
+
|
|
119
|
+

|
|
120
|
+
|
|
88
121
|
- [`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.
|
|
122
|
+
|
|
123
|
+

|
|
124
|
+
|
|
89
125
|
- [`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`).
|
|
126
|
+
|
|
127
|
+

|
|
128
|
+
|
|
90
129
|
- [`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).
|
|
130
|
+
|
|
131
|
+

|
|
132
|
+
|
|
91
133
|
- [`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.
|
|
134
|
+
|
|
135
|
+

|
|
136
|
+
|
|
92
137
|
- [`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).
|
|
93
138
|
|
|
139
|
+

|
|
140
|
+
|
|
141
|
+
|
|
94
142
|
Shared infrastructure, used across the subpackages above rather than
|
|
95
143
|
standalone toolkits:
|
|
96
144
|
|
|
97
145
|
- `mathematicskit.constants` -- mathematical constants and default numerical
|
|
98
146
|
tolerances shared across subpackages.
|
|
99
|
-
- `mathematicskit.integrators` -- shared numerical ODE integrators (
|
|
100
|
-
|
|
147
|
+
- `mathematicskit.integrators` -- shared numerical ODE integrators (explicit
|
|
148
|
+
Euler, RK4, Adams-Bashforth, leapfrog, Yoshida4, adaptive
|
|
149
|
+
Dormand-Prince, backward Euler) and their linear stability regions, used by
|
|
101
150
|
`mathematicskit.ode_dynamics`.
|
|
102
151
|
|
|
103
152
|
## Design
|
|
@@ -133,34 +182,33 @@ macOS. See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a PR.
|
|
|
133
182
|
### Coverage
|
|
134
183
|
|
|
135
184
|
```bash
|
|
136
|
-
MPLBACKEND=Agg pytest -q --cov=mathematicskit --cov-report=
|
|
185
|
+
MPLBACKEND=Agg pytest -q --cov=mathematicskit --cov-report=
|
|
186
|
+
NUMBA_DISABLE_JIT=1 MPLBACKEND=Agg pytest -q --cov=mathematicskit --cov-append --cov-report=term
|
|
137
187
|
```
|
|
138
188
|
|
|
139
|
-
|
|
140
|
-
|
|
189
|
+
Coverage cannot trace `@njit`-compiled code, so the kernel bodies in
|
|
190
|
+
`ode_dynamics`, `fractals_chaos`, `pde` and `integrators` are only
|
|
191
|
+
covered by the second run, where they execute as plain Python. CI does
|
|
192
|
+
the same: the numba and no-numba jobs both upload to Codecov, which
|
|
193
|
+
merges them. Combined: 1672 tests, 99% line coverage overall (98%
|
|
194
|
+
excluding the test files themselves). Per-subpackage coverage,
|
|
195
|
+
excluding tests:
|
|
141
196
|
|
|
142
197
|
| Subpackage | Coverage | | Subpackage | Coverage |
|
|
143
198
|
|:--|--:|---|:--|--:|
|
|
144
|
-
| `abstract_algebra` | 97% | | `numerical_analysis` |
|
|
145
|
-
| `calculus` | 93% | | `ode_dynamics` |
|
|
199
|
+
| `abstract_algebra` | 97% | | `numerical_analysis` | 96% |
|
|
200
|
+
| `calculus` | 93% | | `ode_dynamics` | 100% |
|
|
146
201
|
| `combinatorics` | 96% | | `optimization` | 99% |
|
|
147
|
-
| `complex_analysis` | 99% | | `pde` |
|
|
148
|
-
| `fractals_chaos` |
|
|
202
|
+
| `complex_analysis` | 99% | | `pde` | 99% |
|
|
203
|
+
| `fractals_chaos` | 100% | | `probability` | 98% |
|
|
149
204
|
| `geometry` | 99% | | `special_functions` | 99% |
|
|
150
205
|
| `graph_theory` | 99% | | `statistics` | 99% |
|
|
151
|
-
| `linalg` | 94% | | `integrators` |
|
|
152
|
-
| `number_theory` |
|
|
206
|
+
| `linalg` | 94% | | `integrators` | 100% |
|
|
207
|
+
| `number_theory` | 98% | | `constants` | 100% |
|
|
153
208
|
|
|
154
209
|
`visualizers/` modules are smoke-tested only (correct return type/shape,
|
|
155
210
|
or that `anim.save()` succeeds) rather than covered line-by-line, per the
|
|
156
|
-
testing convention in [CLAUDE.md](CLAUDE.md).
|
|
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
|
-
```
|
|
211
|
+
testing convention in [CLAUDE.md](CLAUDE.md).
|
|
164
212
|
|
|
165
213
|
## Docs
|
|
166
214
|
|
|
@@ -11,7 +11,7 @@ implemented, and CHANGELOG.md for the full roadmap.
|
|
|
11
11
|
|
|
12
12
|
# Defined before the subpackage imports: each subpackage re-exports it via
|
|
13
13
|
# ``from mathematicskit import __version__`` while this module is still loading.
|
|
14
|
-
__version__ = "0.
|
|
14
|
+
__version__ = "0.5.0"
|
|
15
15
|
|
|
16
16
|
from mathematicskit import ( # noqa: E402
|
|
17
17
|
abstract_algebra,
|
|
@@ -5,8 +5,13 @@ ndarray`` convention throughout, so a single compiled callback can be reused
|
|
|
5
5
|
across systems with different parameter values without recompiling (see
|
|
6
6
|
:mod:`mathematicskit.integrators.fixed_step`).
|
|
7
7
|
|
|
8
|
+
* :func:`euler_integrate` -- explicit (forward) Euler, first order: the
|
|
9
|
+
baseline every other method improves on.
|
|
8
10
|
* :func:`rk4_integrate` -- classical 4th-order Runge-Kutta (not
|
|
9
11
|
energy-preserving).
|
|
12
|
+
* :func:`adams_bashforth_integrate` -- explicit Adams-Bashforth linear
|
|
13
|
+
multistep methods of orders 1-4 (RK4 start-up), one right-hand-side
|
|
14
|
+
evaluation per step.
|
|
10
15
|
* :func:`leapfrog_integrate` (alias :func:`velocity_verlet_integrate`) --
|
|
11
16
|
2nd-order symplectic Stormer-Verlet, for separable systems
|
|
12
17
|
``pos'' = force(pos, t)``.
|
|
@@ -26,12 +31,27 @@ across systems with different parameter values without recompiling (see
|
|
|
26
31
|
collocation (:func:`scipy.integrate.solve_bvp`), returning a
|
|
27
32
|
:class:`BVPResult`.
|
|
28
33
|
|
|
34
|
+
:func:`stability_function`, :func:`is_absolutely_stable` and
|
|
35
|
+
:func:`adams_bashforth_boundary_locus` describe each explicit and
|
|
36
|
+
implicit method's linear stability region in the ``z = lam * dt`` plane
|
|
37
|
+
(see :mod:`mathematicskit.integrators.stability`).
|
|
38
|
+
|
|
29
39
|
:mod:`mathematicskit.ode_dynamics` builds its phase portraits, bifurcation
|
|
30
40
|
diagrams, and Poincare sections on top of this shared module rather than
|
|
31
41
|
reimplementing per-domain integrators, exactly as physicskit's
|
|
32
42
|
``classical/core/integrators.py`` wraps its own shared integrators for
|
|
33
43
|
that subpackage's njit-callback calling convention.
|
|
34
44
|
|
|
45
|
+
The integrator kernels are compiled per process and deliberately not
|
|
46
|
+
cached to disk (no ``cache=True``). Each one takes the callback itself as
|
|
47
|
+
an argument, so a cache entry is keyed on that callback's dispatcher.
|
|
48
|
+
Numba cannot re-save an index holding keys whose dispatchers belonged to
|
|
49
|
+
an earlier process, so the second script to use a new callback would
|
|
50
|
+
crash with ``ReferenceError: underlying object has vanished``. The
|
|
51
|
+
kernels that take only arrays and scalars (e.g. the ``rhs`` functions in
|
|
52
|
+
:mod:`mathematicskit.ode_dynamics` and :mod:`mathematicskit.pde`) stay
|
|
53
|
+
cached.
|
|
54
|
+
|
|
35
55
|
:func:`njit` is re-exported here for writing those callbacks: it is
|
|
36
56
|
:func:`numba.njit` when Numba is installed (``pip install
|
|
37
57
|
mathematicskit[fast]``) and a no-op decorator otherwise, with
|
|
@@ -43,6 +63,8 @@ from mathematicskit.integrators.adaptive import dopri5_integrate, dopri5_step
|
|
|
43
63
|
from mathematicskit.integrators.bvp import BVPResult, collocation_bvp
|
|
44
64
|
from mathematicskit.integrators.fixed_step import (
|
|
45
65
|
RHSFunc,
|
|
66
|
+
euler_integrate,
|
|
67
|
+
euler_step,
|
|
46
68
|
leapfrog_integrate,
|
|
47
69
|
leapfrog_step,
|
|
48
70
|
rk4_integrate,
|
|
@@ -53,13 +75,19 @@ from mathematicskit.integrators.fixed_step import (
|
|
|
53
75
|
yoshida4_step,
|
|
54
76
|
)
|
|
55
77
|
from mathematicskit.integrators.implicit import implicit_euler_integrate, implicit_euler_step, stiff_integrate
|
|
78
|
+
from mathematicskit.integrators.multistep import ADAMS_BASHFORTH_COEFFICIENTS, adams_bashforth_integrate
|
|
79
|
+
from mathematicskit.integrators.stability import STABILITY_METHODS, adams_bashforth_boundary_locus, is_absolutely_stable, stability_function
|
|
56
80
|
|
|
57
81
|
__all__ = [
|
|
58
82
|
"HAS_NUMBA",
|
|
59
83
|
"njit",
|
|
60
84
|
"RHSFunc",
|
|
85
|
+
"euler_step",
|
|
86
|
+
"euler_integrate",
|
|
61
87
|
"rk4_step",
|
|
62
88
|
"rk4_integrate",
|
|
89
|
+
"ADAMS_BASHFORTH_COEFFICIENTS",
|
|
90
|
+
"adams_bashforth_integrate",
|
|
63
91
|
"leapfrog_step",
|
|
64
92
|
"leapfrog_integrate",
|
|
65
93
|
"velocity_verlet_step",
|
|
@@ -73,4 +101,8 @@ __all__ = [
|
|
|
73
101
|
"stiff_integrate",
|
|
74
102
|
"BVPResult",
|
|
75
103
|
"collocation_bvp",
|
|
104
|
+
"STABILITY_METHODS",
|
|
105
|
+
"stability_function",
|
|
106
|
+
"is_absolutely_stable",
|
|
107
|
+
"adams_bashforth_boundary_locus",
|
|
76
108
|
]
|
|
@@ -53,7 +53,7 @@ _E6 = _B6 - _B6S
|
|
|
53
53
|
_E7 = -_B7S
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
@njit
|
|
56
|
+
@njit
|
|
57
57
|
def dopri5_step(
|
|
58
58
|
rhs: RHSFunc,
|
|
59
59
|
state: NDArray[np.float64],
|
|
@@ -97,7 +97,7 @@ def dopri5_step(
|
|
|
97
97
|
return state_new, error
|
|
98
98
|
|
|
99
99
|
|
|
100
|
-
@njit
|
|
100
|
+
@njit
|
|
101
101
|
def dopri5_integrate(
|
|
102
102
|
rhs: RHSFunc,
|
|
103
103
|
state0: NDArray[np.float64],
|
|
@@ -27,6 +27,8 @@ from mathematicskit._jit import njit
|
|
|
27
27
|
|
|
28
28
|
__all__ = [
|
|
29
29
|
"RHSFunc",
|
|
30
|
+
"euler_step",
|
|
31
|
+
"euler_integrate",
|
|
30
32
|
"rk4_step",
|
|
31
33
|
"rk4_integrate",
|
|
32
34
|
"leapfrog_step",
|
|
@@ -42,7 +44,95 @@ __all__ = [
|
|
|
42
44
|
RHSFunc = Callable[[NDArray[np.float64], float, NDArray[np.float64]], NDArray[np.float64]]
|
|
43
45
|
|
|
44
46
|
|
|
45
|
-
@njit
|
|
47
|
+
@njit
|
|
48
|
+
def euler_step(
|
|
49
|
+
rhs: RHSFunc,
|
|
50
|
+
state: NDArray[np.float64],
|
|
51
|
+
t: float,
|
|
52
|
+
dt: float,
|
|
53
|
+
params: NDArray[np.float64],
|
|
54
|
+
) -> NDArray[np.float64]:
|
|
55
|
+
"""Single explicit (forward) Euler step: ``state + dt * rhs(state, t)``.
|
|
56
|
+
|
|
57
|
+
Follows the tangent line for one step (Euler 1768). The local error is
|
|
58
|
+
:math:`O(dt^2)`, so the global error over a fixed interval is
|
|
59
|
+
:math:`O(dt)`. For ``y' = lam * y`` one step multiplies ``y`` by
|
|
60
|
+
:math:`R(z) = 1 + z` with :math:`z = lam \\cdot dt`, so the method is
|
|
61
|
+
stable only inside the disc :math:`|1 + z| \\le 1` (see
|
|
62
|
+
:mod:`mathematicskit.integrators.stability`).
|
|
63
|
+
|
|
64
|
+
Parameters
|
|
65
|
+
----------
|
|
66
|
+
rhs : callable
|
|
67
|
+
Numba-jitted right-hand-side function ``rhs(state, t, params) ->
|
|
68
|
+
ndarray``.
|
|
69
|
+
state : ndarray of float, shape (dim,)
|
|
70
|
+
Current state vector.
|
|
71
|
+
t : float
|
|
72
|
+
Current time.
|
|
73
|
+
dt : float
|
|
74
|
+
Step size.
|
|
75
|
+
params : ndarray of float
|
|
76
|
+
Parameter vector passed through to `rhs`.
|
|
77
|
+
|
|
78
|
+
Returns
|
|
79
|
+
-------
|
|
80
|
+
ndarray of float, shape (dim,)
|
|
81
|
+
The state advanced by one step of size `dt`.
|
|
82
|
+
"""
|
|
83
|
+
return state + dt * rhs(state, t, params)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
@njit
|
|
87
|
+
def euler_integrate(
|
|
88
|
+
rhs: RHSFunc,
|
|
89
|
+
state0: NDArray[np.float64],
|
|
90
|
+
t0: float,
|
|
91
|
+
dt: float,
|
|
92
|
+
n_steps: int,
|
|
93
|
+
params: NDArray[np.float64],
|
|
94
|
+
) -> tuple[NDArray[np.float64], NDArray[np.float64]]:
|
|
95
|
+
"""Integrate ``n_steps`` of explicit Euler starting from ``state0``.
|
|
96
|
+
|
|
97
|
+
Parameters
|
|
98
|
+
----------
|
|
99
|
+
rhs : callable
|
|
100
|
+
Numba-jitted right-hand-side function ``rhs(state, t, params) ->
|
|
101
|
+
ndarray``.
|
|
102
|
+
state0 : ndarray of float, shape (dim,)
|
|
103
|
+
Initial state vector.
|
|
104
|
+
t0 : float
|
|
105
|
+
Initial time.
|
|
106
|
+
dt : float
|
|
107
|
+
Step size.
|
|
108
|
+
n_steps : int
|
|
109
|
+
Number of integration steps.
|
|
110
|
+
params : ndarray of float
|
|
111
|
+
Parameter vector passed through to `rhs`.
|
|
112
|
+
|
|
113
|
+
Returns
|
|
114
|
+
-------
|
|
115
|
+
times : ndarray of float, shape (n_steps + 1,)
|
|
116
|
+
Time at each step, starting at `t0`.
|
|
117
|
+
states : ndarray of float, shape (n_steps + 1, dim)
|
|
118
|
+
State at each step, starting at `state0`.
|
|
119
|
+
"""
|
|
120
|
+
dim = state0.shape[0]
|
|
121
|
+
states = np.empty((n_steps + 1, dim))
|
|
122
|
+
times = np.empty(n_steps + 1)
|
|
123
|
+
states[0] = state0
|
|
124
|
+
times[0] = t0
|
|
125
|
+
state = state0.copy()
|
|
126
|
+
t = t0
|
|
127
|
+
for i in range(n_steps):
|
|
128
|
+
state = euler_step(rhs, state, t, dt, params)
|
|
129
|
+
t = t0 + (i + 1) * dt
|
|
130
|
+
states[i + 1] = state
|
|
131
|
+
times[i + 1] = t
|
|
132
|
+
return times, states
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
@njit
|
|
46
136
|
def rk4_step(
|
|
47
137
|
rhs: RHSFunc,
|
|
48
138
|
state: NDArray[np.float64],
|
|
@@ -78,7 +168,7 @@ def rk4_step(
|
|
|
78
168
|
return state + (dt / 6.0) * (k1 + 2.0 * k2 + 2.0 * k3 + k4)
|
|
79
169
|
|
|
80
170
|
|
|
81
|
-
@njit
|
|
171
|
+
@njit
|
|
82
172
|
def rk4_integrate(
|
|
83
173
|
rhs: RHSFunc,
|
|
84
174
|
state0: NDArray[np.float64],
|
|
@@ -127,7 +217,7 @@ def rk4_integrate(
|
|
|
127
217
|
return times, states
|
|
128
218
|
|
|
129
219
|
|
|
130
|
-
@njit
|
|
220
|
+
@njit
|
|
131
221
|
def leapfrog_step(
|
|
132
222
|
force: RHSFunc,
|
|
133
223
|
pos: NDArray[np.float64],
|
|
@@ -168,7 +258,7 @@ def leapfrog_step(
|
|
|
168
258
|
return pos_new, vel_new
|
|
169
259
|
|
|
170
260
|
|
|
171
|
-
@njit
|
|
261
|
+
@njit
|
|
172
262
|
def leapfrog_integrate(
|
|
173
263
|
force: RHSFunc,
|
|
174
264
|
pos0: NDArray[np.float64],
|
|
@@ -241,7 +331,7 @@ _YOSHIDA_W0 = -_YOSHIDA_CBRT2 / (2.0 - _YOSHIDA_CBRT2)
|
|
|
241
331
|
_YOSHIDA_W1 = 1.0 / (2.0 - _YOSHIDA_CBRT2)
|
|
242
332
|
|
|
243
333
|
|
|
244
|
-
@njit
|
|
334
|
+
@njit
|
|
245
335
|
def yoshida4_step(
|
|
246
336
|
force: RHSFunc,
|
|
247
337
|
pos: NDArray[np.float64],
|
|
@@ -292,7 +382,7 @@ def yoshida4_step(
|
|
|
292
382
|
return pos, vel
|
|
293
383
|
|
|
294
384
|
|
|
295
|
-
@njit
|
|
385
|
+
@njit
|
|
296
386
|
def yoshida4_integrate(
|
|
297
387
|
force: RHSFunc,
|
|
298
388
|
pos0: NDArray[np.float64],
|