IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python SymPy1:SymPy 变量、表达式 -> 正文阅读

[Python知识库]Python SymPy1:SymPy 变量、表达式

SymPy是一个Python的科学计算库,用一套强大的符号计算体系完成诸如多项式求值、求极限、解方程、求积分、微分方程、级数展开、矩阵运算等等计算问题。

import sympy

1. 定义变量和表达式

1.1 定义一个Symbol类型的变量。

symbols("变量名", 变量类型)

# 定义1个变量x
x = symbols('x')
# 定义多个变量
x, y, z = symbols('x, y, z')
# 定义正数
x, y = symbols('x, y', positive=True)
# 定义实数
x, y = symbols('x, y', real=True)
# 定义整数
x, y = symbols('x, y', integer=True)

SymPy定义的变量在计算中可以放在表达式中输出。

from sympy import *

x = symbols("x")
print(x + 1)

输出:

x + 1

1.2 使用字符串定义表达式

from sympy import *

x, = symbols("x,")
str_ = "x**2 + 1"
expr = sympify(str_)
print(expr)

输出:

x**2 + 1

1.3 创建有理数

Rational(分子, 分母)

from sympy import *

expr = Rational(1, 3)
print(expr)

输出:

1/3

2. 替换

将表达式中的变量替换成其他变量、表达式或代入具体数值计算。可以传入列表进行多个变量同时替换。

subs(原变量, 要替换的值)

from sympy import *

x, y = symbols("x, y")
expr = x**2 + 1
print(expr)
expr = expr.subs(x, y)
print(expr)
expr = expr.subs(y, 4)
print(expr)

输出:

x**2 + 1
y**2 + 1
17

3. 输出值

SymPy输出数字时,默认输出化简后的代数表达式。如果想要输出float,使用evalf:

expr.evalf()

参数可选,为精确到小数点后位数

from sympy import *

x = symbols("x")
expr = sqrt(8)
print(expr)
expr = expr.evalf()
print(expr)
print(pi.evalf(20))

?输出:

2*sqrt(2)
2.82842712474619
3.1415926535897932385

4. 计算多点处的函数值

将多个自变量映射到同一个函数上,求出多个函数值。

lambdify(x, f(x), "numpy") 输出类型为NumPy

返回值为一个函数,函数的参数可以是numpy数组,求得对应的函数值。

import numpy as np
from sympy import *

a = np.arange(10)
expr = x**2
f = lambdify(x, expr, "numpy")
print(f(a))

输出:

[ 0? 1? 4? 9 16 25 36 49 64 81]

5. 判断相等

==判断两个表达式是否完全相等。要判断函数是否相等,可以使用equals。

expr1.equals(expr2)

返回值:相等返回True,否则返回False

?例:判断是否相等。

from sympy import *

expr1 = cos(x)**2 - sin(x)**2
expr2 = cos(2*x)
print(expr1 == expr2)
print(expr1.equals(expr2))

?输出:

False
True

6. 常数

pi 圆周率

E 自然对数

oo 正无穷大

7. 化简/展开表达式

7.1 simplify可以智能选择一种最好的方法进行表达式化简。实际开发中,如果已知需要使用哪种化简方法,建议指定化简方法以节省程序运行时间。

from sympy import *

x = symbols("x")
print(simplify(sin(x) ** 2 + cos(x) ** 2))
print(simplify((x ** 2 - 1) / (x + 1)))

输出:

1
x - 1

7.2?expand可以展开表达式。

from sympy import *

x = symbols("x")
print(expand((x + 1) ** 2))

输出:

x**2 + 2*x + 1

7.3? factor可以进行多项式的因式分解。

from sympy import *

x = symbols("x")
print(factor(x**2 + 2*x + 1))

输出:

(x + 1)**2?

7.4 collect可以收集多项式中相同次幂的项。

from sympy import *

x, y = symbols("x, y")
expr = 3 * x ** 2 + y * x ** 2 + 1
print(expr)
print(collect(expr, x))

输出:

x**2*y + 3*x**2 + 1
x**2*(y + 3) + 1

7.5?cancel将任意有理函数转换为标准分式形式。

from sympy import *

x = symbols("x")
expr = (x ** 2 + 2 * x + 1) / (x ** 2 + x)
print(expr)
print(cancel(expr))

输出:

(x**2 + 2*x + 1)/(x**2 + x)
(x + 1)/x

7.6?apart对有理式进行裂项分解。

from sympy import *

x = symbols("x")
expr = (x ** 2 - 1) / x
print(expr)
print(apart(expr))

输出:

(x**2 - 1)/x
x - 1/x

7.7? trigsimp可以通过三角恒等式简化三角函数。

from sympy import *

x = symbols("x")
expr = trigsimp(sin(x) * tan(x) / sec(x))
print(expr)

输出:

sin(x)**2

7.8?expand_trig可以展开三角函数。

from sympy import *

x = symbols("x")
expr = expand_trig(sin(2 * x))
print(expr)

输出:

2*sin(x)*cos(x)

?7.9 powsimp可以简化幂函数(将化为)。??

from sympy import *

x, a, b = symbols("x, a, b")
expr = powsimp(x ** a * x ** b)
print(expr)

输出:

x**(a + b)

7.10? expand_power_exp可以将幂函数转化为的形式。

from sympy import *

x, a, b = symbols("x, a, b")
expr = expand_power_exp(x ** (a + b))
print(expr)

?输出:

x**a*x**b

?7.11 expand_power_base可以将幂函数转化为的形式。

from sympy import *

x, y, a = symbols("x, y, a")
expr = expand_power_base((x * y) ** a)
print(expr)

?输出:

(x*y)**a

?7.12 powdenest可以将幂函数转化为的形式。

from sympy import *

x, a, b = symbols("x, a, b")
expr = powdenest((x ** a) ** b)
print(expr)

?输出:

(x**a)**b

7.13 expand_log可以将对数函数展开为的形式。注:log代表自然对数。

log(真数, 底数)

from sympy import *

x, y = symbols("x, y")
expr1 = expand_log(log(x ** 3), force=True)
expr2 = expand_log(log(x * y), force=True)
print(expr1)
print(expr2)

?输出:

3*log(x)
log(x) + log(y)

?7.14 logcombine?可以将对数函数??展开为?的形式。

from sympy import *

x, y = symbols("x, y")
expr1 = logcombine(3 * log(x), force=True)
expr2 = logcombine(log(x) + log(y), force=True)
print(expr1)
print(expr2)

输出:

log(x**3)
log(x*y)

8. 内置函数

factorial(n) 阶乘

gamma(n) gamma函数

binomial(总数, 个数) 组合

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:35:59  更:2021-07-29 11:36:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 1:22:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码