Re: If & NIntegrate
- To: mathgroup at smc.vnet.net
- Subject: [mg72616] Re: If & NIntegrate
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 12 Jan 2007 05:49:45 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <eo4n7p$l72$1@smc.vnet.net>
Jouvenot, Fabrice wrote:
> Hi all !
>
> I have a problem that I cannot resolve, so I hope some one here will be able to help me.
>
> I am doing many calculus and some of them takes very very long time and other never converged. The fact is that I integrate (NIntegrate (1 or 2 dimensional)) functions that contains a IF.
>
> These functions calculated a result and at some point I test if one part of the calculus is either positive or negative. If it is negative, I want the result to be equal to 0.
>
> They have this pattern :
> function[x_]:==Module[{},
> (different calculus to calculate f)
> If[func[a]<0, 0, func[a]];
> ];
>
> And after :
> b==NIntegrate[function[x],{...
>
> So I am looking for a solution to have a quick integration of this function
<snip>
You should use the *Boole* [1] rather than an *If*: "Boole[expr] yields
1 if expr is True and 0 if it is False."
For instance,
Boole[func[a]>0]*func[a]
Sections 3.5.9, "Integrals over Regions" [2], and 3.2.3, "Piecewise
Functions" [3], of _The Mathematica Book_ may be of interest too.
Regards,
Jean-Marc
[1] http://documents.wolfram.com/mathematica/functions/Boole
[2] http://documents.wolfram.com/mathematica/book/section-3.5.9
[3] http://documents.wolfram.com/mathematica/book/section-3.2.3