Python数据处理篇之Sympy系列(五)---解方程


Posted in Python onOctober 12, 2019

前言

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

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

官方教程

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

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

1.说明:

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

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

2.源代码:

"""
 解下列二元一次方程
 2x-y=3
 3x+y=7
"""
# 导入模块
from sympy import *
# 将变量符号化
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
# 解一元一次方程
expr1 = x*2-4
r1 = solve(expr1, x)
r1_eq = solve(Eq(x*2, 4), x)
print("r1:", r1)
print("r1_eq:", r1_eq)
# 解二元一次方程
expr2 = [2*x-y-3, 3*x+y-7]
r2 = solve(expr2, [x, y])
print("r1:", r2)
# 解三元一次方程
f1 = x+y+z-2
f2 = 2*x-y+z+1
f3 = x+2*y+2*z-3
r3 = solve([f1, f2, f3], [x, y, z])
print("r3:", r3)

3.输出:

Python数据处理篇之Sympy系列(五)---解方程

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

1.说明:

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

默认等式为0的形式:linsolve(eq, [x, y, z])

矩阵形式:linsolve(eq, [x, y, z])

增广矩阵形式:linsolve(A,b, x, y, z)

2.源代码:

"""
  x+y+z-2=0
  2x-y+z+1=0
  x+2y+2z-3=0
"""
from sympy import *
x, y, z = symbols("x y z")
# 默认等式为0的形式
print("======默认等式为0的形式 =======")
eq = [x+y+z-2, 2*x-y+z+1, x+2*y+2*z-3]
result = linsolve(eq, [x, y, z])
print(result)
print(latex(result))
# 矩阵形式
print("======矩阵形式 =======")
eq = Matrix(([1, 1, 1, 2], [2, -1, 1, -1], [1, 2, 2, 3]))
result = linsolve(eq, [x, y, z])
print(result)
print(latex(result))
# 增广矩阵形式
print("======增广矩阵形式 =======")
A = Matrix([[1, 1, 1], [2, -1, 1], [1, 2, 2]])
b = Matrix([[2], [-1], [3]])
system = A, b
result = linsolve(system, x, y, z)
print(result)
print(latex(result))

3.输出:

Python数据处理篇之Sympy系列(五)---解方程

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

1.说明:

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

2.源代码:

"""
  x**2+y**2-2=0
  x**3+y**3=0
"""
import sympy as sy
x, y = sy.symbols("x y")
eq = [x**2+y**3-2, x**3+y**3]
result = sy.nonlinsolve(eq, [x, y])
print(result)
print(sy.latex(result))

3.输出:

Python数据处理篇之Sympy系列(五)---解方程

Python数据处理篇之Sympy系列(五)---解方程

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

1.说明:

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

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

2.源代码:

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

3.输出:

原式:

f(x)−2ddxf(x)+d2dx2f(x)=sin(x)
f(x)−2ddxf(x)+d2dx2f(x)=sin⁡(x)

解微分后:

f(x)=(C1+C2x)ex+cos(x)2
f(x)=(C1+C2x)ex+cos⁡(x)2

Python数据处理篇之Sympy系列(五)---解方程

总结

以上所述是小编给大家介绍的Python数据处理篇之Sympy系列(五)---解方程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
Python中join和split用法实例
Apr 14 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
Feb 11 Python
Python中如何导入类示例详解
Apr 17 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
Python实现快速排序的方法详解
Oct 25 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
如何使用Cython对python代码进行加密
Jul 08 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 03 Python
Python 制作自动化翻译工具
Apr 25 Python
详解Python绘图Turtle库
Oct 12 #Python
Python中的list与tuple集合区别解析
Oct 12 #Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 #Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 #Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 #Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 #Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 #Python
You might like
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
python3爬取数据至mysql的方法
2018/06/26 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
深入分析python 排序
2020/08/24 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
全球性的在线购物网站:Zapals
2017/03/22 全球购物
付款委托书范本
2014/04/04 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
2016年教代会开幕词
2016/03/04 职场文书
python实现的web监控系统
2021/04/27 Python