如何强制Sympy简化指数内包含对数的表达式?

问题描述 投票:0回答:1
考虑以下MWE:

import sympy as sp a,b = sp.symbols("a b", positive=True, real=True) t = sp.symbols("t", real=True) s = sp.symbols("s") T = 1/(1+s*a)/(1+s*b) y = sp.inverse_laplace_transform(T,s,t) tmax = sp.solve(sp.diff(y,t),t)[0] ymax = y.subs(t,tmax) display(ymax.simplify())
该代码给出以下输出:

Output in the console

我如何强制Sympy简化此表达?分数和总和都可以轻松分解,以exp(log(x))的形式留下一个术语,可以将其简化为X.

python sympy
1个回答
0
投票
指数的论点中的分母:

>>> from sympy import * ...your code... >>> e=ymax.atoms(exp);e [exp(-log((a/b)**(a*b))/(a**2 - a*b)), exp(-log((a/b)**(a*b))/(a*b - b**2))]
如果您向Sympy保证这些不是零(和真实),那么一切都可以很好:

>>> p,q = var('p q',nonzero=True) # nonzero=True implies real >>> reps = {a**2-a*b:p,a*b-b**2:q}; _reps = {v:k for k,v in reps.items()} >>> [i.subs(reps).simplify().subs(_reps) for i in e] [(b/a)**(a*b/(a**2 - a*b)), (b/a)**(a*b/(a*b - b**2))]
您希望他们会发生什么?
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.