[Python] 在Python中的高斯 - 赛德尔方法 →→→→→进入此内容的聊天室

来自 , 2020-11-17, 写在 Python, 查看 115 次.
URL http://www.code666.cn/view/fa733611
  1. ''' x,numIter,omega = gaussSeidel(iterEqs,x,tol = 1.0e-9)
  2.    Gauss-Seidel method for solving [A]{x} = {b}.
  3.    The matrix [A] should be sparse. User must supply the
  4.    function iterEqs(x,omega) that returns the improved {x},
  5.    given the current {x} ('omega' is the relaxation factor).
  6. '''
  7. from numpy import dot
  8. from math import sqrt
  9.  
  10. def gaussSeidel(iterEqs,x,tol = 1.0e-9):
  11.  
  12.     omega = 1.0
  13.     k = 10
  14.     p = 1
  15.     for i in range(1,501):
  16.         xOld = x.copy()
  17.         x = iterEqs(x,omega)
  18.         dx = sqrt(dot(x-xOld,x-xOld))
  19.         if dx < tol: return x,i,omega
  20.       # Compute relaxation factor after k+p iterations
  21.         if i == k: dx1 = dx
  22.         if i == k + p:
  23.             dx2 = dx
  24.             omega = 2.0/(1.0 + sqrt(1.0 - (dx2/dx1)**(1.0/p)))
  25.     print 'Gauss-Seidel failed to converge'
  26. #//python/7424

回复 "在Python中的高斯 - 赛德尔方法"

这儿你可以回复上面这条便签

captcha