一、说明

对于方程,首先将方程组中的系数矩阵A分解成三部分,即:,其中D为对角阵,L为下三角矩阵,U为上三角矩阵。

 所以 ,进一步:

因此雅可比迭代公式:

(称为雅可比迭代矩阵)

二、雅可比迭代的前提

对于线性方程,用雅可比迭代求解是需要条件有三:

  • 方阵A必须是非奇异的,即A的行列式必须非0
  • 对角线元素必须非0
  • 矩阵A对角占优

对角优势矩阵是指一矩阵的每一横行,对角线上元素的大小大于或等于同一横行其他元素大小的和,一矩阵A为对角优势矩阵若

其中aij为第i行第j列的元素。

三、程序实现

#!/usr/bin/python
# _*_ coding: UTF-8 _*_import numpy as np#雅可比迭代法
def Jacobi(A,B,x0,x,eps,k):"""雅可比迭代法Args:A:为方程组的系数矩阵B:为方程组右端的列向量x:为迭代初值构成的列向量x:迭代向量eps :精度误差k:最大迭代次数Returns:times:迭代次数x:Array数组,方程的解Raises:"""n,m = A.shapeif n!=m:print("invalid data!")return Nonetimes = 0while times<k:for i in range(n):temp = 0for j in range(n):if i != j:temp += x0[j] * A[i][j]x[i] = ((B[i] - temp) / A[i][i])error = max(abs(x - x0))times += 1if error < eps:print("精确度等于", eps, "时,雅可比迭代法需要迭代", times, "次收敛")return (x, times)else:x0 = x.copy()print("在最大迭代次数内不收敛","最大迭代次数后的结果为",x)return Noneif __name__ == '__main__':      #当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。a = np.array([[8, -3, 2], [4, 11, -1], [6, 3, 12]])b = np.array([20, 33, 36])x = np.array([0, 0, 0])     #迭代初始值x0=x.copy()g = 1e-6Jacobi(  a, b, x0, x, g, 100)print(x)

关于雅可比迭代的Python实现相关推荐

  1. 线性联立方程的雅可比迭代解(jacobi Iteration).(python,数值积分)

    第八课 线性联立方程的雅可比迭代 迭代方法 在前面几节中,已经描述了线性代数方程组的"直接"解法.我们所说的"直接"是指求解方法是通过固定次数的运算得到答案.由 ...

  2. python数值分析算例_只要一杯秋天的奶茶,就能学会Python数值分析(2)

    只要一杯秋天的奶茶,就能学会Python数值分析(2) 上节(https://www.jianshu.com/p/671a94ce586b)说到高斯消元法,今天从高斯列主元消元法开始,拓展到线性方程组 ...

  3. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  4. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  5. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  6. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  7. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  8. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  9. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

最新文章

  1. AndroidUI 视图动画-旋转动画效果 (RotateAnimation)
  2. SQL中的left outer join,inner join,right outer join用法
  3. 比特币钱包私钥_如何通过私钥创建比特币钱包地址
  4. 企业级实战01_ActiveMQ 下载、安装、运行、实战需求
  5. 数据结构-王道-排序
  6. Python风格总结:面向对象
  7. Python学习路程-常用设计模式学习
  8. gitee怎么仓库间传文件_薄书的Gitee 码云使用教程学习纪录 - 薄书
  9. android gps信号一直获取不到_抵押车的GPS到底能不能拆干净!
  10. 洛谷P4568 飞行路线
  11. 媒体选择与发布实践总结
  12. 霹雳吧啦Wz语义分割学习笔记P1
  13. FreeMarker生成复杂word(包含图片,表格)
  14. Ubuntu下配置FreeRADIUS + PPTP/L2TP + Mysql + daloRADIUS
  15. NFS搭建错误处理:exportfs:No options for /home/source/*(rw,sync,no_root_squash):suggest(sync) to avoid warn
  16. vuepress引入外部组件后build报错window is not defined
  17. R3300L Android相关的记录
  18. Salome_meca2019安装教程
  19. python之Numpy随机抽样
  20. 软件开发过程的五个阶段

热门文章

  1. 文巾解题 178. 分数排名
  2. 产品路线图的三种模型(RICE/MoSCoW/Kano),教你如何对需求进行优先级排序
  3. BI工具和数据中台有什么区别?数据中台初探
  4. MATLAB编程经典程序 素数的判断,求0~100素数之和
  5. Typora操作指南
  6. 浅谈主动学习(Active Learning)
  7. python 获得github代码库列表
  8. What type of NoSQL database is best suited to store hierarchical data?【转】
  9. 基于Spring Boot和Spring Cloud实现微服务架构学习--转
  10. spring aop实现过程之二Spring AOP中拦截器链