如何用Python做微积分?
微积分是数学的一个分支,主要研究极限、函数、导数、积分和无限级数。我们将使用SymPy库用python做微积分。SymPy是一个用于符号数学的Python库。它的目标是成为一个全功能的计算机代数系统(CAS),同时尽可能地保持代码的简单性,以便于理解和扩展。SymPy完全用Python编写。
安装:
pip install sympy
如果我们想写任何sympy表达式,首先我们必须声明它的符号变量。要做到这一点,我们可以使用以下两个函数。
- sympy.Symbol()。它用于声明一个单一的变量,将变量作为一个字符串传入其参数。
- sympy.symbols()。它是用来声明多变量的,将变量作为一个字符串传入其参数。所有的变量必须用一个空格隔开,形成一个字符串。
微分
我们可以用diff(func, var)方法来微分任何sympy表达式。参数func表示要微分的sympy表达式,var表示我们要微分的变量。
示例 1:
# Importing library
import sympy as sym
# Declaring variables
x, y, z = sym.symbols('x y z')
# expression of which we have to find derivative
exp = x**3 * y + y**3 + z
# Differentiating exp with respect to x
derivative1_x = sym.diff(exp, x)
print('derivative w.r.t x: ',
derivative1_x)
# Differentiating exp with respect to y
derivative1_y = sym.diff(exp, y)
print('derivative w.r.t y: ',
derivative1_y)
输出:
derivative w.r.t x: 3*x**2*y
derivative w.r.t y: x**3 + 3*y**2
我们还可以使用diff(func, var, n)方法来寻找高阶导数。这里,参数n表示要找到的第n个导数。
示例 2:
# Finding second derivative
# of exp with respect to x
derivative2_x = sym.diff(exp, x, 2)
print('second derivative w.r.t. x: ',
derivative2_x)
# Finding second derivative
# of exp with respect to y
derivative2_y = sym.diff(exp, y, 2)
print('second derivative w.r.t. y: ',
derivative2_y)
输出:
second derivative w.r.t. x: 6*x*y
second derivative w.r.t. y: 6*y
积分
你可以通过 integrate() 函数对超越性初等和特殊函数进行不定和定积分。
不定积分的语法:sympy.integration(func, var)
定积分的语法:sympy.integration(func, (var, lower_limit, upper_limit))
参数func表示要微分的sympy表达式,var表示我们要微分的变量,lower_limit表示定积分的下限,upper_limit表示定积分的上限。
注意: ∞在SymPy中是oo。
示例 1:
# Indefinite integration of cos(x) w.r.t. dx
integral1 = sym.integrate(sym.cos(x), x)
print('indefinite integral of cos(x): ',
integral1)
# definite integration of cos(x) w.r.t. dx between -1 to 1
integral2 = sym.integrate(sym.cos(x), (x, -1, 1))
print('definite integral of cos(x) between -1 to 1: ',
integral2)
# definite integration of exp(-x) w.r.t. dx between 0 to ∞
integral3 = sym.integrate(sym.exp(-x), (x, 0, sym.oo))
print('definite integral of exp(-x) between 0 to ∞: ',
integral3)
输出:
indefinite integral of cos(x): sin(x)
definite integral of cos(x) between -1 to 1: 2*sin(1)
definite integral of exp(-x) between 0 to ∞: 1
极限
你可以用limit(function, variable, point)来计算一个函数的极限。因此,如果你想计算f(x)在x->0时的极限,你可以发出limit(f, x, 0)。
示例:
# Calculating limit of f(x) = x as x->∞
limit1 = sym.limit(x, x, sym.oo)
print(limit1)
# Calculating limit of f(x) = 1/x as x->∞
limit2 = sym.limit(1/x, x, sym.oo)
print(limit2)
# Calculating limit of f(x) = sin(x)/x as x->0
limit3 = sym.limit(sym.sin(x)/x, x, 0)
print(limit3)
输出:
oo
0
1
泰勒级数展开
我们还可以计算函数围绕某一点的泰勒级数展开。要计算f(x)围绕点x=x 0的阶数x n的展开,使用sympy.series(f, x, x 0 , n)。x 0和n可以省略,在这种情况下,将使用默认的x 0 =0和n=6。
示例:
# assign series
series1 = sym.series(sym.cos(x), x)
print(series1)
# assign series
series2 = sym.series(1/sym.cos(x), x, 0, 4)
print(series2)
输出:
1 - x**2/2 + x**4/24 + O(x**6)
1 + x**2/2 + O(x**4)
最后的O(x 4 )或O(x 6 )项意味着所有幂大于或等于x 4或x 6的x项被省略。