MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problem when NIntegrate matrix

  • To: mathgroup at smc.vnet.net
  • Subject: [mg81356] Re: Problem when NIntegrate matrix
  • From: Chris Chiasson <chris.chiasson at gmail.com>
  • Date: Thu, 20 Sep 2007 03:52:15 -0400 (EDT)
  • References: <fcqrrj$2jc$1@smc.vnet.net>

On Sep 19, 4:58 am, chiron1201 <hua... at cse.buaa.edu.cn> wrote:
> Hi all!
>
> I can not understand why there is a NIntegrate::inum error when I try to evaluate the following code
>
> TEST = Piecewise[{
>      {{{1, 2, 3}, {2, 3, 4}, {3, 4, 5}}, #1 < 0.00},
>      {{{2, 3, 4}, {3, 4, 5}, {4, 5, 6}}, #1 >= 0.00},
>      }] &;
>
> NIntegrate[TEST[x], {x, -1, +1}]
>
> However, I can get the correct result by modifying the code manually. That is
>
> NIntegrate[{{1, 2, 3}, {2, 3, 4}, {3, 4, 5}}, {x, -1, 0}]+NIntegrate[{{2, 3,4}, {3, 4, 5}, {4, 5, 6}}, {x, 0, 1}]
>
> However, it is impossible for me to manually split the integration range to thousands of segments. Why this happens? What should I do if I want the first code be evaluated correctly?
>
> Thanks!

the method below works in v6, but not in v5 due to some problem with
NIntegrate

In[1]:= Attributes@pwJoin = {Listable};
pwJoin[HoldPattern[Piecewise][condSet1_, def_],
  HoldPattern[Piecewise][condSet2_, def_]] :=
 With[{jointConds = Join[condSet1, condSet2]},
  Piecewise[jointConds, def]]
pwCollapse@HoldPattern[Piecewise][arg : {{_?MatrixQ, _} ..}, def_] :=
 pwJoin @@
  MapThread[
   Function[{mat, constr},
    Map[Piecewise[{{#, constr}}, def] &, mat, {2}]], Transpose@arg]
pwCollapse@
  Piecewise[{{{{1, 2, 3}, {2, 3, 4}, {3, 4, 5}},
     x < 0.00}, {{{2, 3, 4}, {3, 4, 5}, {4, 5, 6}}, x >= 0.00}}];
NIntegrate[%, {x, -1, 1}]

Out[5]= {{3., 5., 7.}, {5., 7., 9.}, {7., 9., 11.}}



  • Prev by Date: Re: How to slow down SWF?
  • Next by Date: Re: step into dsolve routine on step at a time
  • Previous by thread: Re: Problem when NIntegrate matrix
  • Next by thread: Pattern::nodef: No default setting found for Piecewise in position 2 when length is 2.