sympy 的练习
来源:互联网 发布:相册视频软件 编辑:程序博客网 时间:2024/06/05 21:52
sympy 符号运算学习笔记
6.1 符号运算的初步例子
import sympy
sympy.E**(sympy.I*sympy.pi) + 1
0
函数的展开 sympy.expand()
x = sympy.symbols("x", real=True)y = sympy.expand(sympy.exp(sympy.I*x), complex=True)y
I*sin(x) + cos(x)
泰勒级数 sympy.series()
tmp1 = sympy.series(sympy.cos(x), x, 0, 10)tmp1
1 - x**2/2 + x**4/24 - x**6/720 + x**8/40320 + O(x**10)
tmp2 = sympy.series(sympy.sin(x), x, 0, 10)tmp2
x - x**3/6 + x**5/120 - x**7/5040 + x**9/362880 + O(x**10)
定积分 sympy.integrate()
tmp3 = sympy.integrate(x*sympy.sin(x), x)tmp3
-x*cos(x) + sin(x)
不定积分 sympy.integrate()
tmp4 = sympy.integrate(x*sympy.sin(x), (x, 0, 2*sympy.pi))tmp4
-2*pi
利用定积分计算球的面积
x, y = sympy.symbols("x, y")r = sympy.symbols("r", positive=True)circle_area = 2*sympy.integrate(sympy.sqrt(r**2 - x**2), (x, -r, r))circle_area
pi*r**2
对表达式中的符号进行替换 sympy.subs()
- subs()的调用方式:
expression.subs(x, y): 将计算式中的x替换成y
expression.subs({x:y, u:v}): 使用字典进行多个替换
expression.subs([(x,y), (u,v)]): 使用列表进行替换
circle_area = circle_area.subs(r, sympy.sqrt(r**2 - x**2))circle_area
pi*(r**2 - x**2)
tmp4 = sympy.integrate(circle_area, (x, -r, r))tmp4
4*pi*r**3/3
数值微分
- 这里我们先定义三个符号对象x, h和f.其中定义f时设置cls参数为Function表示它是数学函数的符号。
x = sympy.symbols("x", real=True)h = sympy.symbols("h", positive=True)f = sympy.symbols("f", cls=sympy.Function)
- f是表示函数的符号,而f(x)是自变量为x的函数。
f_diff = f(x).diff(x, 1)f_diff
Derivative(f(x), x)
调用as_finite_diff(),将一阶倒数转换为使用f(x), f(x-h), f(x-2h), f(x-3h)表达的四点公式:
expr_diff = sympy.Derivative.as_finite_difference(f_diff, [x, x-h, x-2*h, x-3*h])expr_diff
11*f(x)/(6*h) - f(-3*h + x)/(3*h) + 3*f(-2*h + x)/(2*h) - 3*f(-h + x)/h
下面进行符号求导的运算
sym_dexpr = f_diff.subs(f(x), x*sympy.exp(-x**2)).doit()sym_dexpr
-2*x**2*exp(-x**2) + exp(-x**2)
6.2 数学表达式
- 符号
数学符号用Symbol对象表示,符号对象的name属性是符号名,符号名在显示由此符号构成的表达式时使用。如下面的例子
x = sympy.symbols("我是X", real=True)x.name
'我是X'
- 数学公式中的符号一般都有特定的假设,例如m, n通常是整数,而z经常用来表示复数,在使用symbols()创建符号的时候可以通过关键字指定所创符号的假定。例如:
m, n = sympy.symbols("m, n", integer=True)x = sympy.symbols("x", positive=True)
符号属性的查看
每个符号都有很多is_*属性,用来判断符号的各种假设条件。
[attr for attr in dir(x) if attr.startswith("is_") and attr.lower() == attr]
['is_algebraic', 'is_algebraic_expr', 'is_antihermitian', 'is_commutative', 'is_comparable', 'is_complex', 'is_composite', 'is_constant', 'is_even', 'is_finite', 'is_hermitian', 'is_hypergeometric', 'is_imaginary', 'is_infinite', 'is_integer', 'is_irrational', 'is_negative', 'is_noninteger', 'is_nonnegative', 'is_nonpositive', 'is_nonzero', 'is_number', 'is_odd', 'is_polar', 'is_polynomial', 'is_positive', 'is_prime', 'is_rational', 'is_rational_function', 'is_real', 'is_symbol', 'is_transcendental', 'is_zero']
数值
- sympy内部有一整套数值运算系统,sympy提供了一个S对象以方便用户将python的数值类型转换为sympy的数值类型。例如下面的例子
1/2 + 1/3
0.8333333333333333
sympy.S(1)/2 + 1/sympy.S(3)
5/6
- 浮点数的转换 sympy.N()
print(sympy.N(sympy.pi, 50))
3.1415926535897932384626433832795028841971693993751
输出格式的latex控制 %sympy_latex (此处有问题)
x, y = sympy.symbols("x, y")expr = sympy.expand((x+y)**3)expr
x**3 + 3*x**2*y + 3*x*y**2 + y**3
运算符号
**S**ympy重新定义了所有的数学运算符和数学函数。
- Add类表示加法
- Mul表示乘法
- Pow表示指数
阅读全文
0 0
- sympy 的练习
- Sympy的使用
- SymPy
- sympy
- (译)Sympy的矩阵操作
- Python 符号计算的瑞士军刀——SymPy
- 用SymPy简化神经网络的求导(微分)
- 使用Python的SymPy库解决数学运算问题
- 用Sympy计算高次方程的判别式
- 利用Sympy计算sin1°的最小多项式
- Sympy 基础
- python-sympy
- sympy-note
- sympy实战
- SymPy学习之SymPy Core
- 对一个线性方程组的求解(用sympy进行符号运算)
- SymPy Tutorial(译)
- Sympy符号计算库
- PHP的类,abstract类,interface及关键字extends和implements
- 始于足下,望君勉之
- 第二周项目—利用函数参数传递的三种方式
- ORA-1578 / ORA-26040
- android压力测试命令monkey详解
- sympy 的练习
- 检测是否有用到idfa iOS
- Java多线程--并发中集合的使用之LinkedTransferQueue
- Educational Codeforces Round 28 Random Query 思维
- 安卓原生开发图文混排显示
- 鼠标位置的获取clientX、pageX、offsetX,screenX的使用
- caffe代码详细注解--init
- I2C驱动的框架实现分析
- Logstash详解之——output模块