菜单

数学与科学算法

相关源文件

本节涵盖了仓库中实现的数学和科学算法,包括几何计算、数论、蒙特卡洛方法、数字图像处理、矩阵运算、物理模拟和优化算法。这些实现既用于教育目的,也用于科学计算中的实际应用。

有关图论算法(如最短路径和网络分析),请参阅 图论算法与网络分析。有关机器学习算法,请参阅 机器学习算法

算法领域概述

数学和科学算法被组织成几个关键领域,每个领域都解决不同的计算挑战

来源: 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) 创建一个布尔数组并系统地标记合数

  1. 初始化大小为 num + 1 的布尔数组,所有值为 True
  2. p = 2 开始,将 p 的所有倍数标记为 False
  3. 查找下一个未标记的数字并重复
  4. 返回仍然为 True 的索引列表

来源: 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 个植被指数

  • NDVI (归一化植被指数)(nir - red) / (nir + red)
  • EVI (增强型植被指数)2.5 * ((nir - red) / (nir + 6*red - 7.5*blue + 1))
  • CCCI (冠层叶绿素含量指数):涉及红边的复杂比率

来源: 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