sympy学习笔记

import sympy as sym
# 1.表达式与表达式求值
# 1).一元表达式
x = sym.Symbol ('x') # 表示变量x代表字符串'x'
fx = 5 * x + 4# sym特殊的语法?
yi = fx.evalf (subs = {x : 6})
print (yi)
# 2).二元表达式
y = sym.Symbol ('x')
fxy = x * x + y * y
r = fxy.evalf (subs = {x : 4, y : 3}) 
# 此时后面这个字典可以看作{'x' : 3, 'x' : 4} 由于'x' : 3 后被识别
# 所以最后答案为18
print (r)
# 2.函数方程求根
# 1).对于解数有限的方程求解
fx = x * 3 + 9
# 可直接返回解向量
print (sym.solve (fx, x)) # 返回的是个列表
# 2).对于解数无限的方程组求解
y = sym.Symbol ('y')
z = sym.Symbol ('z')
fxy = x * 3 + y ** 2 + z ** 3
fxyi = x * 4 + y ** 2
# 得到的是变量x与y,z之间的关系,其用{x:f(y, z)}表示,其中f是求出的对应法则
print (sym.solve (fxy, [x, y, z]))
# sym.solve ([f1, f2, f3, ……, fn], [x1, x2, x3, ……, xt])中
# [f1, f2, f3, ……, fn]是这n个函数做交集的意思
# [x1, x2, x3, ……, xt]表示solve ()最后返回这t个变量之间的关系
# 3).解方程组
fi = x + y - 3
fii = x - y + 5
print (sym.solve ([fi, fii], [x, y]))
# 3.求和
# 1).eg : 求: 2 * 1 + 2 * 2 + 2 * 3 + …… + 2 * 100
n = sym.Symbol ('n')
fi = 2 * n
print (sym.summation (fi, (n, 1, 100))) # 这个表示的是我们要求的答案
# 而这个表示的是∑(x from 1 to 100)∑(n from 1 to 100) 2 * n
# 这里写说明fi后的变量不一定要在fi中全部出现
print (sym.summation (fi, (n, 1, 100), (x, 1, 100))) 
# 2).解带有求和式的方程
# eg : [∑(i from 1 to 5)x] + 10x = 15
i = sym.Symbol ('i')
f = sym.summation (x, (i, 1, 5)) + 10 * x - 15
print (sym.solve (f, x)) # 区分这两种写法(导致不同输出)
print (sym.solve (f, [x, i])) # 区分这两种写法(导致不同输出)
# 4.求极限
# 住在这里数学函数不要用math库中的,要用sympy库中的
fi = sym.sin (x) / x
fii = (1 + x) ** (1 / x)
fiii = (1 + 1 / x) ** x
# 三个参数依次是 :函数、变量、趋向值
lim1 = sym.limit (fi, x, 0)
lim2 = sym.limit (fii, x, 0)
lim3 = sym.limit (fiii, x, sym.oo) # sym.oo表示无穷
print (lim1, lim2, lim3)
print (-sym.oo) # 负无穷-oo; +sym.oo 正无穷+oo
# 5.求导,使用diff方法
# 1).正常求导
fi = 2 * x ** 4 + 3 * x + 6
# 参数是函数,与求导的主元
fid = sym.diff (fi, x)
# 2).求偏导
fiii = 2 * x ** 3 + 3 * y ** 4 + 2 * y
# 对x, y分别求导,即偏导
fiiifx = sym.diff (fiii, x)
fiiify = sym.diff (fiii, y)
print (fiii)
print (fiiifx)
print (fiiify)
# 6.求定积分,用integrate方法
# 1).计算一重积分
f = 2 * x
# 参数是 : 函数,积分自变量,积分范围
print (sym.integrate (f, (x, 0, 1)))
# 2).计算多重积分,先求里面的积分,再求外面的积分。
# eg : ∫(x from 0 to 3)[∫(from 0 to x) 2 * x dx] dx
x = sym.Symbol ('x') 
t = sym.Symbol ('t')
fi = 2 * t 
fid = sym.integrate (fi, (t, 0, x))
fidi = sym.integrate (fid, (x, 0, 3))
print (fidi)
# 7.求不定积分
# 似乎,求不定积分和定积分的差别不大(雾)
f = sym.E ** x + 2 * x
# 参数 : 函数,以及积分自变量(没有变量范围因为是不定积分)
fd = sym.integrate (f, x)
print (fd)
# print (fd (0)) 这种写法是错误的,因为本质上fd类似于字符串
print (fd.evalf (subs = {x : 0}))
# 8.数学符号补充
# 虚数单位i : sym.I
# 自然对数底e : sym.E
# 无穷大 : sym.oo
# 圆周率 : sym.pi
# 求x的n次方根 : sym.root (8, 3) 注:参数是 : 先x后n
print (sym.root (2, 1 / 2)) # n不是整数也可
# 求log以a为底的b : sym.log (b, a)
# 求n! : sym.factorial (n)
# 三角函数 : sym.sin (), sym.cos (), ……
# 9.公式的展开与折叠
# 1).公式展开用expand ()方法
f = (1 + 2 * x) * x ** 2
ff = sym.expand (f)
print (ff)
# 2).公式折叠用factor方法
f = x ** 2 + 2 * x
ff = sym.factor (f)
print (ff)
# 友情提示:如果不知道啥叫折叠和展开,运行看一下便知
# 10.公式分离与合并(分式分离与合并)
# 1).分式分离常用apart ()方法,apart ()也可以用于公式展开
f = (x + 1) / (x + 2) # 在试一下f = (x + 1) / (x ** 2 + 2) 
ff = sym.apart (f)
print (ff) # 若可以,则f会被分离常数了
# 2).分式折叠用together ()
f = 1 / x + 1 / y
ff = sym.together (f)
print (ff)
# 11.表达式简化
# 1).simplify () 普通的化简
print (sym.simplify ((x ** 3 + x ** 2 - x - 1) / (x ** 2 + 2 * x + 1)))
# 2).trigsimp () 三角化简
print (sym.trigsimp (sym.sin(x) / sym.cos(x)))
# 3).powsimp () 指数化简
print (sym.powsimp(x ** 2 * x ** 3))

sympy参考学习笔记

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值