数值计算指有效使用数字计算机求数学问题近似解的方法与过程,以及由相关理论构成的学科。数值计算主要研究如何利用计算机更好的解决各种数学问题,包括连续系统离散化和离散形方程的求解,并考虑误差、收敛性和稳定性等问题。
在科研过程中,我们需要使用大量使用数值计算来帮助研究的顺利进行,本文将重点介绍如何使用Sympy库进行常用的数值计算。
sympy介绍
sympy是python的一个科学计算库,用强大的符号计算体系完成诸如多项式求值,求极限,求导,擅长求积分,解微分方程,级数展开,矩阵运算等功能。
sympy内置符号
- 自然对数:
sympy.E
- 无穷大:
sympy.oo
- 圆周率π:
sympy.pi
- 虚数单位i:
sympy.I
import sympy
import numpy as np
print(np.double(sympy.log(sympy.E*sympy.pi))) # 2.1447298858494
sympy内置函数
- 正弦函数
sympy.sin(num)
- 对数函数
sympy.log(num)
- 求平方根函数
sympy.sqrt(num)
- n次方根函数
sympy.root(num,n)
- 求阶乘
sympy.factorial(num)
- ∑ \sum ∑求和
sympy.summation
- 求导
sympy.diff(func,x,n)
- 求积分
sympy.integrate(func,(x,a,b))
sympy实战
求解函数
基础案例一:
import sympy
import numpy as np
x = sympy.Symbol('x') # 定义一个符号,表示变量
fx = 2*x + 1 # 定义函数表达式
fx.evalf(subs={
x:2}) # 使用evalf函数以传入变量的值,对函数表达式进行求解
# output:5.00000000000000
基础案例二:
import sympy
import numpy as np
x,y = sympy.symbols('x y') # 同时定义多个符号以表示变量
f = 2*x + y
f.evalf(subs={
x:2}) # output:2.0x+y
f.evalf(subs={
x:2,y:1}) # output:5.0
# 定义符号的方法也可使用sympy.abc方法
from sympy.abc import x,y
f2 = 2*x + y
print(f2) # output:2*x + y
求极限
import sympy
x = sympy.Symbol('x')
f1 = (x**2+2*x-1)/x
print(sympy.limit(f1,x,1)) # output:2
f2 = sympy.sin(x)/x
print(sympy.limit(f2,x,0)) # output:1
f3 = sympy.sin(x)/x
print(