From: Barton W. <wi...@un...> - 2014-09-07 12:29:02
|
Roberts (ingenious) tellsimpafter solution (http://stackoverflow.com/questions/24892016/maxima-differentiating-a-piecewise-function/25233479#25233479) gives: (%i4) diff(if x^2 < 1 then x^3 else x,x); (%o4) if x^2<1 then 3*x^2 else 1 Not OK: (%i5) diff(if aa^2 < 1 then aa^3 else aa,aa); (%o5) if (aa^2<1)^2<1 then 3*(aa^2<1)^2 else 1 Might a workaround be block([aa : gensym(), bb : gensym(), cc : gensym(),xx : gensym()], matchdeclare ([aa, bb, cc], all, xx, symbolp), tellsimpafter ('diff(if aa then bb else cc,xx), buildq([aa,dbb : diff(bb,xx),dcc : diff(cc,xx)], if aa then dbb else dcc))); --Barton |