Una opción es utilizar la función heaviside
para que cada ecuación igual a cero fuera de su rango dado, a continuación, añadir a todos juntos en una sola ecuación:
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
Otra alternativa es llevar a cabo su integración para cada función sobre cada subintervalo a continuación, añadir los resultados:
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
ACTUALIZACIÓN:
Aunque se menciona en la pregunta que la función piecewise
no funcionó, Karan's answer sugiere que sí, al menos en las versiones más recientes. La documentación para piecewise
actualmente dice que fue introducida en R2016b, pero estaba claramente presente mucho antes. Lo encontré en la documentación del Symbolic Math Toolbox ya en R2012b, pero la sintaxis de las llamadas era diferente de lo que es ahora. No pude encontrarlo en la documentación anterior para Symbolic Math Toolbox, pero apareció como una función en otras cajas de herramientas (como Statistics y Spline Toolboxes), lo que explica su mención en la pregunta (y por qué no lo hizo). trabajar para ecuaciones simbólicas en el momento).
sea de 60 * x. – Jonas
@Jonas: Gracias. El '12x' necesitaba ser reparado también. – gnovice
En cuanto a R2012b_, es posible que te estés refiriendo a la función MuPAD por partes, que es una interfaz diferente de Symbolic Math Toolbox. Para SMT, se introdujo en R2016b. Perdón por la confusión con las cajas de herramientas. Avíseme si puedo responder cualquier otra pregunta. –