python 微积分_5.4Python数据处理篇之Sympy系列(四)---微积分

目录

前言

(一)求导数-diff()

1.一阶求导-diff()

(1)说明:

语法是:diff(expr,x)

(2)源代码:

from sympy import *

# 初始化

x = symbols('x')

# 表达式

expr1 = cos(x)

expr2 = exp(x**2)

# 求导

r1 = diff(expr1, x)

r2 = diff(expr2, x)

print("r1:", r1)

print("r2:", r2)

(3)输出:

\(\cos(x)\) --> \(-\sin(x)\)

\(e^{x^2}\) --> \(2xe^{x^2}\)

2.多阶求导-diff()

(1)说明:

多阶求导同样的使用diff(),其有两种形式

带参数中,添加几个x,就是对x的几次求导。diff(expr, x, x,x……)

用数字来控制所求的阶数:diff(expr, x, n)

(2)源代码:

from sympy import *

# 初始化

x = symbols('x')

# 表达式

expr1 = x**4

# 第一种形式多阶求导

r1 = diff(expr1, x)

r2 = diff(expr1, x, x)

r3 = diff(expr1, x, x, x)

print("="*30)

print(r1)

print(r2)

print(r3)

# 第二种形式多阶求导

r4 = diff(expr1, x, 1)

r5 = diff(expr1, x, 2)

r6 = diff(expr1, x, 3)

print("="*30)

print(r4)

print(r5)

print(r6)

(3)输出:

\(x^4\) --> \(24x\)

3.求偏导数-diff()

(1)说明:

diff()也可以单独对一个变量求导,这便是偏导数。

(2)源代码:

from sympy import *

# 初始化

x, y, z = symbols('x y z')

# 表达式

expr1 = exp(x*y*z)

# 求导

r1 = diff(expr1, x, y, y, z, z, z, z)

r2 = diff(expr1, x, 1, y, 2, z, 4)

print("r1:", r1)

print("r2:", r2)

print(latex(r1))

print(latex(r2))

(3)输出:

\(e^{xyz}\) --> \(x^{3} y^{2} \left(x^{3} y^{3} z^{3} + 14 x^{2} y^{2} z^{2} + 52 x y z + 48\right) e^{x y z}\)

(二)求积分-integrate()

(1)说明:

求积分有三种形式,并且都用的是integrate()方法

求不定积分:integrate(expr, var)

求定积分:integrate(expr, (var, min, max))

求多重积分:integrate(expr, (var1, min, max),(var2,min,max))

(2)源代码:

from sympy import *

# 初始化

x, y = symbols('x y')

# 表达式

expr1 = cos(x)

expr2 = exp(-x)

expr3 = exp(-x**2-y**2)

# 求不定积分

r1 = integrate(expr1, x)

# 求定积分

r2 = integrate(expr2, (x, 0, oo))

# 求多重积分

r3 = integrate(expr3, (x, -oo, oo), (y, -oo, oo))

print("r1:", r1)

print("r2:", r2)

print("r3:", r3)

(3)输出:

\(\cos{\left (x \right )}\)-->\(\sin{\left (x \right )}\)

\(\int_{0}^\infty{e^{- x}dx}​\)-->\(1​\)

\(\int_{-\infty}^\infty \int_{-\infty}^\infty e^{- x^{2} - y^{2}}dxdy\)-->\(\pi\)

(三)求极限-limit()

(1)说明:

求极限使用limit(),其有下两种使用方法:

趋进某个点的极限:limit(expr, var, doit)

从侧边趋进某个值的极限:limit(expr, var,doit, "+") (左侧趋进同理)

注:sympy里,不可以使用无穷的趋进。

(2)源代码:

from sympy import *

# 初始化

x = symbols('x')

# 表达式

expr1 = sin(x)/x

expr2 = 1/x

# 求趋于某个值的极限

r1 = limit(expr1, x, 0)

# 正向趋进

r2 = limit(expr2, x, 0, '+')

# 负向趋进

r3 = limit(expr2, x, 0, '-')

print(r1)

print(r2)

print(r3)

(3)输出:

\(\lim_{x \to 0}\sin(x)/x\)-->\(1\)

\(\lim_{x \to 0^+}​\)-->\(\infty​\)

\(\lim_{x \to 0^-}\)-->\(-\infty​\)

(四)级数展开-series()

1.说明:

级数展开请使用:series(expr, x0, xn),使用.removeO()去除尾数。

2.源代码:

from sympy import *

# 初始化

x = symbols('x')

# 表达式

expr1 = exp(sin(x))

# 级数展开

r1 = expr1.series(x, 0, 6)

# 去除尾数

r2 = expr1.series(x, 0, 6).removeO()

print(r1)

print(r2)

3.输出:

\(e^{\sin(x)}​\)-->\(1 + x + \frac{x^{2}}{2} - \frac{x^{4}}{8} - \frac{x^{5}}{15} + O\left(x^{6}\right)​\)

\(e^{\sin(x)}\)-->\(- \frac{x^{5}}{15} - \frac{x^{4}}{8} + \frac{x^{2}}{2} + x + 1​\)

作者:Mark

日期:2019/03/17 周日

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值