如何解决将 sympy 表达式中特定幂的项设置为零
我有以下形式的 sympy 表达式:
a,b = symbols('a b')
expr = a + a/b + a/b**2 + a**2/b**2 + a/b**3
我想将 b
的指数大于 a
的指数的任何项设置为零,以便结果如下:
newexpr = a + a/b + a**2/b**2
我怎样才能做到这一点?
解决方法
我设法解决了这个问题:
import sympy as sp
a,b,c = sp.symbols('a b c')
expr = a + a/b + a/b**2 + a**2/b**2 + a/b**3
newexpr = sp.limit(expr.subs(a/b,c),sp.oo).subs(c,a/b)
newexpr
out[1]: a + a/b + a**2/b**2
这是一个简短的计划:
- 我们进行了替换
1/b -> c
- 我们将结果表达式重写为
a
中的多元多项式,c
- 我们将多项式分解成单项式,只保留那些具有
exp_a >= exp_c
的项,最后将c -> 1/b
替换回#!/usr/bin/python3 from sympy import * a,b = symbols('a b') expr = a + a/b + a/b**2 + a**2/b**2 + a/b**3 def truncate(e): c = symbols('c') e1 = e.subs(S(1)/b,c) p = 0 for m in poly(e1,a,c).monoms(): exp_a,exp_c = m if exp_c <= exp_a: p += a**exp_a * (1/b)**exp_c return p truncated_expr = truncate(expr) print(truncated_expr)
a**2/b**2 + a + a/b
输出:
const header = document.getElementById('header')
const colorChanger = setInterval(() => {
const colors = ['blue','red','cyan']
colors.forEach(color => header.classList.remove(color))
header.classList.add(colors[Math.floor(Math.random()*3)])
},1000)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。