python中0xf2_【太玄的Python工具箱】0X0A SymPy(源码版)

今天已经发过两遍这篇文章了。但是代码块和超链接都被B站的审核莫名其妙地吞掉了。所以为了内容完整性我还是发源码版吧。还是那句话,想获得好的阅读体验,上Github吧。https://github.com/TaiXuan91/TXToolLibrary

## 简述

SymPy也是SciPy.org的Python套件之一。SymPy是一个主要为Python提供符号运算功能的模块。

目前的数学运算主要可以分为符号运算和数值运算两部分。

符号运算更贴近于理想的数学理论。它将一些抽象符号按照约定的规则进行运算,而不一定纠结于用十进制小数表示一个数的具体值。多项式的展开和因式分解,方程的解析解,微积分运算的解析解等都属于典型的用符号运算工具库求解的问题。

而数值运算更偏向于工程和实用。它的关键词是近似与精确度。求解一个问题的解析解并不是数值运算所关心的。只要近似解能和解析解差不多就行了。如果不够近似,数值解法也不会试图去寻找解析解,而是通过更大的运算量来获取更高的精度。数值解其实用得比解析解更普遍。比如我们求圆的面积的时候一般是给出一个具体的近似解,而不是告诉别人这个圆的面积是$\pi$的多少倍。之前所介绍的NumPy,SciPy就是比较偏向于数值运算的工具包。

## 获取

使用pip安装SymPy(需要管理员权限)。

```bash

pip install sympy

```

## 基本使用

这里介绍两个我认为可能很有用的功能——化简多项式和求微积分。其实SymPy能做的比这多得多。具体请看官方的文档。

注意,为了方便查看每一步的结果,我推荐在ipython中运行这些实验代码。

首先我们导入SymPy:

```python

from sympy import *

```

`symbols`的作用是声明一个符号变量。就相当于我们在数学题中写的“设有变量x”。而从Python语法的角度来说,`symbols('x')`会返回一个“符号变量”类的对象。它的加减乘除等运算都已经被重载。我们直接把符号变量加键乘除就能得到对应的多项式。

```python

x,y=symbols('x y')

```

接下来我们尝试写两个多项式:

```python

f1=sin(x)**2 + cos(x)**2

print(f1)

f2=(x**3 + x**2 - x - 1)/(x**2 + 2*x + 1)

print(f2)

```

使用`simplify`函数可以对多项式进行化简。

```python

r1=simplify(f1)

print(r1)

r2=simplify(f2)

print(r2)

```

`limit`函数可以进行取极限运算。这个例子中,是令$sim(x)/x$中的$x$趋于$0$。

```python

limit(sin(x)/x, x, 0)

```

`diff`函数用于求微分(求导数)。

```python

diff(sin(x))

```

`integrate`函数用于求积分。像例子中的用法实际给出的答案是不带后边常数项的不定积分。

```python

integrate(x**2)

```

## 资料

[SymPy官网](http://www.sympy.org/en/index.html)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值