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 相关文章推荐
基于hashlib模块--加密(详解)
Jun 21 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
使用python编写udp协议的ping程序方法
Apr 22 Python
Python hexstring-list-str之间的转换方法
Jun 12 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 Python
python通过matplotlib生成复合饼图
Feb 06 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Python Django搭建网站流程图解
Jun 13 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
基于python实现银行管理系统
Apr 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中用hash实现的数组
2011/07/17 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
javascript中floor使用方法总结
2019/02/02 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
Python多线程学习资料
2012/12/19 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
空字符串(“”)和null的区别
2012/11/13 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
文字自荐书范文
2014/02/10 职场文书
语文教学随笔感言
2014/02/18 职场文书
小学班主任培训方案
2014/06/04 职场文书
先进工作者申报材料
2014/12/23 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL