If & NIntegrate
- To: mathgroup at smc.vnet.net
- Subject: [mg72573] If & NIntegrate
- From: "Jouvenot, Fabrice" <F.Jouvenot at liverpool.ac.uk>
- Date: Thu, 11 Jan 2007 02:08:16 -0500 (EST)
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 If this is not explicit enough, I paste an excerpt of my code at the end of this email. Thanks for your help, Cheers, F. --------------------------------------- \!\(\* RowBox[{ RowBox[{ RowBox[{ RowBox[{\(d\[Sigma]bremd\[Epsilon][Emu_, Egam_]\), ":==", RowBox[{"Module", "[", RowBox[{\({}\), ",", "\[IndentingNewLine]", RowBox[{\(\[Epsilon]max[E\[Mu]_] :== E\[Mu] - m\_\[Mu]\), ";" , "\[IndentingNewLine]", \(\[Epsilon]max2[E\[Mu]_] :== E\[Mu]/\((1 + m\_\[Mu]\^2/\((2\ \(m\_e\) E\[Mu])\))\)\), ";", "\[IndentingNewLine]", "\[IndentingNewLine]", \(D\_n == 1.54\ A\^0.27\), ";", "\[IndentingNewLine]", \(D\_np == D\_n\^\(1 - 1/Z\)\), ";", "\[IndentingNewLine]", StyleBox["\[IndentingNewLine]", FontSize->14], \(v[E\[Mu]_, \[Epsilon]_] :== \[Epsilon]/ E\[Mu]\), ";", "\[IndentingNewLine]", \(\[Delta][ E\[Mu]_, \[Epsilon]_] :== \(m\_\[Mu]\^2\ v[E\[Mu], \ \[Epsilon]]\)\/\(2 \((E\[Mu] - \[Epsilon])\)\)\), ";", "\[IndentingNewLine] ", "\[IndentingNewLine]", \(\[CapitalPhi]nTemp[ E\[Mu]_, \[Epsilon]_] :== Log[\(B\ Z\^\(\(-1\)/3\)\ \((m\_\[Mu] + \[Delta][E\[Mu], \ \[Epsilon]] \((D\_np\ \@\[ExponentialE] - 2)\))\)\)\/\(\(D\_np\) \((m\_e + \ \[Delta][E\[Mu], \[Epsilon]] \(\@\[ExponentialE]\) B\ Z\^\(\(-1\)/3\))\)\)] \), ";", "\[IndentingNewLine]", "\[IndentingNewLine]", \(\[CapitalPhi]n[ E\[Mu]_, \[Epsilon]_] :== If[\[CapitalPhi]nTemp[E\[Mu], \[Epsilon]] < 0, 0, \[CapitalPhi]nTemp[E\[Mu], \[Epsilon]]]\), ";", "\[IndentingNewLine]", "\[IndentingNewLine]", " ", \(\[CapitalPhi]eTemp[E\[Mu]_, \[Epsilon]_] :== Log[\(B\ Z\^\(\(-2\)/3\)\ m\_\[Mu]\)\/\(\((1 + \(\[Delta] \ \ [E\[Mu], \[Epsilon]] m\_\[Mu]\)\/\(\(m\_e\^2\) \@\[ExponentialE]\))\) \((m\ _e \ + \[Delta]\ [E\[Mu], \[Epsilon]] \(\@\[ExponentialE]\) \(B\_p\) Z\^\(\(-2\) /3\ \))\)\)]\), ";", "\[IndentingNewLine]", \(\[CapitalPhi]e[ E\[Mu]_, \[Epsilon]_] :== If[\[CapitalPhi]eTemp[E\[Mu], \[Epsilon]] < 0 || \((\[Epsilon] >== \ \[Epsilon]max2[E\[Mu]])\), 0, \[CapitalPhi]eTemp[E\[Mu], \[Epsilon]]]\), ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", \(dsbremdE[E\[Mu]_, \[Epsilon]_] :== 16\/3\ \[Alpha]\ \(\((r\_e\ m\_e\ /m\_\[Mu])\)\^2\ Z\ \(( Z\ \ \[CapitalPhi]n[E\[Mu], \[Epsilon]] + \[CapitalPhi]e[E\[Mu], \ \[Epsilon]])\)\)\/\[Epsilon]\ \((1 - v[E\[Mu], \[Epsilon]] + \(3 v[E\[Mu], \[Epsilon]]\ ^2\ \)\/4)\)\), ";", "\[IndentingNewLine]", \(dsbremdE[Emu, Egam]\)}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", StyleBox[\( (*\ Total\ cross\ section\ \[Sigma]\_Brem\ /m\ *) \), FontColor->RGBColor[0, 0, 1]], StyleBox["\[IndentingNewLine]", FontSize->14], \(sectionbrem[E\[Mu]_] :== Module[{}, NIntegrate[ d\[Sigma]bremd\[Epsilon][E\[Mu], \[Epsilon]], {\[Epsilon], Eminbrem, E\[Mu] - m\_\[Mu]}]*unit]\)}], ";"}]\)