Re: Sheer frustration with integration of piecewise continuous functions
- To: mathgroup at smc.vnet.net
- Subject: [mg40920] Re: [mg40907] Sheer frustration with integration of piecewise continuous functions
- From: Bobby Treat <drmajorbob+MathGroup3528 at mailblocks.com>
- Date: Thu, 24 Apr 2003 05:26:34 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
I hope somebody comes up with a better solution, but here's an
interesting one.
First, a breakdown of the function into intervals:
before = {0, {x, -Infinity, 0}};
f1 = {(fpeak/L)*(x/0.6), {x, 0, 0.6*L}};
f2 = {(fpeak/L)*L, {x, 0.6*L, 0.9*L}};
f3 = {(fpeak/L)*10*(L - x), {x, 0.9*L, L}};
after = {0, {x, L, Infinity}};
functions = {before, f1, f2, f3, after};
Second, a helper function:
conditional[{f_, {a_, b_, c_}}] := {b ? a < c, f}
This defines and plots the overall function:
f = Which @@ Flatten[conditional /@ functions]
Plot[Evaluate[f /. {L -> 1, fpeak -> 1}], {x, 0, 1}];
And this integrates it:
Plus @@ Integrate @@@ functions
% /. {L -> 1, fpeak -> 1}
Bobby
-----Original Message-----
From: Madhusudan Singh <spammers-go-here at yahoo.com>
To: mathgroup at smc.vnet.net
Subject: [mg40920] [mg40907] Sheer frustration with integration of piecewise
continuous functions
Clear["'*"];
(*ClearAttributes[Which, HoldAll];*)
f[x_, L_, fpeak_] := (fpeak /L) Which[((0 <= x) && (x < 0.6 L)), x/(0.6
),((0.6 L <= x) && (x <= 0.9 L)), L, ((0.9 L < x) && (x <= L)) , 10 (L
-x)];
Plot[f[x, 1, 1], {x, 0, 1}];
Print[Integrate[f[x, L, fpeak], {x, 0, L}, Assumptions -> {L >= 0,
fpeak >=
0, x >= 0, x <= L}]];
I have struggled with the above integration (believe me, its just a
test
case, I have a much more complicated function) for an hour now.
What is missing above ? The plot evaluates but the integral does not.
Why
does Mathematica make it so damned difficult to work with piecewise
continuous functions ?