简体   繁体   中英

How to apart Exponential function in python

I am trying to apart Exponential function in python.

import sympy as sym
from sympy.abc import t
from sympy import exp

u = (3*(exp(4*t) - 1)*exp(-4*t))/4
apart = sym.apart(u, t)
print(apart)

But i get the error:

exp(4*t) contains an element of the set of generators

it looks like exp() is confusing it. For a workaround

import sympy as sym
from sympy.abc import t,z
from sympy import exp

u = (3*(exp(4*t) - 1)*exp(-4*t))/4
expr = sym.apart(u.subs(exp(t),z), z)
expr = expr.subs(z,exp(t))

Which gives

Out[3]: 3/4 - 3*exp(-4*t)/4

Using 3.7 on conda

Your expression is a univariate, rational function in terms of exp(t):

>>> u.subs(exp(t),y)
3*(y**4 - 1)/(4*y**4)
>>> apart(_)
3/4 - 3/(4*y**4)
>>> _.subs(y, exp(t))
3/4 - 3*exp(-4*t)/4

But SymPy can handle such non-symbol generators so for such an expression sym.apart(u) would have given the same result as shown above. When you said the generator was t it detected the exp(t) and raised the error since an expression like t + exp(t) has two generators that depend on t .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM