Jak podnieść do kwadratu funkcję zadaną przedziałami?

Mathematica 7.0

Zadaję funkcję F przedziałami, np:

F[x_]=Piecewise[{{-x (x-2),x<1},{1,1≤x<4},{-(((x-5))^2)+2,4≤x<5},{(1/2) (((x-6))^2)+(3/2),5≤x<7}}]

Plot[F[x],{x,-3,9}]

Różniczkowanie i całkowanie można wykonać naturalnie

D[F[x],x]

Integrate[F[x],x]//Simplify

Jednak inne operacje mogą nie rozpoznawać funkcji Piecewise.

Próbuję podnieść F do kwadratu

G[x_]=((F[x])^2)

Tak z pewnością nie!  Widać, że trzeba skonstruować nową funkcję Piecewise, gdzie pierwszymi elementami listy stanowiacej argument funkcji będą kwadraty odpowiednich elementów oryginalnej listy. Najpierw zauważam, że funkcję można "rozłożyć" na operator Piecewise i jego argument poleceniem Part

F[x][[0]]
F[x][[1]]

Nowy argument można zbudować np. poleceniem Table

Table[{((F[x][[1,k,1]])^2),F[x][[1,k,2]]},{k,1,Length[F[x][[1]]]}]

(Jeśli dotyczy to pojedynczej instrukcji można to poprostu wykonać ręcznie.)

Wobec tego

G[x_]=Piecewise[Table[{((F[x][[1,k,1]])^2),F[x][[1,k,2]]},{k,1,Length[F[x][[1]]]}]]

Plot[G[x],{x,-3,9}]

W ten sam sposób można wykonać dowolną operację na funkcji F, np.

G[x_]=Piecewise[Table[{Sin[F[x][[1,k,1]]],F[x][[1,k,2]]},{k,1,Length[F[x][[1]]]}]]

Plot[G[x],{x,-3,9}]

Może w kolejnych wersjach Mathematici będzie to działać lepiej.