python求解方程组的三种方法:

Numpy求解方程组x + 2y = 3

4x + 5y = 6

当然我们可以手动写出解析解,然后写一个函数来求解,这实际上只是用 Python 来单纯做“数值计算”. 但实际上,numpy.linalg.solve 可以直接求解线性方程组.

一般地,我们设解线性方程组形如 Ax=b,其中 A 是系数矩阵,b 是一维(n 维也可以,这个下面会提到),x 是未知变量. 再拿上面地最简单的二元一次方程组为例,我们用 numpy.linalg.solve 可以这样写:In [1]: import numpy as np

...: A = np.mat('1,2; 4,5') # 构造系数矩阵 A

...: b = np.mat('3,6').T # 构造转置矩阵 b (这里必须为列向量)

...: r = np.linalg.solve(A,b) # 调用 solve 函数求解

...: print r

...:

Out[1]: [[-1.]

[ 2.]]

那么前面提到的“ n 维”情形是什么呢?实际上就是同时求解多组形式相同的二元一次方程组,例如我们想同时求解这样两组:x + 2y = 3

4x + 5y = 6

和x + 2y = 7

4x + 5y = 8

就可以这样写:In [2]: import numpy as np

...: A = np.mat('1,2; 4,5') # 构造系数矩阵 A

...: b = np.array([[3,6], [7,8]]).T # 构造转置矩阵 b (这里必须为列向量),

...: 注意这里用的是 array

...: r = np.linalg.solve(A,b) # 调用 solve 函数求解

...: print r

...:

Out[2]: [[-1. -6.33333333]

[ 2. 6.66666667]]

SciPy 求解非线性方程组

一般来说,我们只需要用到 func 和 x0 就够了. func 是自己构造的函数,也就是需要求解的方程组的左端(右端为 0),而 x0 则是给定的初值.

我们来看一个具体的例子,求解:x + 2y + 3z - 6 = 0

5 * (x ** 2) + 6 * (y ** 2) + 7 * (z ** 2) - 18 = 0

9 * (x ** 3) + 10 * (y ** 3) + 11 * (z ** 3) - 30 = 0

就可以这么写:In [3]: from scipy.optimize import fsolve

...:

...: def func(i):

...: x, y, z = i[0], i[1], i[2]

...: return [

...: x + 2 * y + 3 * z - 6,

...: 5 * (x ** 2) + 6 * (y ** 2) + 7 * (z ** 2) - 18,

...: 9 * (x ** 3) + 10 * (y ** 3) + 11 * (z ** 3) - 30

...: ]

...:

...: r = fsolve(func,[0, 0, 0])

...: print r

...:

Out[3]: [ 1.00000001 0.99999998 1.00000001]

当然,SciPy 也可以用来求解线性方程组,这是因为 scipy.optimize.fsolve 本质上是最小二乘法来逼近真实结果.

SymPy 求解方程组

例如求解一个:x + 2 * (x ** 2) + 3 * (x ** 3) - 6 = 0

直接就是:In [4]: from sympy import *

...: x = symbols('x')

...: solve(x + 2 * (x ** 2) + 3 * (x ** 3) - 6, x)

Out[4]: [1, -5/6 - sqrt(47)*I/6, -5/6 + sqrt(47)*I/6]

本文地址:http://itbyc.com/Python/21595.html

转载请注明出处。

