是否有一种方法来扩展三角函数的反三角函数?我有一个长表达式f,其中包含许多这样的子表达式,例如:
sin(0.5 acot(x))**2cos(0.5 acot(x))**2sin(acot(x))这些表达式可以在没有三角函数的情况下重写,例如:
1/2 - 1/2 * x / sp.sqrt(x**2 + 1)我试过expand_trig和trigsimp都没有用。同时,我也找不到一种方法来直接替换。
有什么建议吗?
发布于 2022-11-28 00:38:26
有多种方法可以做到这一点。下面是一些例子:
In [1]: sin(acot(x))
Out[1]:
1
───────────────
________
╱ 1
x⋅ ╱ 1 + ──
╱ 2
╲╱ x
In [2]: sin(acot(x)/2)**2
Out[2]:
2⎛acot(x)⎞
sin ⎜───────⎟
⎝ 2 ⎠
In [3]: e = sin(acot(x)/2)**2
In [4]: e.rewrite(log)
Out[4]:
⎛ ⎛ ⎛ ⅈ⎞ ⎛ ⅈ⎞⎞⎞
⎜ⅈ⋅⎜log⎜1 - ─⎟ - log⎜1 + ─⎟⎟⎟
2⎜ ⎝ ⎝ x⎠ ⎝ x⎠⎠⎟
sin ⎜───────────────────────────⎟
⎝ 4 ⎠
In [5]: e.rewrite(log).rewrite(exp)
Out[5]:
⎛ ⎛ _______ _______⎞ ⎞
⎜ ⎜ ╱ ⅈ ╱ ⅈ ⎟ ⎟
⎜ ⎜ 4 ╱ 1 - ─ 4 ╱ 1 + ─ ⎟ ⎟
⎜ ⎜ ╲╱ x ╲╱ x ⎟ ⎟
⎜-ⅈ⋅⎜- ─────────── + ───────────⎟ ⎟
⎜ ⎜ _______ _______⎟ ⎟
⎜ ⎜ ╱ ⅈ ╱ ⅈ ⎟ ⎟
⎜ ⎜ 4 ╱ 1 + ─ 4 ╱ 1 - ─ ⎟ ⎟
⎜ ⎝ ╲╱ x ╲╱ x ⎠ ⎟
2⋅log⎜─────────────────────────────────⎟
⎝ 2 ⎠
ℯ
In [6]: e.rewrite(log).rewrite(exp).expand()
Out[6]:
_______ _______
╱ ⅈ ╱ ⅈ
╱ 1 - ─ ╱ 1 + ─
╲╱ x 1 ╲╱ x
- ───────────── + ─ - ─────────────
_______ 2 _______
╱ ⅈ ╱ ⅈ
4⋅ ╱ 1 + ─ 4⋅ ╱ 1 - ─
╲╱ x ╲╱ x
In [7]: simplify(_)
Out[7]:
1 1
─ - ─────────────────────────
2 _______ _______
╱ ⅈ ╱ ⅈ
2⋅ ╱ 1 - ─ ⋅ ╱ 1 + ─
╲╱ x ╲╱ x 如果您将x声明为真实的或正的,则某些情况下的工作方式会有所不同,例如x = symbols('x', real=True)。
https://stackoverflow.com/questions/74594679
复制相似问题