本节涵盖了仓库中实现的数学和科学算法,包括几何计算、数论、蒙特卡洛方法、数字图像处理、矩阵运算、物理模拟和优化算法。这些实现既用于教育目的,也用于科学计算中的实际应用。
有关图论算法(如最短路径和网络分析),请参阅 图论算法与网络分析。有关机器学习算法,请参阅 机器学习算法。
数学和科学算法被组织成几个关键领域,每个领域都解决不同的计算挑战
来源: maths/volume.py maths/prime_sieve_eratosthenes.py maths/pi_monte_carlo_estimation.py digital_image_processing/index_calculation.py divide_and_conquer/strassen_matrix_multiplication.py electronics/resistor_equivalence.py hashes/hamming_code.py genetic_algorithm/basic_string.py divide_and_conquer/power.py divide_and_conquer/inversions.py
maths/volume.py 模块提供了各种三维几何形状的全面体积计算。这些函数实现了标准的数学公式,并包含输入验证和错误处理。
| 功能 | 形状 | 公式 |
|---|---|---|
vol_cube() | 立方体 | 边³ |
vol_sphere() | 球体 | (4/3)πr³ |
vol_cylinder() | 圆柱体 | πr²h |
vol_cone() | 圆锥体 | (1/3)Bh |
vol_pyramid() | 金字塔 | (1/3)Bh |
vol_torus() | 环面 | 2π²Rr² |
该模块还包括用于球体交集和并集等的复杂几何运算
来源: maths/volume.py60-122 maths/volume.py124-170
埃拉托斯特尼筛法在 prime_sieve_eratosthenes() 中实现,用于高效生成给定范围内的素数。
函数 prime_sieve_eratosthenes(num) 创建一个布尔数组并系统地标记合数
num + 1 的布尔数组,所有值为 Truep = 2 开始,将 p 的所有倍数标记为 FalseTrue 的索引列表来源: maths/prime_sieve_eratosthenes.py15-46
pi_monte_carlo_estimation.py 模块通过随机抽样演示了用于估计数学常数的蒙特卡洛模拟。
Point 类封装了坐标操作
estimate_pi() 函数实现了核心蒙特卡洛算法
数学基础依赖于单位正方形中圆面积(π/4)与正方形面积(1)的比率。
来源: maths/pi_monte_carlo_estimation.py4-22 maths/pi_monte_carlo_estimation.py24-57
digital_image_processing/index_calculation.py 中的 IndexCalculation 类提供了用于遥感应用的全面植被指数套件。
该类在多个光谱通道上运行
| 渠道 | 波长范围 | 目的 |
|---|---|---|
| 近红外 (NIR) | 700-2500 nm | 植被检测 |
| 红边 | 680-730 nm | 植被胁迫 |
| 红光 | 635-700 nm | 叶绿素吸收 |
| 绿光 | 520-560 nm | 绿色植被 |
| 蓝光 | 450-490 nm | 大气校正 |
该类通过 calculation() 方法实现了超过 40 个植被指数
(nir - red) / (nir + red)2.5 * ((nir - red) / (nir + 6*red - 7.5*blue + 1))来源: digital_image_processing/index_calculation.py107-179 digital_image_processing/index_calculation.py217-242
Strassen 矩阵乘法算法在 strassen_matrix_multiplication.py 中实现,提供了比标准 O(n³) 矩阵乘法更高效的 O(n^2.807) 替代方案。
该实现包括用于矩阵操作的辅助函数
matrix_addition(): 元素级矩阵加法matrix_subtraction(): 元素级矩阵减法split_matrix(): 将矩阵分成四个象限default_matrix_multiplication(): 标准 2×2 乘法作为基本情况来源: divide_and_conquer/strassen_matrix_multiplication.py74-104 divide_and_conquer/strassen_matrix_multiplication.py107-155
resistor_equivalence.py 模块提供电路分析计算,实现电阻网络的基本定律。
| 功能 | 类型 | 公式 | 应用程序 |
|---|---|---|---|
resistor_series() | 系列 | R_eq = R₁ + R₂ + ... + Rₙ | 串联电阻 |
resistor_parallel() | 并行 | 1/R_eq = 1/R₁ + 1/R₂ + ... + 1/Rₙ | 并联支路 |
两个函数都包含验证,以确保正电阻值并妥善处理边缘情况。
来源: electronics/resistor_equivalence.py6-51
hamming_code.py 中的汉明码实现为数据传输提供了错误检测和纠正功能。
该实现包括
emitter_converter(): 根据汉明码规则添加奇偶校验位receptor_converter():解码消息并验证数据完整性来源: hashes/hamming_code.py71-147 hashes/hamming_code.py150-237
basic_string.py 中的遗传算法实现展示了字符串匹配问题的进化优化。
evaluate():根据字符对字符的匹配情况为个体打分crossover():通过在随机点组合父代字符串来创建后代mutate():以 MUTATION_PROBABILITY 的概率引入随机变化select():实现适应度比例选择来源: genetic_algorithm/basic_string.py24-95 genetic_algorithm/basic_string.py97-195
额外的数学工具通过分治法提供了基础运算的高效实现。
power.py 模块实现了快速幂
actual_power():使用递归平方 O(log n) 运算power():处理负指数的包装器inversions.py 模块使用两种方法对数组中的逆序对进行计数
count_inversions_bf():O(n²) 的暴力方法count_inversions_recursive():O(n log n) 的分治算法来源: divide_and_conquer/power.py1-49 divide_and_conquer/inversions.py43-118