python线性方程组求解_python求解方程组的三种方法相关推荐

  1. 如何利用python解方程_Python 解方程的三种方法

    # 首发于我的博客 The North. 新年第一篇,搞起. 这回写一个好久之前想做,一直搁着没做的东西-- Python 解方程(其实是放假回家,趁着家里电脑重装 LOL 的时间过来写一篇). 咱这 ...

  2. python词频统计_python统计词频的三种方法

    1.利用字典dict来完成统计 #举例: a = [1 2 3 1 1 2] dict = {} for key in a: dict[key] = dict.get(key 0) + 1 #字典的g ...

  3. python编程阶乘_Python阶乘实现的三种方法

    最简单的方法 #通过用户输入数字计算阶乘# 获取用户输入的数字 num = int(input("请输入一个数字: ")) factorial = 1 #查看数字是负数,0或 正数 ...

  4. python if多条件并列判断的三种方法

    python if多条件并列判断的三种方法 如果使用python的if进行多个条件表达式的判断呢?下面介绍三种方法: 使用and或or来连接多个条件表达式,比如条件1 and 条件2 and条件3等等 ...

  5. 基于Python实现中文文本关键词抽取的三种方法 课程报告+项目源码及数据

    资源下载地址:https://download.csdn.net/download/sheziqiong/85737856 资源下载地址:https://download.csdn.net/downl ...

  6. Python除法保留两位小数点(三种方法实现)

    Python除法保留两位小数点(三种方法实现) 前言序锦 学过编程我们都知道,无论什么语言,其实都是相通的,,当我们学会了并掌握好了一种语言后,我们再去了解另外一种语言,其实就很容易了,今天我们就来一 ...

  7. c语言编程非线性方程求解,c语言计算机编程三种方法求解非线性方程

    c语言计算机编程三种方法求解非线性方程 本 科 专 业 学 年 论 文题 目:非线性方程求解比较姓 名: 何 娟 专 业: 计算机科学技术系 班 级: 08 级本科(2)班 指 导 老 师: 刘 晓 ...

  8. c语言编程非线性方程求解,c语言计算机编程三种方法求解非线性方程.doc

    c语言计算机编程三种方法求解非线性方程.doc 本 科 专 业 学 年 论 文题 目非线性方程求解比较姓 名 何 娟 专 业 计算机科学技术系 班 级 08 级本科(2)班 指 导 老 师 刘 晓 娜 ...

  9. python提供了方法用于读取文本文件内容_python提供了哪三种方法用于读取文本文件的内容?...

    三种方法分别是:"read()"."readline()"."readlines()"."read()"是一次性读取文件 ...

最新文章

  1. STK 卫星覆盖分析笔记
  2. varnish缓存的配置优化(redhat5.4)
  3. ORA-00904 的解决
  4. Schedule Problem spfa 差分约束
  5. Hadoop HDFS分布式文件系统 常用命令汇总
  6. 最新android 手机型号,各大安卓手机厂商Android 10系统更新汇总,你的机型支持吗?...
  7. 在VS中设置比较和谐的字体和颜色的方法
  8. 33种编程语言为您送上祝福,新年快乐!
  9. python高阶函数教学_Python 简明教程 --- 16,Python 高阶函数
  10. 【OpenCV 例程200篇】47. 图像增强—直方图匹配
  11. Ethercat解析(五)之基础答疑
  12. linux系统挂载磁盘慢,arch开机速度竟然是挂载磁盘拖慢了。。
  13. win10下安装lxml
  14. java mysql 分页计算公式_关于Java的分页算法,急!
  15. python画蜡烛致敬烈士_Python量化交易-绘制蜡烛图 !这个图不像你的钱哦!
  16. 单片机网关与linux网关区别,浅谈Linux的路由与网关
  17. bch纠错码 码长8_从HDMI视频数据带有BCH纠错码讨论线材对画质的影响
  18. 根据银行卡号获取对应的银行信息
  19. 演讲实录丨朱频频 让Bots无处不在
  20. 求大家别秀智商了:请给我的头像一顶圣诞帽@微信官方

热门文章

  1. PVE虚拟机篇-简介
  2. 电磁场与电磁波——恒定电场
  3. Ubuntu 7z安装
  4. java 素数求和,100-200之间所有素数求和程序代码(二个版本)
  5. java nonnull,java – “如果函数返回非null,则为NonNull”?
  6. Python 本地股票数据分析处理
  7. 中科云网:光伏行业获政策支持 持续向好
  8. 华为企业园区网络建设技术方案建议书
  9. seo的asp.net的分词包
  10. B站笔试真题之[编程题]小A最多会新认识的多少人