【3】数据分析--17--sympy--解数学公式

SymPy是符号数学的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展

一、安装

pip install sympy
  • 使用solve()来求解代数方程。
  • solveset() 解决单变量方程
  • sympy.solvers.solveset.linsolve() 解决线性方程组而不是solve()
  • sympy.solvers.solveset.nonlinsolve() 解决非线性方程组的问题,因为解决方案迟早会在内部或外部接管解决方案

二、使用范例

使用solve()来求解代数方程。 我们假设所有方程都等于0,因此求解x ** 2 == 1转换为以下代码:

>>> from sympy.solvers import solve
>>> from sympy import Symbol
>>> x = Symbol('x')
>>> solve(x**2 - 1, x)
[-1, 1]

solve()的第一个参数是一个等式(等于零),第二个参数是我们想要求解等式的符号。

2.1 解一元一次方程

解方程:

x*2-6=0

代码:

from sympy.solvers import solve
from sympy import Symbol
x = Symbol('x')
print solve(x * 3 - 6, x)

结果:

[2]

2.2 解二元一次方程

解方程:

y= 1-x
2x+2y=5

代码:

from sympy import *
x=Symbol('x')
y=Symbol('y')
print(solve([y+x-1,3*x+2*y-5],[x,y]))

结果:

{x: 3, y: -2}

注:

  1. 在计算之前要将变量设为符号
  2. 要将变量一到一侧 y-1+x=0 3x+2y-5=0

2.3 求极限limit()

from sympy import *
x = Symbol('x')
print limit(1/x**2, x, 0)

结果是 oo

from sympy import *
x = Symbol('x')
print limit(x*(sqrt(x**2 + 1) - x), x, oo)

结果: 12

from sympy import *
x = Symbol('x')
pprint(x*(sqrt(x**2 + 1) - x))

结果:

2.4 求积分

from sympy import *
n = Symbol('n')
s = ((n+3)/(n+2))**n
print limit(s, n, oo)

结果:

E

注:

  • oo 无穷大
  • E e
  • pi 圆周率

参考资料

个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn

Sam avatar
About Sam
专注生物信息 专注转化医学