2016-11-27 82 views
0

例如,我有兩個向量:如何簡化Mathematica中的抽象矢量運算?

a,b 

我需要簡化以下簡單的公式:

|a+b|==|a-b| 

我們可以通過人工計算知道:

a.b==0 

現在我試着Mathematica中的以下表達式:

In[1040]= 
     Reduce[{a, b} \[Element] Vectors[2, Reals] && (a + b).(a + b) == (a - b).(a - b)] 

但保持原樣。

Out[1040]= 
     Reduce[(a | b) \[Element] Reals && (a + b).(a + b) == (a - b).(a - b)] 
+1

只要你知道,有一個專門[mathematica.SE(HTTP://mathematica.stackexchange .com)姊妹網站。 –

+0

Mathematica在處理抽象向量時經常非常不好,您只需告訴它兩個未知向量的名稱,並且不會爲向量的內容提供至少一個符號列表。這可能解釋了爲什麼你很難得到你想要的答案。 – Bill

回答

1

隨着一點點的幫助,TensorReduce

assumptions = Element[#, Vectors[2, Reals]] & /@ {a, b}; 
[email protected][(a + b).(a + b) == (a - b).(a - b), Assumptions->assumptions] 

輸出:

a.b == 0 
+0

你能解釋一下嗎?爲什麼減少無法工作,Reduce必須與TensorReduce結合使用?我不明白原因。 – tiankonghewo

+0

@tiankonghewo這可能是由於內部實施。 'TensorReduce'配備了來自線性代數的張量轉換規則,而'Reduce'配備了標量轉換規則。最重要的是,*它不完美*。最好的做法是總是試驗它。 – Kh40tiK