Một lựa chọn là sử dụng heaviside
chức năng để làm cho mỗi phương trình bằng zero bên ngoài phạm vi nhất định của nó, sau đó thêm tất cả chúng lại với nhau thành một phương trình:
syms x;
f = (heaviside(x)-heaviside(x-1))*x^3/6 + ...
(heaviside(x-1)-heaviside(x-2))*(1/6)*(-3*x^3+12*x^2-12*x+4) + ...
(heaviside(x-2)-heaviside(x-3))*(1/6)*(3*x^3-24*x^2+60*x-44) + ...
(heaviside(x-3)-heaviside(x-4))*(1/6)*(4-x)^3;
double(int(diff(f, 1)^2, x, 0, 4))
ans =
0.6667
Một lựa chọn khác là để thực hiện hội nhập của bạn cho mỗi chức năng trên mỗi subrange sau đó thêm các kết quả:
syms x;
eq1 = x^3/6;
eq2 = (1/6)*(-3*x^3+12*x^2-12*x+4);
eq3 = (1/6)*(3*x^3-24*x^2+60*x-44);
eq4 = (1/6)*(4-x)^3;
total = int(diff(eq1, 1)^2, x, 0, 1) + ...
int(diff(eq2, 1)^2, x, 1, 2) + ...
int(diff(eq3, 1)^2, x, 2, 3) + ...
int(diff(eq4, 1)^2, x, 3, 4)
total =
2/3
UPDATE:
Mặc dù được đề cập trong câu hỏi rằng chức năng piecewise
không hoạt động, Karan's answer đề xuất tính năng này, ít nhất là trong các phiên bản mới hơn. Các tài liệu cho piecewise
hiện nói rằng nó đã được giới thiệu trong R2016b, nhưng nó đã được trình bày rõ ràng sớm hơn nhiều. Tôi tìm thấy nó trong tài liệu cho các Symbolic Math Toolbox như xa trở lại như R2012b, nhưng cú pháp gọi là khác nhau hơn bây giờ. Tôi không thể tìm thấy nó trong tài liệu trước đó cho Symbolic Math Toolbox, nhưng nó đã hiển thị như một hàm trong các hộp công cụ khác (chẳng hạn như Statistics và Spline Toolboxes), giải thích đề cập của nó trong câu hỏi (và tại sao nó không làm việc cho các phương trình tượng trưng vào thời điểm đó).
Nó phải là 60 * x. – Jonas
@ Jonas: Cảm ơn. '12x' cũng cần được sửa. – gnovice
Về _as xa trở lại như R2012b_, bạn có thể đề cập đến chức năng piecewise MuPAD, đó là một giao diện khác nhau từ hộp công cụ Mathic Math. Đối với SMT, nó đã được giới thiệu trong R2016b. Xin lỗi về sự nhầm lẫn với các hộp công cụ. Hãy cho tôi biết nếu tôi có thể trả lời bất kỳ câu hỏi nào khác. –