2009-08-28 15 views
7

Khi tôi viết ra một bằng chứng hoặc dẫn xuất trên giấy tôi thường xuyên làm cho các dấu hiệu lỗi hoặc thả các điều khoản khi tôi chuyển từ bước này sang bước tiếp theo. Tôi muốn sử dụng Mathematica để tự cứu mình khỏi những sai lầm ngớ ngẩn này. Tôi không muốn Mathematica giải thích biểu thức, tôi chỉ muốn sử dụng nó để thực hiện và hiển thị một loạt các thao tác đại số. Đối với ví dụ (tầm thường)Có gói Mathematica nào để trình bày bằng chứng/dẫn xuất không?

In[111]:= MultBothSides[Equal[a_, b_], c_] := Equal[c a, c b]; 

In[112]:= expression = 2 a == a b 

Out[112]= 2 a == a b 

In[113]:= MultBothSides[expression, 1/a] 

Out[113]= 2 == b 

Bất kỳ ai có thể chỉ cho tôi gói hàng hỗ trợ loại thao tác này?

Chỉnh sửa

Cảm ơn bạn đã nhập, chứ không phải những gì tôi đang tìm kiếm. Thao tác biểu tượng không thực sự là vấn đề. Tôi thực sự đang tìm kiếm một cái gì đó mà sẽ làm cho rõ ràng sự biện minh đại số hoặc toán học của mỗi bước của một dẫn xuất. Mục tiêu của tôi ở đây thực sự là sư phạm.

+2

Xin lỗi tôi là một vài năm cuối ... nhưng gói nhỏ tôi đề cập ở đây http://stackoverflow.com/q/5701159/667867 nên làm những gì bạn muốn. Đọc câu hỏi và thảo luận để biết trước! – telefunkenvf14

Trả lời

3

Mathematica cũng cung cấp một số hàm cấp cao để thao tác đại số. Trong số này có Expand, ApartTogetherCancel, mặc dù có thêm một số khác. Ngoài ra, với ví dụ cụ thể của bạn về việc áp dụng cùng một phép biến đổi cho cả hai bên của phương trình (có nghĩa là, và biểu thức với đầu Equal), bạn có thể sử dụng chức năng Thread, hoạt động giống như chức năng MultBothSides của bạn. tổng quát hơn nhiều.

In[1]:= expression = 2 a == a b 
Out[1]:= 2 a == a b 

In[2]:= Thread[expression /a, Equal] 
Out[2]:= 2 == b 

In[3]:= Thread[expression - c, Equal] 
Out[3]:= 2 a - c == a b - c 

Trong cả hai trong những giải pháp được trình bày, nó phải là tương đối dễ dàng để xem những gì bước đi kèm. Nếu bạn muốn một chút gì đó rõ ràng hơn, bạn có thể viết chức năng riêng của bạn như vậy:

In[4]:= ApplyToBothSides[f_, eq_Equal] := Map[f, eq] 

In[5]:= ApplyToBothSides[4 * #&, expression] 
Out[5]:= 8 a == 4 a b 

Đó là một sự tổng quát của hàm MultBothSides bạn mà lợi dụng thực tế là Map công trình trên biểu thức với bất kỳ đầu, không chỉ là người đứng đầu List. Nếu bạn đang cố gắng giao tiếp với một đối tượng không quen thuộc với Mathematica, việc sử dụng các loại tên này có thể giúp bạn giao tiếp rõ ràng hơn. Trong một mạch có liên quan, nếu bạn muốn sử dụng quy tắc thay thế theo đề xuất của Ira Baxter, có thể hữu ích khi viết Thay thế hoặc Thay thế Thay vì sử dụng đường cú pháp /..

In[6]:= ReplaceAll[expression, a -> (x + y)] 
Out[6]:= 2 (x + y) == b (x + y) 

Nếu bạn nghĩ rằng nó sẽ được rõ ràng hơn để có phương trình thực tế, thay vì tên biến expression, trong đầu vào của bạn, và bạn đang sử dụng giao diện máy tính xách tay, đánh dấu từ expression bằng chuột, gọi lên menu ngữ cảnh và chọn "Đánh giá tại địa điểm".

Giao diện sổ tay cũng là một môi trường rất dễ chịu để thực hiện "lập trình biết chữ", vì vậy bạn cũng có thể giải thích bất kỳ bước nào không rõ ràng ngay lập tức bằng lời. Tôi tin rằng đây là một thực hành tốt khi viết bằng chứng toán học bất kể phương tiện.

+1

Cảm ơn câu trả lời của bạn. Tôi đã hy vọng một gói đóng hộp dọc theo những dòng này đã tồn tại, nhưng điểm bạn thực hiện sẽ giúp tôi bắt đầu trên gói của riêng tôi. –

2

Tôi không nghĩ bạn cần gói. Những gì bạn muốn làm là thao tác từng công thức theo một quy tắc suy luận. Trong MMa, bạn có thể mô hình các quy tắc suy luận về một công thức sử dụng các phép biến đổi. Vì vậy, nếu bạn có một công thức f, bạn có thể áp dụng một quy tắc suy luận tôi bằng cách thực hiện (cú pháp MMA của tôi là 15 năm gỉ)

f ./ I 

để sản xuất các công thức tiếp theo trong chuỗi của bạn.

MMA dĩ nhiên sẽ cố gắng đơn giản hóa công thức của bạn nếu chúng chứa toán tử và thuật ngữ đại số chuẩn, chẳng hạn như số không đổi và toán tử số học. Bạn có thể ngăn MMa áp dụng các quy tắc "suy luận" của riêng mình bằng cách đính kèm công thức của bạn vào một mẫu Giữ [...].

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