Как мне упростить сумму синуса и косинуса в SymPy? - PullRequest
0 голосов
/ 29 мая 2018

Как мне упростить a*sin(wt) + b*cos(wt) до c*sin(wt+theta) с помощью SymPy?Например:

f = sin (t) + 2 * cos (t) = 2.236 * sin (t + 1.107)

Я пробовал следующее:

from sympy import *
t = symbols('t')
f=sin(t)+2*cos(t)
trigsimp(f)     #Returns sin(t)+2*cos(t)
simplify(f)     #Returns sin(t)+2*cos(t)
f.rewrite(sin)  #Returns sin(t)+2*sin(t+Pi/2)

PS .: У меня нет прямого доступа к a,b and w.Только на f

Любое предложение?

1 Ответ

0 голосов
/ 29 мая 2018
a * sin(wt) + b * cos(wt) = sqrt(a**2 + b**2) * sin(wt + acos(a / sqrt(a**2 + b**2)))

В то время как амплитуда является радикалом sqrt(a**2 + b**2), фаза задается арккозином в соотношении a / sqrt(a**2 + b**2), которое может не выражаться в терминахарифметические операции и радикалы.Следовательно, вы можете попросить SymPy сделать невозможное.Лучше использовать значения с плавающей точкой , но для этого вам не нужен SymPy.

...