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调用C/C++动态链接库的方法详解
Jul 22 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
Python 数据结构之队列的实现
Jan 22 Python
tensorflow构建BP神经网络的方法
Mar 12 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
python实现简单加密解密机制
Mar 19 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 Python
Python3离线安装Requests模块问题
Oct 13 Python
Python程序暂停的正常处理方法
Nov 07 Python
手把手教你使用TensorFlow2实现RNN
Jul 15 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生成图片验证码-附五种验证码
2015/08/19 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
JavaScript对象模型-执行模型
2008/04/28 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
JS查找孩子节点简单示例
2019/07/25 Javascript
python网络编程学习笔记(一)
2014/06/09 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
鲜果饮品店创业计划书
2014/01/21 职场文书
个人简历中自我评价
2014/02/11 职场文书
测绘工程专业求职信
2014/07/15 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
村党组织公开承诺书
2015/04/30 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL