【python数据建模】Sympy库

2023-10-07 01:45
文章标签 python 数据 建模 sympy

本文主要是介绍【python数据建模】Sympy库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

Sympy库是进行符号运算的库。
与Scipy库的数值运算不同,Sympy的运算是在推理基础上进行的,不用考虑误差问题。
例如,在Scipy库中, 7 \sqrt7 7 计算中使用的是近似值,但是Sympy中, 7 \sqrt7 7 是以sqrt(7)的形式显示的。

符号类 Symbol

Symbol 是 symPy 库中最重要的类。 如前所述,符号计算是用符号完成的。 SymPy 变量是 Symbols 类的对象。
Symbol() 函数的参数是一个包含可以分配给变量的符号的字符串。
例如:

from sympy import Symbol 
x=Symbol('x') 
y=Symbol('y') 
expr=x**2+y**2 
print(expr)
"""
x**2 + y**2
"""

当然,也可以类似列表传输数据。在一个语句中定义多个符号变量。

abc模块

Sympy中的abc模块中,所有拉丁字母和希腊字母都被定义为符号。 引用该模块,可以不用实例化符号对象,提供方便。
例如:

from sympy.abc import x,y,z
print(x)

索引定义字符

可以使用类似于 range() 函数的语法来定义索引符号。 范围用冒号表示。 范围类型由冒号右侧的字符确定。
例如:

from sympy import symbols 
x=symbols('a:5')
"""
(a0, a1, a2, a3, a4)
"""

Sympy表达式的转换

evalf()& lambdaify()转换成python函数进行数值计算

转换成sympy表达式 sympify()

sympify() 函数用于转换任意表达式,使其可以用作 SymPy 表达式。 在 SymPy 中转换普通的 Python 对象,例如整数对象。 整数等,字符串也被转换为 SymPy 表达式。

import sympy as sy
from sympy.abc import x
expr="x**2+3*x+2" 
expr1=sy.sympify(expr) 
"""
x**2 + 3*x + 2
"""

simplify&expand

simplify()函数简化sympy表达式。
expand()函数可以进行多项式展开。
例如:

from sympy import * 
x=Symbol('x')
expr=sin(x)**2 + cos(x)**2 
print(simplify(expr))
"""
1
"""

积分

integrate()用于计算定积分和不定积分。定积分的计算只需传递参数

from sympy import * 
x,y = symbols('x y') 
expr=x**2 + x + 1 
print(integrate(expr, x))
"""
x**3/3 + x**2/2 + x
"""
print(integrate(expr, (x,1)))
"""
11/6
"""

积分变换

sympy.integrals.transforms 模块中定义了许多积分变换。
常用的是Laplace变换和傅里叶变换,对应的函数是:laplace_transform和fourier_transform

求方程

由于符号 = 和 == 在 Python 中被定义为赋值和相等运算符,因此它们不能用于制定符号方程。 SymPy 提供了 Eq() 函数来建立方程。

import sympy as sy
from sympy.abc import x,y
f=sy.Eq(x**2+y**2,4)
"""
建立了方程x^2+y^2=4
"""

代数方程 solveset()

solveset 的输出是解决方案的有限集。 如果没有解决方案,则返回 EmptySet

import sympy as sy
from sympy.abc import x
# solveset(f, symbol, domain=S.Complexes)
# domain:解的数域,默认在复数域上
f=sy.Eq(x**2+2*x+1,4)
print(sy.solveset(f,symbol=x))
"""
{-3, 1}
"""
f=sy.Eq(x**2,-1)
print(sy.solveset(f,symbol=x))
"""
{-I, I}
"""

线性方程 linsolve()

非线性方程 linsolve()

微分方程 dsolve()

打印输出Latex形式

latex()函数获得sympy表达式的latex形式,方便在latex编辑器中阅读。
例如:

import sympy as sy
from sympy.abc import x
print(sy.latex(sy.sqrt(x**2)))
"""
\sqrt{x^{2}}
"""

这篇关于【python数据建模】Sympy库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155278

相关文章

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4