2011-12-08 36 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(不带参数),周围没有什么帮助。