python 做 Gauss-Seidal 迭代
2013-12-13 15:05
405 查看
#coding:utf-8
import numpy as np
import scipy.linalg as sp
# jacobi diedai
a=np.array([[2,-1,1],[1,1,1],[1,1,-2]]) #AX=B
b=np.array([[1,1,1]])
print 'straight resout=',sp.solve(a,b.T)
print 'jacobi resout=',sp.inv(a).dot(b.T)
l1=sp.tril(a) #上三角矩阵
u1=sp.triu(a) #下三角矩阵
d=l1+u1-a
l=d-l1
u=d-u1
bj=sp.inv(d-l).dot(u) #Gauss-Seidel迭代收敛到充分必要条件就是(D-L)到逆矩阵X (U)的最大特征值小于1
print 'bj=', bj
g=sp.inv(d-l).dot(b.T)
print 'g=', g
lamda=sp.eigvals(bj).max()
x0=np.array([[0,0,0]]).T
print 'x0=' ,x0
if lamda<1:
while 1:
x1=bj.dot(x0)+g
print 'x1=',x1
if (x1-x0).all()<1e-10: #判断迭代的停止条件
break
x0=x1
print 'Jacobi resout=', x1
print 'real resout', sp.solve(a,b.T)
import numpy as np
import scipy.linalg as sp
# jacobi diedai
a=np.array([[2,-1,1],[1,1,1],[1,1,-2]]) #AX=B
b=np.array([[1,1,1]])
print 'straight resout=',sp.solve(a,b.T)
print 'jacobi resout=',sp.inv(a).dot(b.T)
l1=sp.tril(a) #上三角矩阵
u1=sp.triu(a) #下三角矩阵
d=l1+u1-a
l=d-l1
u=d-u1
bj=sp.inv(d-l).dot(u) #Gauss-Seidel迭代收敛到充分必要条件就是(D-L)到逆矩阵X (U)的最大特征值小于1
print 'bj=', bj
g=sp.inv(d-l).dot(b.T)
print 'g=', g
lamda=sp.eigvals(bj).max()
x0=np.array([[0,0,0]]).T
print 'x0=' ,x0
if lamda<1:
while 1:
x1=bj.dot(x0)+g
print 'x1=',x1
if (x1-x0).all()<1e-10: #判断迭代的停止条件
break
x0=x1
print 'Jacobi resout=', x1
print 'real resout', sp.solve(a,b.T)
相关文章推荐
- python迭代列出某文件夹下所有文件
- python迭代
- Python 对文件内容迭代 按行处理
- 【Python】python list 迭代删除
- python里使用enum库枚举类型的迭代
- 【Python 学习】通过yield 构建迭代生成器
- python数值范围内的迭代
- Python中(Dict和Set类型、函数、切片 、迭代 )
- python中的迭代器和可迭代对象
- 深入解析Python中的list列表及其切片和迭代操作
- python中迭代时使用索引
- Python基础入门之迭代
- python迭代,可迭代对象,生成器,迭代器--
- Python(八)切片、迭代、列表生成式、生成器
- python_如何进行反向迭代和实现反向迭代?
- 关于Python迭代问题的解释
- python-10-如何在一个for语句中迭代多个可迭代对象?
- python中的文件迭代操作
- 判断一个对象是否可迭代 的方法 分类: python 2015-03-27 12:20 82人阅读 评论(0) 收藏
- python迭代工具