作者Lucemia (生の直感、死の予感)
看板Python
标题[教学] 使用 Sympy 做代数运算
时间Fri May 8 00:54:02 2009
http://code.google.com/p/sympy/
Sympy 是一个Python上好用的代数运算函数库,目前相当活跃,
并且其上还有一个叫Sage 的一个很大的open source mathethic software
计画在上面,未来应该会有更多持续的发展。
Sage
目标同时整合Magma, Maple, Mathematica, Matlab 的功能在python 平台!!
http://www.sagemath.org/
http://docs.sympy.org/tutorial.html#algebra
Sympy 很强的部份是代数运算
范例部份如下
首先先定义使用到的变数
>>> from sympy import *
>>> x = Symbol('x') # 定义名为x的变数
>>> y = Symbol('y') # 定义名为y的变数
之後就可以做代数的运算:
>>> x+y+x-y
2*x
>>> (x+y)**2
(x+y)**2
可以展开 expand, 代数替换 Substitude, 通分等多项式会需要的运算
另外很不错的是有支援微分与积分的功能
常用的微分积分功式都有纳入
>>> from sympy import *
>>> x = Symbol('x')
>>> diff(sin(x), x)
cos(x)
>>> diff(sin(2*x), x)
2*cos(2*x)
>>> diff(tan(x), x)
cos(x)**(-2)
>>> integrate(6*x**5, x)
x**6
>>> integrate(sin(x), x)
-cos(x)
>>> integrate(log(x), x)
x*log(x) - x
>>> integrate(2*x + sinh(x), x)
x**2 + cosh(x)
我目前是用他矩阵的功能来导连续旋转公式、相当好用
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> A = Matrix([[1,x], [y,1]])
>>> A #doctest: +NORMALIZE_WHITESPACE
[1 x]
[y 1]
>>> A**2 #doctest: +NORMALIZE_WHITESPACE
[1+x*y 2*x]
[2*y 1+x*y]
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 154.20.36.163
1F:推 KSJ:赞~虽然目前没用到 但需要用时实在很方便而强大 感谢教学:) 05/08 01:41
2F:推 StubbornLin:好棒 我也刚好需要算旋转矩阵之类的 手算都很烦 05/08 10:50
3F:→ StubbornLin:想说这些东西不是应该交给电脑算吗= = 05/08 10:50
4F:→ StubbornLin:不过一直找不到好用的工具 05/08 10:54
5F:推 rexrainbow:推推推~ 05/08 13:19
6F:推 Yshuan:推 真的好强大@@~ 05/08 13:54
7F:→ ykjiang:代数运算东西是 mathmatica 的强项, 05/08 13:57
8F:→ ykjiang:Python 有支援,当然要好好用 :) 05/08 13:58
9F:→ guteres:代数运算是matlab的强项 05/10 12:28
10F:→ Keelungman:跟 mathematica 相比 matlab 强项是在於数值运算 05/13 12:22
11F:→ yungyuc:代数运算是人脑的强项 Orz 05/13 18:58
12F:→ ykjiang:哇,基隆男,好久不见了 ^____^ 05/16 13:05