2011-12-08 43 views
5

Tôi hiện đang có một biểu thức lớn với nhiều về hình thứcĐơn giản hóa Giá trị tuyệt đối trong Mathematica

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

tôi biết, từ hình học của vấn đề của tôi, rằng

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

Tuy nhiên, khi tôi cố gắng để đơn giản hóa biểu hiện của tôi,

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

tôi chỉ nhận lại

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

Làm cách nào để Mathematica đơn giản hóa giá trị tuyệt đối không cần thiết?

EDIT 1

Khái niệm đầy đủ mà tôi đang cố gắng để đơn giản hóa là

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

Các thuật ngữ được bình dưới mỗi gốc được biết đến là một số thực dương.

+2

Expr hiện không chứa Abs - có đúng không? –

+0

Đó là chính xác.Tôi đã bao gồm các điều khoản Sqrt gốc, đơn giản hóa sẽ giảm xuống Abs. – user640078

Trả lời

3

Vì các cụm từ này đều được biết là thực và tích cực, bình phương và lấy căn bậc hai sẽ chỉ cung cấp cho bạn cùng một số. Do đó, bạn có thể làm điều gì đó như

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

nơi biểu thức khổng lồ của bạn ở trên.

+0

Như một vấn đề thực tế, tôi đã làm như bạn đề nghị. Tuy nhiên, tôi đã tò mò nếu có một cách tốt hơn để xử lý nó, trong trường hợp tôi đã bao giờ nhận được một biểu hiện hỗn hợp, nơi chỉ _some_ của các gốc tự do có thể được hủy bỏ một cách an toàn. – user640078

+0

cộng một +1 cho người khổng lồ – Faq

3

Dưới đây là hai ý tưởng:

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 phức tạp hàm f làm Abs đắt hơn Times. Xem docu để đơn giản hóa. cái đó có giúp ích không?

+0

Cả hai giải pháp đều làm việc theo cụm từ trong sự cô lập, nhưng không phải khi nó là một phần của biểu thức đầy đủ. Tôi sẽ thêm biểu hiện đầy đủ vào câu hỏi của tôi để hy vọng làm cho mọi thứ rõ ràng hơn. – user640078

1

Nếu bạn chỉ muốn xóa trường hợp cụ thể của giá trị tuyệt đối, bạn có thể làm một cái gì đó dọc theo những dòng:

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

Bằng cách đó nó chỉ loại bỏ các giá trị tuyệt đối từ bất kỳ biểu thức mà bạn chỉ định:

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

Tôi sẽ xem liệu tôi có thể tìm được giải pháp đẹp hơn thế này không.

1

Tôi liên tục bị kích thích bởi những thứ như Abs[a]^2 và các nội dung như sử dụng Assuming với a\[Element]Reals không giúp ích gì.

Tôi tìm thấy một số trợ giúp ở đây WolframMathWorld - Absolute Square với
ComplexExpand[Abs[a]^2, TargetFunctions -> {Conjugate}], nhưng đôi khi nó vẫn trả về những thứ như thế Conjugate[Sqrt[a^2 + b^2]] và tôi đã tìm thấy gói một giây ComplexExpand (không có tham số) xung quanh giúp.

Các vấn đề liên quan