微积分 极限 在sympy中极限容易求出,它们遵循极限语法 limit(function, variable, point) ,所以计算x->0时f(x)的极限,即limit(f, x, 0): >>>from sympy import * >>>x=Symbol("x") >>>limit(sin(x)/x, x, 0) 1
>>>limit(x, x, oo) oo
>>>limit(1/x, x, oo) 0
>>>limit(x**x, x, 0) 1
有一些特殊的极限的例子,你可以阅读文件test_demidovich.py
微分 你可以对任意SymPy表达式微分。diff(func, var)。例如: >>>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) 1 + tan(x)**2
你可以通过以下验证: >>>limit((tan(x+y)-tan(x))/y, y, 0) 1 + tan(x)**2
计算高阶微分 diff(func, var, n) : >>>diff(sin(2*x), x, 1) 2*cos(2*x)
>>>diff(sin(2*x), x, 2) -4*sin(2*x)
>>>diff(sin(2*x), x, 3) -8*cos(2*x)
级数展开 函数 series(var, point, order): >>>from sympy import * >>>x = Symbol('x') >>>cos(x).series(x, 0, 10) 1 - x**2/2 + x**4/24 - x**6/720 + x**8/40320 + O(x**10) >>>(1/cos(x)).series(x, 0, 10) 1 + x**2/2 + 5*x**4/24 + 61*x**6/720 + 277*x**8/8064 + O(x**10)
其他简单的例子: from sympy import Integral, Symbol, pprint
x = Symbol("x") y = Symbol("y")
e = 1/(x + y) s = e.series(x, 0, 5)
print(s) pprint(s)
执行之后打印出的结果为: 1/y + x**2*y**(-3) + x**4*y**(-5) - x*y**(-2) - x**3*y**(-4) + O(x**5) 2 4 3 1 x x x x ─ + ── + ── - ── - ── + O(x**5) y 3 5 2 4 y y y y
积分 SymPy支持不定积分,超越函数与特殊函数的定积分。SymPy有力的扩展Risch-Norman 算法和模型匹配算法。 >>>from sympy import * >>>x, y = symbols('xy')
初等函数: >>>integrate(6*x**5, x) x**6 >>>integrate(sin(x), x) -cos(x) >>>integrate(log(x), x) -x + x*log(x) >>>integrate(2*x + sinh(x), x) cosh(x) + x**2
特殊函数: >>>integrate(exp(-x**2)*erf(x), x) pi**(1/2)*erf(x)**2/4
定积分: >>>integrate(x**3, (x, -1, 1)) 0 >>>integrate(sin(x), (x, 0, pi/2)) 1 >>>integrate(cos(x), (x, -pi/2, pi/2)) 2
一些广义积分也可以被支持: >>>integrate(exp(-x), (x, 0, oo)) 1 >>>integrate(log(x), (x, 0, 1)) -1
复数 >>>from sympy import Symbol, exp, I >>>x = Symbol("x") >>>exp(I*x).expand() exp(I*x) >>>exp(I*x).expand(complex=True) I*exp(-im(x))*sin(re(x)) + cos(re(x))*exp(-im(x)) >>>x = Symbol("x", real=True) >>>exp(I*x).expand(complex=True) I*sin(x) + cos(x)
函数 三角函数:: In [1]: sin(x+y).expand(trig=True) Out[1]: cos(x)*sin(y) + cos(y)*sin(x)
In [2]: cos(x+y).expand(trig=True) Out[2]: cos(x)*cos(y) - sin(x)*sin(y)
In [3]: sin(I*x) Out[3]: I*sinh(x)
In [4]: sinh(I*x) Out[4]: I*sin(x)
In [5]: asinh(I) Out[5]: π*I ─── 2
In [6]: asinh(I*x) Out[6]: I*asin(x)
In [15]: sin(x).series(x, 0, 10) Out[15]: 3 5 7 9 x x x x x - ── + ─── - ──── + ────── + O(x**10) 6 120 5040 362880
In [16]: sinh(x).series(x, 0, 10) Out[16]: 3 5 7 9 x x x x x + ── + ─── + ──── + ────── + O(x**10) 6 120 5040 362880
In [17]: asin(x).series(x, 0, 10) Out[17]: 3 5 7 9 x 3*x 5*x 35*x x + ── + ──── + ──── + ───── + O(x**10) 6 40 112 1152
In [18]: asinh(x).series(x, 0, 10) Out[18]: 3 5 7 9 x 3*x 5*x 35*x x - ── + ──── - ──── + ───── + O(x**10) 6 40 112 1152 |
|