0

FullSimplify は次のことを認識できません。

 a*Conjugate[b] + b*Conjugate[a] = 2 Re[a*b]  

Mathematica がこの単純な恒等式を認識できれば、非常に単純化できる非常に複雑な方程式がいくつかあります

(and that a*Conjugate[b] - b*Conjugate[a] = 2 Im[a*b]).

ほら、Mathematica は、書き込んだときに方程式を解き終えません

a*Conjugate[b] +b*Conjugate[a] form, 

しかし、Mathematica がこれを認識していれば、少なくとも、非常に記述的でコンパクトな形式で最終的な方程式を書くことができます. 実際の式は次のようになります。

-((I q1 + q2)/(I q0 + Sqrt[-q0^2 + q1^2 + q2^2 + q3^2])) -
 (Conjugate[q1] + I Conjugate[q2])/
 (Conjugate[q0] + I Conjugate[Sqrt[-q0^2 + q1^2 + q2^2 + q3^2]]) 

私はこれを自分で行いますが、そのような式は 16 あり、それらは結合されたシステムの 4 つのセットを形成します。1 つのサイン エラーで作業が役に立たなくなるため、自動化されたプロセスを強く希望します。

4

4 に答える 4

4

あなたが与えた恒等式 は、b Conjugate[a] + a Conjugate[b] == 2 Re[a b]a と b の少なくとも 1 つが実数である場合にのみ真になります。

In[7]:= Simplify[
 Reduce[a*Conjugate[b] + b*Conjugate[a] == 2 Re[a*b], {a, b}]]

Out[7]= Im[a] == 0 || Im[b] == 0

この追加の条件がアプリケーションで実際に真である場合、2 番目の引数として、仮定として Simplify または FullSimplify に与えることができます。例えば:

In[14]:= FullSimplify[Im[a*Conjugate[b] + b*Conjugate[a]], 
 Im[a] == 0 || Im[b] == 0]

Out[14]= 0

ちなみに、同一性が真ではない場合の例を次に示します。

In[1]:= FindInstance[
 a*Conjugate[b] + b*Conjugate[a] != 2 Re[a*b], {a, b}]

Out[1]= {{a -> -I, b -> -I}}
于 2010-10-24T02:09:38.893 に答える
1

私は正しいアイデンティティは次のようにすべきだと思います:

a*Conjugate[b] + b*Conjugate[a] == 2 Re[Conjugate[a]*b]

それは常に真です:

In[1]:= FullSimplify[a*Conjugate[b] + b*Conjugate[a] == 2 Re[Conjugate[a]*b]]

Out[1]= True
于 2012-11-12T02:15:53.727 に答える
1

最初のパス: ComplexExpand[] を使用します。

    In := Simplify[ ComplexExpand[ a Conjugate[b] + b Conjugate[a], {a, b} ] ]
    Out = 2 (Im[a] Im[b] + Re[a] Re[b])

FullSimplify のチューニングには多くの試行錯誤が必要ですが、ComplexityFunction を見てみましょう。

于 2010-10-24T00:09:37.733 に答える
0

あなたの身元は正しいですか?両側で異なる数値を取得しています

{a*Conjugate[b] + b*Conjugate[a], 2 Re[a*b]} /. {a -> RandomComplex[],b -> RandomComplex[]}
于 2010-10-23T23:46:35.647 に答える