新手求助:自编高斯消元if判断怎么不起作用?
时间:2011-03-13
来源:互联网
编了个小代码,用高斯消元的方法把一个行列式变成上三角的,代码如下:
复制代码
测试情况如下:
复制代码
我明明加了if来避免0除情况,怎么没起作用?求高手指点
- def dyh_gauss_elimination(list1):
- # This function is used to transform a determination to upper-triangle determination
- temp = list1
- if dyh_query_dimensionality(temp)!=2:
- print 'This is not a determination'
- return False
- loop = min([len(temp),len(temp[0])])
- tolerance = 0.001
- for i in range(1,loop):
- # check the first dimension
- if abs(temp[i-1][i-1]) < tolerance:
- for j in range(i,len(temp)):
- if abs(temp[j][i-1]) > tolerance:
- temp1 = temp[i-1]
- temp[i-1] = temp[j]
- temp[j] = temp1
- break
- if abs(temp[i-1][i-1]) >= tolerance:
- for j in range(i,len(temp)):
- lambda1 = -1.0 * temp[j][i-1]/temp[i-1][i-1]
- for k in range(i-1,len(temp[j])):
- temp[j][k] += lambda1 * temp[i-1][k]
-
- return temp
- >>> from dyh_models import dyh_gauss_elimination as dyh
- >>> b = [[4,-2,1],[-2,4,-2],[1,-2,4]]
- >>> dyh(b)
- [[4, -2, 1], [0.0, 3.0, -1.5], [0.0, 0.0, 3.0]]
- >>> b = [[1]*3]*3
- >>> b
- [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
- >>> dyh(b)
- Traceback (most recent call last):
- File "<stdin>", line 1, in ?
- File "H:\ABAQUS\dyh_models\dyh_models.py", line 228, in dyh_gauss_elimination
- lambda1 = -1.0 * temp[j][i-1]/temp[i-1][i-1]
- ZeroDivisionError: float division
- >>> sys.version
- '2.4.3 (#0, Apr 2 2009, 18:40:00) [MSC v.1400 32 bit (Intel)]'
作者: lj2009jl 发布时间: 2011-03-13
这是很低级的问题吗,查看数100+却没人回复。。。。。
作者: lj2009jl 发布时间: 2011-03-14
本帖最后由 iamkey9 于 2011-03-14 09:39 编辑
lambda1 = -1.0 * temp[j][i-1]/temp[i-1][i-1]
ZeroDivisionError: float division
除 0 错误? 你 print temp[i-1][i-1] 看看是什么值?
可能要import demical, 用demical 来处理python中的float 值
lambda1 = -1.0 * temp[j][i-1]/temp[i-1][i-1]
ZeroDivisionError: float division
除 0 错误? 你 print temp[i-1][i-1] 看看是什么值?
可能要import demical, 用demical 来处理python中的float 值
作者: iamkey9 发布时间: 2011-03-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28