目录

前言

sympy不仅在符号运算方面强大,在解方程方面也是很强大。

本章节学习对应官网的:Solvers

官方教程

https://docs.sympy.org/latest/tutorial/solvers.html

(一)求解多元一次方程-solve()

1.说明:

解多元一次方程可以使用solve(),在sympy里,等式是用Eq()来表示,

例如:\(2x=4\) 表示为:Eq(x*2, 4)

2.源代码:

  1. """
  2. 解下列二元一次方程
  3. 2x-y=3
  4. 3x+y=7
  5. """
  6. # 导入模块
  7. from sympy import *
  8. # 将变量符号化
  9. x = Symbol('x')
  10. y = Symbol('y')
  11. z = Symbol('z')
  12. # 解一元一次方程
  13. expr1 = x*2-4
  14. r1 = solve(expr1, x)
  15. r1_eq = solve(Eq(x*2, 4), x)
  16. print("r1:", r1)
  17. print("r1_eq:", r1_eq)
  18. # 解二元一次方程
  19. expr2 = [2*x-y-3, 3*x+y-7]
  20. r2 = solve(expr2, [x, y])
  21. print("r1:", r2)
  22. # 解三元一次方程
  23. f1 = x+y+z-2
  24. f2 = 2*x-y+z+1
  25. f3 = x+2*y+2*z-3
  26. r3 = solve([f1, f2, f3], [x, y, z])
  27. print("r3:", r3)

3.输出:

(二)解线性方程组-linsolve()

1.说明:

在sympy中,解线性方程组有三种形式:

  1. 默认等式为0的形式:linsolve(eq, [x, y, z])
  2. 矩阵形式:linsolve(eq, [x, y, z])
  3. 增广矩阵形式:linsolve(A,b, x, y, z)

2.源代码:

  1. """
  2. x+y+z-2=0
  3. 2x-y+z+1=0
  4. x+2y+2z-3=0
  5. """
  6. from sympy import *
  7. x, y, z = symbols("x y z")
  8. # 默认等式为0的形式
  9. print("======默认等式为0的形式 =======")
  10. eq = [x+y+z-2, 2*x-y+z+1, x+2*y+2*z-3]
  11. result = linsolve(eq, [x, y, z])
  12. print(result)
  13. print(latex(result))
  14. # 矩阵形式
  15. print("======矩阵形式 =======")
  16. eq = Matrix(([1, 1, 1, 2], [2, -1, 1, -1], [1, 2, 2, 3]))
  17. result = linsolve(eq, [x, y, z])
  18. print(result)
  19. print(latex(result))
  20. # 增广矩阵形式
  21. print("======增广矩阵形式 =======")
  22. A = Matrix([[1, 1, 1], [2, -1, 1], [1, 2, 2]])
  23. b = Matrix([[2], [-1], [3]])
  24. system = A, b
  25. result = linsolve(system, x, y, z)
  26. print(result)
  27. print(latex(result))

3.输出:

(三)解非线性方程组-nonlinsolve()

1.说明:

nonlinsolve()用于求解非线性方程组,例如二次方,三角函数,,,等方程

2.源代码:

  1. """
  2. x**2+y**2-2=0
  3. x**3+y**3=0
  4. """
  5. import sympy as sy
  6. x, y = sy.symbols("x y")
  7. eq = [x**2+y**3-2, x**3+y**3]
  8. result = sy.nonlinsolve(eq, [x, y])
  9. print(result)
  10. print(sy.latex(result))

3.输出:

