【问题标题】:Simplifying Roots and Trigonometric Identities简化根和三角恒等式
【发布时间】:2018-05-24 14:59:03
【问题描述】:

我有一堆类似的同情表达

g = sp.sympify('2**(1/4) * 5**(1/2) * 3**(3/4) * 6**(-1)')

我想简化。在这种情况下,我非常希望将其重写为 (25/24)**(1/4),但我找不到用于简化的设置或其他方法 listed here 可以让我这样做。

所以我想要的是一堆自然数a_i和有理指数(p_i/q_i),我想要产品

a1**(p1/q1) * a2**(p2/q2) * ... * ak**(pk/qk)

改写为

(r/s)**(1/lcm(q1,q2,...,qk))

或者可能

(r1**s1 * r2**s2 *... rm**sm)**(1/lcm(q1,q2,...,qk))

r_i 是质因数,s_i 是整数。是否有任何内置函数允许我这样做?

其次,我注意到 Sympy 不会简化某些三角恒等式。例如,它似乎不知道

tan((1/2)*atan(x)) = (sqrt(x**2 + 1)-1)/x

我怎样才能告诉 Sympy 使用这个身份,即使 x 更复杂?

【问题讨论】:

    标签: sympy


    【解决方案1】:

    试试这个:

    def simplify_root(g):
        d = sp.degree(sp.minimal_polynomial(g))
        return sp.Pow(sp.simplify(g**d), sp.Rational(1, d), evaluate=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2018-03-17
      • 2023-01-30
      相关资源
      最近更新 更多