9 NumPy求解线性方程

线性代数是数学的一个重要分支。numpy.linalg模块包含线性代数的函数。使用这个模块,我们可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。

9.1 数学概念

根据矩阵的乘法,可以将线性方程组写成矩阵形式。

1). n元齐次线性方程组 $A_{m\times n}x_n = 0$

2). n元非齐次线性方程组 $A_{m\times n}x_n = b$

3). 称A为方程组的系数矩阵,B=(A,b)为非齐次线性方程组的增广矩阵。

9. 1.1 判定方程有解没解的定理

定理1:n元齐次线性方程组 $A_{m\times n}x_n = 0$有非零解的充分必要条件的系数矩阵A的秩即R(A)

定理2:n元非齐次线性方程组 $A_{m\times n}x_n = b$有解的充分必要条件的系数矩阵A的秩等于增广矩阵B=(A,b)的秩, R(A) = R(A, b) = n有唯一解,R(A) = R(A, b) < n有无穷个解。

9.1.2 NumPy里求秩序函数

Numpy的linalg模块里的matrix_rank函数可以求得矩阵的秩。

import numpy as np

c = np.eye(2, dtype=int)

print c, '# c'

print 'rank->', np.linalg.matrix_rank(c)

程序执行结果:

[[1 0]

[0 1]]# c

rank-> 2

9.2 求方程组的解

9.2.1 solve函数

Numpy的numpy.linalg.solve可以求得线性方程组的解。

from numpy import *

import numpy as np

a = np.array([[8, -6, 2],[-4, 11, -7],[4, -7, 6]])

b = np.array([[28],[-40],[33]])

x = np.linalg.solve(a, b)

print x

print np.allclose(np.dot(a, x), b)

9.2.2 inv函数

inv函数可以求a矩阵的逆矩阵,方程组$Ax = b$的解$x = A^{-1}b$也可求得方程组的解。

from numpy import *

import numpy as np

a = np.array([[8, -6, 2],[-4, 11, -7],[4, -7, 6]])

b = np.array([[28],[-40],[33]])

at = np.linalg.inv(a)

print at.dot(b)

9.3 linalg里的其他函数

在numpy.linalg模块里还有很多有用的函数,例如det求行列式值、使用eig函数求解特征值和特征向量、eigvals函数可以计算矩阵的特征值、lstsq 函数可以计算Ax = b的最小二乘解、qr函数等。

另外svd函数可以对矩阵进行奇异值分解。该函数返回3个矩阵:U、Sigma和V,其中U和V是正交矩阵,Sigma包含输入矩阵的奇异值。

python求解方程组_NumPy线性方程组求解相关推荐

  1. python线性方程组求解_python求解方程组的三种方法

    python求解方程组的三种方法: Numpy求解方程组x + 2y = 3 4x + 5y = 6 当然我们可以手动写出解析解,然后写一个函数来求解,这实际上只是用 Python 来单纯做" ...

  2. python解非线性方程组_python scipy求解非线性方程的方法(fsolve/root)

    使用scipy.optimize模块的root和fsolve函数进行数值求解线性及非线性方程,下面直接贴上代码,代码很简单 from scipy.integrate import odeint imp ...

  3. Java黑皮书课后题第1章:1.13(代数:求解2*2线性方程组)编写程序,求解以下方程组并显示x和y的值 3.4x+50.2y=44.5 2.1x+0.55y=5.9

    Java黑皮书课后题第1章:(代数:求解2*2线性方程组) 题目 题目描述 破题 代码块 方法评析 赘述 修改日志 题目 题目描述 求x和y值: 3.4x+50.2y=44.5 2.1x+0.55y= ...

  4. matlab中欠定方程组超定方程组_一篇文章入门大规模线性方程组求解

    前面介绍过主要的线性方程组求解库,参考附录.求解大规模线性方程组是仿真软件求解器的底层技术,求解器时间基本都消耗在方程组求解上.线性方程组的解法比较成熟,方法也有很多,而且不同的方法对应不同类型方程组 ...

  5. Python 克莱姆法则求解方程组

    克莱姆法则求解方程组 请用克莱姆法则解下面的线性方程2x2系统: 编写程序,用户输入数字a.b.c.d.e和f,然后显示x和y的结果.如果ad-bc为零,呈现"The equation ha ...

  6. 利用稀疏格式矩阵求解方程组以及机器学习训练速度对比

    本文要点: 1.几个稀疏矩阵的应用场景 2.scipy得到稀疏格式矩阵后专用的方程组求解器 3.用稀疏格式求解方程组的速度对比 4.稀疏矩阵与原矩阵内存大小对比 5.python稀疏格式与array格 ...

  7. 求解车流量之线性方程组

    目录 [问题描述] [问题要求] [背景补充] [问题解答] [衍生问题] [python代码展示] [模型总结] [问题描述] 图1 中的网络是,某市区一些单行道在一个下午,早些时候(以每小时车辆数 ...

  8. matlab解线性方程组后结果是小数,MATLAB线性方程组求解

    有唯一解线性方程组求法 对于一般的,有唯一解的线性方程组,我们可以转换成矩阵的形式: A x = b Ax=bAx=b 则可以用矩阵运算求解x,即x=A\b 有无穷解的线性方程组求法 齐次线性方程组的 ...

  9. 高斯消元法求解方程组

    引子 高斯消元法简介 引例 求解过程 编程实现高斯消元法C 1. 引子 1. 高斯消元法简介 数学上,高斯消元法(Gaussian Elimination),是线性代数规划中的一个算法,可用来为线性方 ...

  10. 第一章第十三题(代数:求解2 × 2线性方程组)(Algebra: solve 2 × 2 linear equations)

    *1.13(代数:求解2 × 2线性方程组)可以使用Cramer法则解下面的2 × 2线性方程组,假定ad-bc不为0: ax + by = e cx + dy = f x = (ed-bf)÷(ad ...

最新文章

  1. win10停止更新_新电脑到手第一件事,win10系统刷成win7,为何不直接预装win7?
  2. r语言清除变量_R语言(1)初识与数据结构
  3. Kafka是如何实现高吞吐率的
  4. find命令--Linux命令应用大词典729个命令解读
  5. Windows下UltraEdit查看Objective-C代码高亮工具
  6. MySQL安装时出现的问题
  7. Java集合(三、Hashtable)
  8. 手部精细动作有哪些_3-6岁手部精细动作训练游戏!促进孩子大脑发育
  9. MFC中的几个虚函数
  10. 古希腊神话,古罗马神话和北欧神话
  11. 优词词根词典mdx_中外英语词典223种(Txt格式)免费分享
  12. 大学物理复习笔记:机械振动基础
  13. Linux下好用的类似QQ截图工具
  14. 进击zheng项目zheng-umps-server
  15. 旅游网站首页——html
  16. 抽象类和具体类的区别
  17. 如何查询快递单号的全部物流信息
  18. excel表格怎么调整行高和列宽_wps表格课程08|调整行高列宽
  19. 在 dart fluter 中使用 typedef
  20. 如何把Word中艺术字转换为图片

热门文章

  1. 读书寄语:安忍的智慧
  2. 小米生态链成功的12个关键因素
  3. COGS 2075. [ZLXOI2015][异次元圣战III]ZLX的陨落
  4. 【渝粤题库】广东开放大学 汉语基础 形成性考核
  5. matlab 新建prj,操作方法:为 shapefile 创建投影元数据 (.prj) 文件
  6. 华硕笔记本bios设置u盘启动
  7. 2017年信息学奥赛NOIP普及组试题
  8. 深蓝学院 浙江大学免费开源课程 !
  9. python中pyecharts 柱状图 折线图混用_pyecharts折线图和柱状图
  10. Docker微服务-镜像构建交付和使用rancher进行容器创建管理