2017-01-30 15 views
1

私はSympyにより算出し、このような表現があります。pythonを使って三角法を簡単にする方法は?

-1.0*pi*(-1.0*sin(1.0*t) - 0.025*cos(1.0*t) + 4.0*cos(2.0*t)) 

その後、私は表現の簡略化のために提供されるオプションの多くを試したが、彼らはあまりにも動作しませんが。

私はexpand_trig()を使用する場合、それが返されます。

pi*(1.0*sin(1.0*t) + 0.025*cos(1.0*t) - 4.0*cos(2.0*t)) 

をしかし、私はMathematicaを使用する場合、それが返されます。

-25.0542 Cos t + 3.14159 Sin t 

私はMathematicaのは、Pythonを使用してのような結果に到達することができますどのように? Mathematicaの表現をさらに単純化したいのであれば、どうしたらいいですか?

+2

あなたの表現は単純化できると思いますか?あなたはあなたの質問に3つの機能をプロットしようとしましたか?最初の2つは同じですが、Mathematicaの関数はまったく別の関数です。 – zelanix

+0

さて、あなたは正しいです。 Mathematicaが私にこれを与えたのは本当に奇妙なことです。しかし、BTWは、単純な表現をPythonを使って単純化する方法を教えてください:sympy.simplify(math.pi *(1.0 * sympy.sin(1.0 * t)+ 0.025 * sympy.cos(1.0 * t)))。私にとっては、それらを1つの表現に組み合わせることができます。しかし、私は方法を見つけることができません。これらの2つの式は常に分離されています。 THX! – hyoukai

+0

あなたは正しいですが、私はPythonでそれを行う方法がわかりません。 – zelanix

答えて

4

symPyはcos(2*t)という用語を展開できますが、浮動小数点係数では認識されません。 expand_trig(cos(2*t))が動作します(2*cos(t)**2 - 1となります)。また、cos(1.0*t)の代わりにcos(t)を使用することをお勧めします。これは、SymPyでは異なるものとして表示されるためです(例:cos(t) - cos(1.0*t)は0に単純化されません)。 sympy.piを使用することをお勧めします。記号的で簡潔にすることができます(たとえば、sin(sympy.pi)0sin(math.pi)はありません)。

他の人が指摘したように、Mathematicaによって返された表現は、単純なプロットが示すように、等価ではありません。

関連する問題