如何在Sympy中将`sin(x)^ 2`重写为cos(2 * x)形式

时间:2015-05-30 02:54:46

标签: sympy

在像Mathematica这样的其他CAS中很容易获得这样的重写。

TrigReduce[Sin[x]^2]

(*1/2 (1 - Cos[2 x])*)

但是,在Sympy中,所有测试方法的trigsimp都会返回sin(x)**2

trigsimp(sin(x)*sin(x),method='fu')

2 个答案:

答案 0 :(得分:1)

这是完成这项工作的愚蠢方式。

trigsimp((sin(x)**2).rewrite(tan))

返回: -cos(2*x)/2 + 1/2

也适用于

trigsimp((sin(x)**3).rewrite(tan))

返回 3*sin(x)/4 - sin(3*x)/4

但不适用于

trigsimp((sin(x)**2*cos(x)).rewrite(tan))

retruns 4*(-tan(x/2)**2 + 1)*cos(x/2)**6*tan(x/2)**2

答案 1 :(得分:1)

完整的“fu”方法尝试了许多不同的转换组合,以找到“最佳”结果。

Fu-routines中使用的各个变换可用于进行目标变换。您必须阅读文档以了解不同功能的功能,但只需运行FU词典的功能即可将TR8识别为您的主力:

    >>> for f in FU.keys():
    ...  print f,FU[f](sin(var('x'))**2)
    ...
8<---
    TR8 -cos(2*x)/2 + 1/2
    TR1 sin(x)**2
8<---