Re: Vector Piecewise in 5.1
- To: mathgroup at smc.vnet.net
- Subject: [mg53067] Re: Vector Piecewise in 5.1
- From: Maxim <ab_def at prontomail.com>
- Date: Wed, 22 Dec 2004 04:53:07 -0500 (EST)
- References: <200412191114.GAA17987@smc.vnet.net> <cq6djo$2mq$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Here we have two separate errors: In[1]:= Integrate[Piecewise[{{{a, b}, x > 0}}, {c, d}], x] Out[1]= Internal`ToPiecewise[{x <= 0, x > 0}, {c*x, d*x, {a*x, b*x}}, True] Hard to say what went wrong here, the function Internal`ToPiecewise is Protected like other system symbols, but it doesn't have any definition. Now the definite integral: In[2]:= Integrate[Piecewise[{{{a, b}, x > 0}}, {c, d}], {x, -1, 1}] Out[2]= a + b + c + d The correct answer is {a + c, b + d}. This is a trivial error: when summing the integrals over [-1, 0] and [0, 1], instead of adding up {a, b} and {c, d} Mathematica does something like Total[{{a, b}, {c, d}}, Infinity], destroying the correct expression structure. A vector piecewise function cannot be plotted directly, because when Plot analyzes the expression it is given, it doesn't see a list and assumes that the expression is a scalar. You have to use some workaround, for example pw = Piecewise[{{{x, 2*x}, x > 0}}, {0, 0}]; Plot[{pw[[1]], pw[[2]]}, {x, -1, 1}] Another issue is that long Piecewise expressions are formatted incorrectly: in the output of Piecewise[{{Sum[a[k], {k, 100}], x > 0}}] I can see the terms only up to a[73], after that point horizontal scrolling in the front end gets stuck. I wonder what the reason was to make Piecewise a HoldAll function: the example with Sum shows that you can't tell how the arguments will be evaluated anyway. Maxim Rytin m.r at inbox.ru On Mon, 20 Dec 2004 11:38:32 +0000 (UTC), Murray Eisenberg <murray at math.umass.edu> wrote: > And it seems that pw cannot directly be plotted, not even by using, e.g., > > Plot[cf, {x, -1, 1}]; > > after your definition of cf. > > > Mark Fisher wrote: >> To my surprise (and delight) it turns out that Piecewise in 5.1 can >> handle vectors (to some extent): >> >> pw1 = Piecewise[{{x, x > 0}}] >> pw2 = Piecewise[{{x2, x > 0}}] >> >> pw = PiecewiseExpand[{pw1, pw2}] >> >> This can even be compiled successfully: >> >> cf = Compile[{x}, Evaluate[pw]] >> >> And differentiated: >> >> D[pw, x] >> >> But not, however, integrated: >> >> Integrate[pw, x] >> >> (Worse, Integrate[pw, {x, 0, 3}] returns a scalar.) >> Is this a bug or just the absence of an undocumented feature? >> >> --Mark >> >> >
- References:
- Vector Piecewise in 5.1
- From: "Mark Fisher" <mark@markfisher.net>
- Vector Piecewise in 5.1