方程式から項を抽出し、それぞれを0に設定するにはどうすればよいですか?

Aug 20 2020

私は長い方程式を持っています、すなわち

equ = 4576.66 a[1] Cos[t] + 3.3877 a[1]^3 Cos[t]^3 + 4576.65 a[2] Cos[2 t] + 10.1631 a[1]^2 a[2] Cos[t]^2 Cos[2 t] + 10.1631 a[1] a[2]^2 Cos[t] Cos[2 t]^2 + 3.3877 a[2]^3 Cos[2 t]^3 + 4576.63 a[3] Cos[3 t] + 10.1631 a[1]^2 a[3] Cos[t]^2 Cos[3 t] + 20.3262 a[1] a[2] a[3] Cos[t] Cos[2 t] Cos[3 t] + 10.1631 a[2]^2 a[3] Cos[2 t]^2 Cos[3 t] + 10.1631 a[1] a[3]^2 Cos[t] Cos[3 t]^2 + 10.1631 a[2] a[3]^2 Cos[2 t] Cos[3 t]^2 + 3.3877 a[3]^3 Cos[3 t]^3 - 0.415 a[1] Sin[t] - 0.83 a[2] Sin[2 t] - 1.245 a[3] Sin[3 t] == 2/625 Cos[theta] Cos[t w] - 2/625 Sin[theta] Sin[t w]

以来Sin[t]*Cos[t]^3小さい用語であり、我々はその結果0としてそれを取ることができるというように、我々は、n個のパワーに罪[T]およびCOS [t]を排除したいと思います。私の本能はCasesそれを達成するために使用することですが、私はそれを作る方法がありません。

例えば、私は維持したい4576.66 a[1] Cos[t]4576.65 a[2] Cos[2 t]のセットが、4576.65 a[2] Cos[2 t]10.1631 a[1]^2 a[2] Cos[t]^2 Cos[2 t]0

詳しくは

  1. 脇からCos[t]^2Cos[2t]^3Sin[t]*Cos[t]Sin[t]^2*Sin[2t]して排除しなければならない上そう。つまりSin[t] Sin[2t] Sin[3t]...Sin[n*t]Cos[t] Cos[2t] Cos[3t]...だけをCos[n*t]残す必要があります。

  2. は定数Sin[theta] Sin[t w]であるため、のような用語は存続する必要Sin[theta]があります。

ソリューションの概要

次のウルフラム言語の文法を使用して、予想される用語を抽出します_ h any expression with head h。パターンと変換ルールを参照してください

回答

2 kglr Aug 20 2020 at 16:02
equ /. HoldPattern[ Power[_Cos | _Sin, _] | 
   Times[(Cos | Sin)[Except[theta]], (Cos | Sin)[Except[theta]], ___]] -> 0