python - 求解带状联立方程时出现溢出错误
问题描述
我正在尝试使用计算物理书中的函数求解带状联立方程:http ://www-personal.umich.edu/~mejn/cp/programs/banded.py 但是,运行该函数会导致溢出错误:
OverflowError: cannot convert float infinity to integer in banded line 39: v[m] /= div
矩阵 A 和 w 是:
A =
[[ 3 -1 -1 ... 0 0 0]
[-1 4 -1 ... 0 0 0]
[-1 -1 4 ... 0 0 0]
...
[ 0 0 0 ... 4 -1 -1]
[ 0 0 0 ... -1 4 -1]
[ 0 0 0 ... -1 -1 3
w = [5 5 0 ... 0 0 0]
x = banded(A,w,2,2)
有人可以帮我弄清楚为什么使用此功能时会出现溢出错误吗?谢谢你。
解决方案
我认为您应该将 A 制成带状矩阵,如 banded.py 所示
( - - A02 A13 A24 ... ( - A01 A12 A23 A34 ... ( A00 A11 A22 A33 A44 ... ( A10 A21 A32 A43 A54 ... ( A20 A31 A42 A53 A64 ...
此外,我发现如果矩阵 A 或向量 w 中的矩阵元素是整数,则带状函数将无法正常工作,您可以考虑将其初始化为浮点数。
推荐阅读
- apache - Codeigniter 删除 index.php 在本地工作,但不适用于 aws ELB
- sparql - 如何使用 Python 确定两个 SPARQL 查询是否相同?
- c# - C# WPF Behavior 类,由于 Windows 缩放更改,卸载 UIElement 后 AssociatedObject 为 null
- python - 仅当所有任务完成后才保存任务结果
- swi-prolog - SWI Prolog 字体大小设置
- ios - iOS - 创建大量 UIImageViews 而不会冻结 UI
- javascript - 如何使用 JS 或 JQuery 迭代获取 gridview 单元格值
- python - 轮廓图和 PCA 图具有相同的颜色
- java - 在 Java 中反序列化包含 __type 而不是 @class 的 JSON
- c# - 如果整数看起来像这样 `010` 是第一个 0 考虑整数?