设为首页 加入收藏

TOP

Python 线性方程组求解之:Jacobi迭代算法
2019-06-12 00:06:05 】 浏览:6
Tags:Python 线性 方程 求解 Jacobi 算法
  1. import numpy as np
  2. Delta=0.0001#精度要求
  3. #数据读取
  4. data = []
  5. f = open("H:/Notepad/数学实验/jacobi_data.txt")
  6. for line in f:
  7. line = line.replace("\n","")
  8. data.append(list(map(eva l, line.split(","))))
  9. f.close()
  10. data=np.array(data)
  11. #对data行初等变换,主元变为每列最大值
  12. row,column=data.shape
  13. for i in range(row):
  14. max_value_index=np.argmax(np.fabs(data[i:row,i]))
  15. temp=np.copy(data[i,:])
  16. data[i,:]=data[max_value_index+i,:]
  17. data[max_value_index+i,:]=temp
  18. #LU: -(L+U)
  19. #D:系数矩阵的对角线元素
  20. #b:Ax=b中的b
  21. LU=np.negative(data[:,0:column-1])
  22. D=np.zeros(row)
  23. b=data[:,column-1]
  24. for i in range(row):
  25. D[i]=data[i,i]
  26. LU[i,i]=0
  27. #迭代求解
  28. x=np.ones(row)#用于存储迭代过程中x的值
  29. y=np.ones(row)#用于存储中间结果
  30. for iteration in range(100):
  31. print('x:',x)
  32. #迭代计算
  33. for i in range(row):
  34. y[i]=np.vdot(LU[i,:],x)+b[i]
  35. y[i]=y[i]/D[i]
  36. #判断是否达到精度要求
  37. if np.max(np.fabs(x-y))<Delta:
  38. print('iteration:',iteration)
  39. break
  40. #将y幅值到x,开始下一轮迭代
  41. x=np.copy(

    y)

原理:

注:

 

实例数据:jacobi_data.txt 。组织方式:[A,b]

2,-1,-1,-5
1,1,10,11
1,5,-1,8

 


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python学习-8 用户有三次机会登陆 下一篇Web框架之Django_04 模板层了解(..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }