2011-12-08 39 views
5

我現在有一個大的表達形式簡化絕對值數學

Abs[-2 b + 2 d1 m + l Tan[\[Theta]]] 

我知道的許多方面,從我的問題的幾何形狀,即

-2 b + 2 d1 m + l Tan[\[Theta]] > 0 

然而,當我嘗試爲了簡化我的表情,

Simplify[Abs[-2 b + 2 d1 m + l Tan[\[Theta]]], -2 b + 2 d1 m + l Tan[\[Theta]] > 0] 

我剛剛回來

Abs[-2 b + 2 d1 m + l Tan[\[Theta]]] 

如何讓Mathematica簡化不必要的絕對值?

EDIT 1

其中我試圖簡化的完整表達是被平方

-(1/(2 (m - Tan[\[Theta]]))) 
Sqrt[1 + m^2] (B2 Sqrt[(-2 b + 2 d1 m + l Tan[\[Theta]])^2] + 
    B4 Sqrt[(-2 b + 2 d2 m + l Tan[\[Theta]])^2] + 
    B5 Sqrt[(2 b + 2 d3 m + l Tan[\[Theta]])^2] + 
    B7 Sqrt[(2 b + 2 d4 m + l Tan[\[Theta]])^2] + 
    B1 Sqrt[(2 b - 2 (d1 + l) m + l Tan[\[Theta]])^2] + 
    B3 Sqrt[(2 b - 2 (d2 + l) m + l Tan[\[Theta]])^2] + 
    B6 Sqrt[(-2 (b + (d3 + l) m) + l Tan[\[Theta]])^2] + 
    B8 Sqrt[(-2 (b + (d4 + l) m) + l Tan[\[Theta]])^2]) 

術語下的每個基團的已知是一個正實數。

+2

表達式現在不包含Abs - 是否正確? – 2011-12-09 07:22:51

+0

這是正確的。我已經包含了原來的Sqrt條款,這些條款將簡化爲Abs。 – user640078

回答

3

由於這些術語都是已知的真實和積極的,所以平方和取平方根只會給你相同的數字。因此,你可以不喜歡

expr /. Sqrt[(x___)^2] :> x 

其中expr高於你的巨人表達。

+0

作爲一個實際問題,我已經完成了你的建議。然而,我很好奇是否有更好的方法來處理它,以防萬一我得到了混合表達式,只有部分激進派可以安全地取消。 – user640078

+0

加巨人+1 – Faq

3

這裏有兩個想法:

1)

Simplify[Abs[-2 b + 2 d1 m + l Tan[\[Theta]]], 
0 < \[Theta] < \[Pi]/2 && l > 0 && 2 d1 m > 0 && -2 b > 0] 

2)

f[e_] := 100 Count[e, _Abs, {0, Infinity}] + LeafCount[e] 
Simplify[Abs[-2 b + 2 d1 m + l Tan[\[Theta]]], -2 b + 2 d1 m + 
    l Tan[\[Theta]] > 0, ComplexityFunction -> f] 

釷複雜函數f使得阿布斯比時代更加昂貴。請參閱簡化文檔。這有幫助嗎?

+0

這兩個解決方案都是單獨運用這個術語,但不是當它是完整表達的一部分時。我將在我的問題中加上完整的表達方式,希望更清楚地說明問題。 – user640078

1

如果你只是想刪除的絕對值特定情況下,你可以做一些沿着這些路線:

Clear[removeAbs] 
removeAbs[expr_, r_] := expr /. {Sqrt[r^2] :> r, Abs[r] :> r} 

這樣,它不僅能消除任何表情絕對值指定:

In: removeAbs[Abs[x] + Abs[y], x] 
Out: x + Abs[y] 

我會看看我能否找到比這更好的解決方案。

1

我不斷刺激的東西,如Abs[a]^2,和東西喜歡使用Assuminga\[Element]Reals沒有幫助。

我發現了一些幫助在這裏WolframMathWorld - Absolute Square
ComplexExpand[Abs[a]^2, TargetFunctions -> {Conjugate}],但有時仍然會返回東西像Conjugate[Sqrt[a^2 + b^2]]我發現包裹第二ComplexExpand(不帶參數),周圍沒有什麼幫助。