python代数变量运算(Sympy)

定义代数变量

import sympy
x = sympy.Symbol('x')#单变量代数定义
y,z = sympy.symbols('y z')#多变量代数定义
o = 3*x**2+2*y**2+z**2
print(o)

>>> 3*x**2 + 2*y**2 + z**2

表达式展开、折叠、简化

展开:expand()、折叠:factor()、简化:simplify()

o = (x + y)**2
o = sympy.expand(o)
print(o)
>>> x**2 + 2*x*y + y**2

o = sympy.factor(o)
print(o)
>>> (x + y)**2

o = z*x+z*y+z*x*y
print(sympy.simplify(o))
>>> z*(x*y + x + y)

符号替换与变量赋值

符号变换:xx.subs(),变量赋值:xx.subs()、xx.evalf()


#符号变换
x,y,z,k = sympy.symbols("x,y,z,k")
result = x+y
result = result.subs([(x,z),(y,k)])
>>> k + z
#变量赋值
result.subs([(z,1),(k,2)])
>>> 3
result.evalf(subs={z:1,k:2})
>>> 3.00000000000000

构造函数

sympy.lambdify()

z = x+y
input_data = np.arange(6)
func = sympy.lambdify([x,y],z)
func(input_data,input_data)
>>> array([ 0,  2,  4,  6,  8, 10])

字符串转化为表达式

string = "x + y"
x,y = sympy.symbols("x y")
result = sympy.sympify(string)
print(result)
>>> x + y

解多元一次方程

#一元一次方程:2*x+4=8
print(sympy.solve(2*x+4-8,x))
>>> [2]


#二元一次方程:x+y=3,x-y=1
print(sympy.solve([x+y-3,x-y-1],[x,y]))
>>> {x: 2, y: 1}

#多元线性方程
import numpy as np
k1,k2,k3,k4,p = sympy.symbols('k1 k2 k3 k4 p')
jieguo = np.dot([k1,k2,k3,k4],[[0,0,0,1,0,0,1,0,1,1],
                      [1,3,3,1,1,2,1,1,1,1],
                      [8,12,6,1,4,4,1,2,1,1],
                      [27,27,9,1,9,6,1,3,1,1]])
result = solve([jieguo[0]-729*p/8,
                jieguo[1]-243*p/4,
                jieguo[2]-27*p/2,
                jieguo[3]-p,
                jieguo[4]-81*p/4,
                jieguo[5]-9*p,
                jieguo[6]-p,
                jieguo[7]-9*p/2,
                jieguo[8]-p,
                jieguo[9]-p],[k1,k2,k3,k4])
print(result)
>>> {k1: -35*p/16, k2: 135*p/16, k3: -189*p/16, k4: 105*p/16}

微积分

求极限

#求x->0时,sin(x)/x的值
print(sympy.limit(sin(x)/x,x,0))
>>> 1

求导

o=(x + y)**2
print(sympy.diff(o,x,1))
>>> 2*x + 2*y
print(sympy.diff(o,x,2))
>>> 2

求积分

#求sin(x)的不定积分
print(sympy.integrate(sin(x),x))
>>> -cos(x)
#求exp(-x)从0到oo无穷的定积分,两个o代表无穷
print(sympy.integrate(exp(-x),(x,0,oo)))
>>> 1

参考网址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值