\[\left\{\left ( -1, \quad 1\right ),\\ \left ( -1, \quad - \frac{1}{2} - \frac{\sqrt{3} i}{2}\right ),\\ \left ( -1, \quad - \frac{1}{2} + \frac{\sqrt{3} i}{2}\right ),\\ \left ( 1 - i, \quad -1 + i\right ),\\ \left ( 1 + i, \quad -1 - i\right ),\\ \left ( 1 - \frac{i \sqrt{- 6 \sqrt{3} + 12}}{2} - \frac{i \sqrt{- 2 \sqrt{3} + 4}}{2}, \quad \frac{1}{2} + \frac{\sqrt{3}}{2} + \frac{\sqrt{2} \sqrt{-2 + \sqrt{3}}}{2}\right ),\\ \left ( 1 - \frac{\sqrt{-12 - 6 \sqrt{3}}}{2} + \frac{\sqrt{-4 - 2 \sqrt{3}}}{2}, \quad - \frac{\sqrt{3}}{2} + \frac{1}{2} - \frac{\sqrt{-8 + \left(- \sqrt{3} + 1\right)^{2}}}{2}\right ),\\ \left ( 1 - \frac{\sqrt{-4 - 2 \sqrt{3}}}{2} + \frac{\sqrt{-12 - 6 \sqrt{3}}}{2}, \quad - \frac{\sqrt{3}}{2} + \frac{1}{2} + \frac{\sqrt{-8 + \left(- \sqrt{3} + 1\right)^{2}}}{2}\right ),\\ \left ( 1 + \frac{\sqrt{-4 + 2 \sqrt{3}}}{2} + \frac{\sqrt{-12 + 6 \sqrt{3}}}{2}, \quad \frac{1}{2} + \frac{\sqrt{3}}{2} - \frac{\sqrt{2} \sqrt{-2 + \sqrt{3}}}{2}\right )\right\}
\]

(四)求解微分方程-dsolve()

1.说明:

求解微分方程使用dsolve(),注意:

f = symbols('f', cls=Function)的作用是声明f()是一个函数。

2.源代码:

  1. from sympy import *
  2. # 初始化
  3. x = symbols('x')
  4. f = symbols('f', cls=Function)
  5. # 表达式
  6. expr1 = Eq(f(x).diff(x, x) - 2*f(x).diff(x) + f(x), sin(x))
  7. # 求解微分方程
  8. r1 = dsolve(expr1, f(x))
  9. print(r1)
  10. print("原式:", latex(expr1))
  11. print("求解后:", latex(r1))

3.输出:

原式:

\[f{\left (x \right )} - 2 \frac{d}{d x} f{\left (x \right )} + \frac{d^{2}}{d x^{2}} f{\left (x \right )} = \sin{\left (x \right )}
\]

解微分后:

\[f{\left (x \right )} = \left(C_{1} + C_{2} x\right) e^{x} + \frac{\cos{\left (x \right )}}{2}
\]

作者:Mark

日期:2019/03/17 周日

5.5Python数据处理篇之Sympy系列(五)---解方程的更多相关文章

  1. 4.5Python数据处理篇之Matplotlib系列(五)---plt.pie()饼状图

    目录 目录 前言 (一)简单的饼状图 (二)添加阴影和突出部分 (三)显示图例和数据标签: 目录 前言 饼状图需要导入的是: plt.pie(x, labels= ) (一)简单的饼状图 (1)说明: ...

  2. 3.5Python数据处理篇之Numpy系列(五)---numpy文件的存取

    目录 目录: (一)以文本形式存取 1.说明: 2.语法解释: 3.实例(以.csv文件为例) 4.效果展示 (二)以任意的形式存取 1.说明: 2.语法解释: 3.实例(以.bat二进制文件为例) ...

  3. 5.6Python数据处理篇之Sympy系列(六)---矩阵的操作

    目录 目录 前言 (一)矩阵的创建-Matrix() 1.说明: 2.源代码: 3.输出: (二)常用的构造矩阵 1.说明: 2.源代码: 3.输出: (三)基本操作 1.说明: 2.源代码: 3.输 ...

  4. 5.3Python数据处理篇之Sympy系列(三)---简化操作

    目录 5.3简化操作 目录 前言 (一)有理数与多项式的简化 1.最简化-simplify() 2.展开-expand() 3.提公因式-factor() 4.合并同类项-ceiling() 5.简化 ...

  5. 5.2Python数据处理篇之Sympy系列(二)---Sympy的基本操作

    目录 目录 前言 (一)符号的初始化与输出设置-symbol() symbols() latex() 1.作用: 2.操作: (二)替换符号-subs(old,new) 1.说明: 2.源代码: 3. ...

  6. 5.4Python数据处理篇之Sympy系列(四)---微积分

    目录 目录 前言 (一)求导数-diff() 1.一阶求导-diff() 2.多阶求导-diff() 3.求偏导数-diff() (二)求积分-integrate() (三)求极限-limit() ( ...

  7. 5.1Python数据处理篇之Sympy系列(一)---Sympy的大体认识

    目录 目录 前言 目录 前言 sympy是python一个强大的数学符号运算第三方库,具体的功能请看下面操作 官网教程: https://docs.sympy.org/latest/tutorial/ ...

  8. 4.3Python数据处理篇之Matplotlib系列(三)---plt.plot()折线图

    目录 前言 (一)plt.plot()函数的本质 ==1.说明== ==2.源代码== ==3.展示效果== (二)plt.plot()函数缺省x时 ==1.说明== ==2.源代码== ==3.展示 ...

  9. 3.6Python数据处理篇之Numpy系列(六)---Numpy随机函数

    目录 目录 前言 (一)基础的随机函数 (二)轴的随机函数 (三)概率的随机函数 目录 前言 前一段日子学了numpy,觉得无趣,没有学完,不过后来看了看matplotlib,sympy等库时,频频用 ...

随机推荐

  1. 【Storm篇】--Storm基础概念

    一.前述 Storm是个实时的.分布式以及具备高容错的计算系统,Storm进程常驻内存 ,Storm数据不经过磁盘,在内存中处理. 二.相关概念 1.异步: 流式处理(异步)客户端提交数据进行结算,并 ...

  2. Kafka~HelloWorld得来不易

    今天连搭了zookeeper和kafka的环境,并部署成功,但在.net驱动的操作下,没有消费成功,原因何在? 防火墙 zookeeper没运行? kafka没有公开IP? 第一感觉也就是这向个原因了 ...

  3. 不在models.py中的models

    概述 如何让你定义的model不在models.py中 在app的models目录中的models 你新建一个app后这个models.py就会自动建立,里面只有几行代码.那么如果是一个中大型项目,每 ...

  4. Spring IOC核心源码学习

    1. 初始化 大致单步跟了下Spring IOC的初始化过程,整个脉络很庞大,初始化的过程主要就是读取XML资源,并解析,最终注册到Bean Factory中: 在完成初始化的过程后,Bean们就在B ...

  5. spring框架应用系列四:切面编程(环绕通知与前后置通知区别)

    切面编程(环绕通知与前后置通知区别) 本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7867034.html 解决问 ...

  6. 【Java基础】【19异常&IO(File类)】

    19.01_异常(异常的概述和分类) A:异常的概述 异常就是Java程序在运行过程中出现的错误. B:异常的分类 通过API查看Throwable Error 服务器宕机,数据库崩溃等 Except ...

  7. leetcode — gray-code

    import org.lep.leetcode.groupanagrams.GroupAnagram; import java.util.ArrayList; import java.util.Arr ...

  8. ROS笔记 Topics

    http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics rostopic rqt_graph rosmsg rqt_graph 一个用于查看topi ...

  9. 第58章 Profile Service - Identity Server 4 中文文档(v1.0.0)

    IdentityServer通常在创建令牌或处理对userinfo或内省端点的请求时需要有关用户的身份信息.默认情况下,IdentityServer仅具有身份验证cookie中的声明,以便为此身份数据 ...

  10. 第20章 定义客户端 - Identity Server 4 中文文档(v1.0.0)

    客户端表示可以从您的身份服务器请求令牌的应用程序. 详细信息各不相同,但您通常会为客户端定义以下常用设置: 唯一的客户ID 如果需要的秘密 允许与令牌服务的交互(称为授权类型) 身份和/或访问令牌发送 ...