2016-02-10 21 views
8

Nếu tôi bắt đầu với những biểu hiện mang tính biểu tượng như sau:factorise biểu hiện mang tính biểu tượng (hình vuông của một tổng hợp) trong MATLAB

a^2 + 2*a*b + b^2 

Sau đó chạy simplify (hoặc factor), tôi nhận được kết quả mong đợi:

>> simplify(a^2 + 2*a*b + b^2) 

(a + b)^2 

Bây giờ, khi tôi chạy cùng một ví dụ, nhưng thêm một cụm từ khác, không có yếu tố nào xảy ra:

>> simplify(a^2 + 2*a*b + b^2 + 1) 

a^2 + 2*a*b + b^2 + 1 

Làm thế nào tôi có thể nhận được các chức năng này để trả về phiên bản thực tế hơn của biểu thức này ((a + b)^2 + 1)? Tôi đã thử tất cả các tùy chọn hiển nhiên với các chức năng này (như 'Steps', 'IgnoreAnalyticConstraints', v.v.) nhưng không có kết quả.

Context: Tôi có biểu hiện ax^2 - 2*ax*bx + bx^2 + ay^2 - 2*ay*by + by^2 mà tôi cần phải chuyển đổi trở lại vào (ax - bx)^2 + (ay - by)^2 nên sau đó có thể được điều trị một cách chính xác như r^2. Tôi biết tôi có thể sử dụng một số quy tắc thay thế cùn, nhưng đối với một cái gì đó rất đơn giản, tôi cảm thấy như tôi đang thiếu một giải pháp rõ ràng 'không hack'.

+6

bạn sử dụng toán học thay thế ... – bla

+1

Tôi nghĩ thư viện biểu tượng Matlab có chút hạn chế. Tính toán biểu tượng không phải là sức mạnh lớn nhất của Matlab. – patrik

+1

Chuyển sang 'R' và sử dụng' Ryacas'. Tôi đã không tìm thấy bất kỳ công cụ để gọi 'yacas' từ Matlab. –

Trả lời

1

bạn có thể chạy simplify trên hai cụm từ riêng biệt.

simplify(ax^2 - 2*ax*bx + bx^2) + simplify(ay^2 - 2*ay*by + by^2) 

Có vẻ như bạn đã biết cách đơn giản hóa nó.

Ngoài ra, bạn cuối cùng cũng muốn viết nó là r^2. Điều này thường không thể cho tất cả các biểu thức thứ tự thứ hai, do đó, không bận tâm cố gắng tìm một giải pháp chung.

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