目录

前言

符号化运算也是数值运算中的一个主要的领域,今天我们来学习以下,python里强大的符号运算库---sympy。今天讲的是第一讲,sympy的操作。

对应于官网的:Basic Operations

Basic Operation s:

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

(一)符号的初始化与输出设置-symbol() symbols() latex()

1.作用:

在sympy里进行符号运算之前,必须先定义sympy的符号,这样sympy才能识别该符号。

.init_printing(use_latex=True)开启时,在jupyter运行时,输出的是LaTeX的格式

使用:latex()函数,同样返回LaTeX的格式。

2.操作:

(1)说明:

符号的初始化分为两种形式:

  1. 单个符号的初始化:x = sympy.Symbol('x')
  2. 多个符号的初始化:x,y=sympy.symbol("x y")

(2)源代码:

import sympy as sy

# 符号化变量
x = sy.Symbol('x')
y, z = sy.symbols('y z') # 输出设置
sy.init_printing(use_latex=True) # 输出结果
print("x:", type(x))
print("y:", type(y))
print(x**2+y+z)
print(sy.latex(x**2+y+z))

(3)输出效果

(二)替换符号-subs(old,new)

1.说明:

sub是Substitution的简称,也就是替换,其有两个作用:

语法是:expr.sub(old,new)

  1. 数值替换,用数值替换符号,进行带入计算。
  2. 符号替换,用一些符号替换符号。

2.源代码:

from sympy import *

# 符号化变量
x, y, z = symbols('x y z') expr = x**2+1 # 数值替换
result = expr.subs(x, 2)
print("原式:", expr)
print("数值计算的结果:", result) # 符号替换
new_expr = expr.subs(x, y+z)
print("符号替换的结果:", new_expr)

3.输出效果:

4.注意点:

(1)是否改变原表达式

subs()函数不改变原表达式,并且返回一个修改的表达式。

(2)替换多个表达式

当需要替换多个表达式时,可以在subs()里使用列表

如:subs([(x,2), (y, 3), (z, 4)])

表示:将x替换成2,y替换成3,z替换成4

(三)将字符串变为sympy的表达式-sympify()

1.说明:

不要混淆了sympify()函数与 simplify()函数,前者是转化,后者是简化。

2.源代码:

from sympy import *

string = "x**2+2*y + z/2"

# 转化
expr = sympify(string) print("类型:", type(expr))
print("表达式:", expr)

3.输出效果:

(四)数值计算-evalf()

1.说明:

相当于python自带的eval()函数,只是进行的是float浮点数运算。

2.操作:

(1)对于数值表达式的运算

直接使用.evalf()函数

from sympy import *

expr = sqrt(8)

# 进行计算
result = expr.evalf() print(result)

(2)对于符号表达式的运算

对于表达式常用的是:

.evalf(subs={x: 2.4})

from sympy import *

# 符号化
x = Symbol('x') # 进行计算
expr = x**2+3
result = expr.evalf(subs={x: 2}) print(result)

(五)自定义表达式-lambdify()

1.说明:

该函数有点类似于lambda(),用于自己构造一个函数表达

2.源代码:

from sympy import *
import numpy as np x = Symbol('x') a = np.arange(10) expr = x**2 # 构造自己的函数
f = lambdify(x, expr, "numpy") print(f(a))

3.输出效果:

作者:Mark

日期:2019/03/15 周五

