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聊天室实例程序分享
Jan 05 Python
探究python中open函数的使用
Mar 01 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python Django的安装配置教程图文详解
Jul 17 Python
对django views中 request, response的常用操作详解
Jul 17 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
Python threading的使用方法解析
Aug 28 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
Python selenium实现断言3种方法解析
Sep 08 Python
Python并发编程实例教程之线程的玩法
Jun 20 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
php的一个简单加密解密代码
2014/01/14 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
jQuery实现高级检索功能
2019/05/28 jQuery
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
python回调函数用法实例分析
2015/05/09 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python使用正则筛选信用卡
2019/01/27 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
python之生成多层json结构的实现
2020/02/27 Python
django queryset相加和筛选教程
2020/05/18 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
pandas针对excel处理的实现
2021/01/15 Python
法律进机关实施方案
2014/03/12 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android