2.8 KiB
2.8 KiB
技术文档:fixed_sor.py
概述
本模块 fixed_sor.py 是一个用于解决数值计算中迭代方法(如逐次超松弛法,Successive Over-Relaxation, SOR)相关问题的 Python 脚本。该版本主要修复了之前版本中与 C 函数调用相关的 Bug,提升了代码的稳定性与兼容性。
版本信息
- 当前版本:
0.1.3 - 更新内容:
- 修复了与底层 C 函数交互时出现的 Bug。
- 增强了异常处理机制,避免因类型不匹配或内存访问错误导致程序崩溃。
- 提高了与外部 C 扩展模块的兼容性。
⚠️ 注意:此修复主要影响使用 C 扩展进行高性能计算的用户。纯 Python 用户通常不受影响,但仍建议升级以获得更好的稳定性。
安装与依赖
依赖项
- Python >= 3.7
- (可选)Cython 或 ctypes 支持(若使用 C 扩展)
安装方式
# 通过 pip 安装(假设已发布到 PyPI)
pip install fixed-sor==0.1.3
# 或本地安装
python setup.py install
使用示例
import fixed_sor
# 示例:求解线性方程组 Ax = b 使用 SOR 方法
A = [[4, -1, 0],
[-1, 4, -1],
[0, -1, 4]]
b = [15, 10, 15]
x = fixed_sor.solve(A, b, omega=1.2, max_iter=1000, tol=1e-6)
print("解为:", x)
API 参考
solve(A, b, omega=1.0, max_iter=1000, tol=1e-6)
使用 SOR 方法求解线性方程组 $Ax = b$。
参数:
| 参数 | 类型 | 说明 |
|---|---|---|
A |
list/list of lists 或 numpy.ndarray | 系数矩阵(必须为方阵且对角占优或正定) |
b |
list 或 numpy.ndarray | 常数向量 |
omega |
float | 松弛因子,默认为 1.0(即 Gauss-Seidel 方法) |
max_iter |
int | 最大迭代次数,默认 1000 |
tol |
float | 收敛容差,默认 1e-6 |
返回值:
list:解向量x
异常:
ValueError:输入矩阵维度不匹配或不满足 SOR 方法前提条件。RuntimeError:迭代未在最大次数内收敛。
更新日志(Changelog)
v0.1.3 — 2025-04-05
- ✅ 修复:C 函数接口中的内存访问越界问题
- ✅ 修复:数据类型转换错误(Python 到 C 的 double 数组传递)
- 🛠️ 优化:提升与 NumPy 数组的兼容性
- 📚 更新文档
v0.1.2 — 2024-XX-XX
- 添加基本 SOR 实现
- 支持列表和 NumPy 输入
开发与贡献
欢迎提交 Issue 和 Pull Request。请确保测试覆盖所有修改路径,特别是涉及 C 接口的部分。
GitHub 仓库:https://github.com/username/fixed-sor
许可证
MIT License
备注:本模块名称“fixed”强调其主要目标是修复先前版本中的关键缺陷,后续版本将逐步增强功能与性能。