5.2Python数据处理篇之Sympy系列(二)---Sympy的基本操作的更多相关文章

  1. 4.2Python数据处理篇之Matplotlib系列(二)---plt.scatter()散点图

    目录 目录 前言 (一)散点图的基础知识 (二)相关性的举例 ==1.正相关== ==1.负相关== ==1.不相关== (三)实战项目以一股票的分析 目录 前言 散点图是用于观测数据的相关性的,有正 ...

  2. 3.2Python数据处理篇之Numpy系列(二)--- ndarray数组的创建与变换

    目录 (一)ndarray数组的创建 1.从列表以元组中创建: 2.使用函数创建: (二)ndarray数组的变换 1.维度的变换: 2.类型的变换: 目录: 1.ndarray数组的创建 2.nda ...

  3. 6.2Python数据处理篇之pandas学习系列(二)Series数据类型

    目录 目录 (一)Series的组成 (二)Series的创建 1.从标量中创建Series数据 2.从列表中创建Series数据 3.从字典中创建Series数据 4.从ndarry中创建Serie ...

  4. 5.1Python数据处理篇之Sympy系列(一)---Sympy的大体认识

    目录 目录 前言 目录 前言 sympy是python一个强大的数学符号运算第三方库,具体的功能请看下面操作 官网教程: https://docs.sympy.org/latest/tutorial/ ...

  5. 4.12Python数据处理篇之Matplotlib系列(十二)---绘图风格的介绍

    目录 目录 前言 (一)不同风格 1.说明: 2.使用: 3.代码使用: (二)例子演示 1.dark_background 2.bmh 3.fivethirtyeight 4.ggplot 5.gr ...

  6. 3.6Python数据处理篇之Numpy系列(六)---Numpy随机函数

    目录 目录 前言 (一)基础的随机函数 (二)轴的随机函数 (三)概率的随机函数 目录 前言 前一段日子学了numpy,觉得无趣,没有学完,不过后来看了看matplotlib,sympy等库时,频频用 ...

  7. 4.14Python数据处理篇之Matplotlib系列(十四)---动态图的绘制

    目录 目录 前言 (一)需求分析 (二)随机数的动态图 1.思路分析: 2.源代码: 2.输出效果: 目录 前言 学习matplotlib已经到了尾声,没有必要再继续深究下去了,现今只是学了一些基础的 ...

  8. 4.13Python数据处理篇之Matplotlib系列(十三)---轴的设置

    目录 目录 前言 (一)设置轴的范围 1.同时对于x,y轴设置 2.分别对与x,y轴的设置 (二)设置刻度的大小 1.普通的刻度设置 2.添加文本的刻度设置 3.主副刻度的设置 (三)设置轴的数据 1 ...

  9. 4.11Python数据处理篇之Matplotlib系列(十一)---图例,网格,背景的设置

    目录 目录 前言 (一)图例legend 1.默认不带参数的图例 2.添加参数的图例 3.将图例移动到框外 (二)网格grid 1.说明 2.源代码: 3.输出效果 (三)背景axses 1.设置全局 ...

随机推荐

  1. 【SQL进阶】03.执行计划之旅1 - 初探

    听到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. S ...

  2. Java接口的实例应用:致敬我的偶像——何塞·穆里尼奥

    文/沉默王二 曹操在<短歌行>中为杜康酒打过一个价值一亿个亿的广告——“何以解忧,唯有杜康”,我替曹操感到惋惜的是他本人并不会收到这笔不菲的代言费.想一想,要是三国时期的明星人物们有这个代 ...

  3. redis 系列25 哨兵Sentinel (高可用演示 下)

    一. Sentinel 高可用环境准备 1.1 Sentinel 集群环境 环境 说明 操作系统版本 CentOS  7.4.1708  IP地址 172.168.18.200 网关Gateway 1 ...

  4. 传统HTML页面实现模块化加载

    对于网站来说很多页面之间都有着大量的共享模块,如页头,页脚和用户栏等.对于具备后端视图引擎的框架来说这些共享都比较容易抽取,如asp.net mvc来说就有统一布局的MasterPage,@Secti ...

  5. 执行对象Statement、PreparedStatement和CallableStatement详解 JDBC简介(五)

    执行对象是SQL的执行者,SQL是“安排好的任务”,执行对象就是“实际工作的人”. 执行对象有三种: Statement.PreparedStatement和CallableStatement,他们都 ...

  6. Windows 10 安装 ElasticSearch

    Java环境准备 可以下载oracle最新的JDK,作为C#程序员,支持一下微软的Mobile OpenJDK,构建一下Java环境. 微软的OpenJDK是针对Xamarin.Android的SDK ...

  7. Java开发笔记(六)特殊数字的表达

    之前的文章提到,Java语言不但支持大众熟知的十进制数,也支持计算机特有的二进制数.八进制数和十六进制数.可是在给数值变量赋值的时候,等号右边的数字明显属于十进制,那究竟要如何书写其它进制的数字呢?为 ...

  8. 面向对象的一小步:添加ActiveRecord的Scope功能

    问题场景 我们用Yii2的ActiveRecord功能非常的方便,假如我们有个Model叫Student,那么ActiveQuery可以通过这种方式轻便地获得: $query = Student::f ...

  9. jsp基础语言-jsp代码段

    jsp代码段:是放在<% %>标记之间符合java语言规范的代码片段 格式:<% 代码段 %>  代码段中可以包含用于jsp变量和方法的声明.显示表达式.HTML以及调用Jav ...

  10. 树上倍增求LCA及例题

    先瞎扯几句 树上倍增的经典应用是求两个节点的LCA 当然它的作用不仅限于求LCA,还可以维护节点的很多信息 求LCA的方法除了倍增之外,还有树链剖分.离线tarjan ,这两种日后再讲(众人:其实是你 ...