2011-12-08 15 views
5

Al momento ho una grande espressione con molti termini della formaSemplificare valore assoluto nel Mathematica

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

Lo so, dalla geometria del mio problema, che

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

Tuttavia, quando provo di semplificare la mia espressione,

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

ottengo solo indietro

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

Come posso rendere Mathematica un valore assoluto non necessario?

EDIT 1

L'espressione completa che sto cercando di semplificare è

-(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]) 

I termini sia squadrato sotto ciascuno dei radicali è noto per essere un numero reale positivo.

+2

L'expr ora non contiene un Abs - è corretto? –

+0

Questo è corretto.Ho incluso i termini Sqrt originali, che semplificheranno in Abs. – user640078

risposta

3

Poiché i termini sono tutti noti per essere reali e positivi, la quadratura e la radice quadrata ti daranno solo lo stesso numero. Quindi, si potrebbe fare qualcosa di simile

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

dove expr è la vostra espressione gigante sopra.

+0

In pratica, ho fatto ciò che suggerisci. Tuttavia, ero curioso di sapere se c'era un modo migliore per gestirlo, nel caso avessi mai avuto un'espressione mista in cui solo alcuni dei radicali possono essere cancellati in modo sicuro. – user640078

+0

più uno +1 per gigante – Faq

3

Ecco due idee:

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] 

Th funzione f complessità rende più costoso di Abs Times. Vedi docu per Semplificare. Questo aiuta?

+0

Entrambe le soluzioni hanno funzionato sul termine in modo isolato, ma non quando faceva parte dell'espressione completa. Aggiungerò la piena espressione alla mia domanda per renderlo più chiaro. – user640078

1

Se solo si desidera rimuovere le istanze specifiche di valore assoluto, si potrebbe fare qualcosa in queste righe:

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

In questo modo rimuove solo il valore assoluto da qualsiasi espressione si specifica:

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

Vedrò se riesco a trovare una soluzione più bella di questa.

1

Sono costantemente stimolato da cose come Abs[a]^2 e cose come l'utilizzo di Assuming con a\[Element]Reals non aiuta.

ho trovato un po 'di aiuto qui WolframMathWorld - Absolute Square con
ComplexExpand[Abs[a]^2, TargetFunctions -> {Conjugate}], ma a volte restituisce ancora roba come Conjugate[Sqrt[a^2 + b^2]] e ho trovato avvolgendo un secondo ComplexExpand (senza parametri) intorno che aiuta.