【sympy】sympy简介

1.什么是符号计算?

符号计算象征性地处理数学对象的计算。这意味着数学对象是准确而非近似地表示的,带有未评估变量的数学表达式以符号形式保留。
例,假设我们想使用内置的Python函数来计算平方根
code:

import math
print(math.sqrt(9))

结果

3.0

9是一个完美的平方,所以我们得到了确切的答案3。但是,假设我们计算出的数字的平方根不是一个完美的平方

code

print(math.sqrt(8))

结果

2.82842712475

2.82842712475不是8的确切平方根,只是一个近似结果,假设我们确切一点 8 = 2 2 \sqrt{8}=2\sqrt{2} 8 =22

code

import sympy
print(sympy.sqrt(8))

Out:

2*sqrt(2)

在这里我们开始看到符号计算的真正功能,符号化的符号结果可以简化。

2.更有趣的例子

让我们定义一个符号表达式,代表数学表达式 x + 2 y x+2y x+2y

code:

from sympy import symbols
x, y = symbols('x y')
expr = x + 2*y
expr
Out[2]: 
x + 2*y

注意,我们写 x + 2 ∗ y x + 2 * y x+2y就像 x x x y y y是普通的Python变量一样。 但是在这种情况下,表达式不求值,而是保持为 x + 2 ∗ y x + 2 * y x+2y。 现在让我们做一下:

expr + 1
Out[3]: 
x + 2*y + 1

expr - x
Out[4]: 
2*y

当我们输入 e x p r − x expr-x exprx时,我们没有得到 x + 2 ∗ y − x x + 2 * y-x x+2yx,而只有 2 ∗ y 2 * y 2y x x x − x -x x相互抵消。在SymPy中并非总是如此。

x*expr
Out[5]: 
x*(x + 2*y)

在这里,我们可能期望 x ( x + 2 y ) x(x + 2y) xx+2y转换为 x 2 + 2 x y x^{2} + 2xy x2+2xy,但大多数简化都不是自动执行的。
在SymPy中,有些功能可以从一种形式转换为另一种形式

from sympy import expand, factor
expanded_expr = expand(x*expr)
expanded_expr
Out[6]: 
x**2 + 2*x*y

factor(expanded_expr)
Out[7]: 
x*(x + 2*y)

3.符号计算的魅力

诸如SymPy之类的符号计算系统的真正能力是能够以符号方式进行各种计算。SymPy可以简化表达式,求导,积分和极值,求解方程式,使用矩阵等等,都可以用符号来完成。

from sympy import *
x, t, z, nu = symbols('x t z nu')
init_printing(use_unicode=True)# 这将使所有其他示例使用unicode字符进行打印

例1:对 s i n ( x ) e x sin(x)e^{x} sin(x)ex求导

print(diff(sin(x)*exp(x), x))

exp(x)*sin(x) + exp(x)*cos(x)

例2:计算 ∫ ( e x s i n ( x ) + e x c o s ( x ) )   d x \int(e^{x}sin(x)+e^{x}cos(x))~dx (exsin(x)+excos(x)) dx

print(integrate(exp(x)*sin(x) + exp(x)*cos(x), x))

exp(x)*sin(x)

例3:计算 ∫ − o o o o s i n ( x 2 )   d x \int_{-oo}^{oo}sin(x^{2})~dx oooosin(x2) dx

print(integrate(sin(x**2), (x, -oo, oo)))

sqrt(2)*sqrt(pi)/2
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值