【3】数据分析-6-1-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}
注:
- 在计算之前要将变量设为符号
- 要将变量一到一侧 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)
结果: 1/2
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
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn