How to count the number of function evaluations in NIntegrateDifferences between ParametricPlot3D and...

How to count the number of function evaluations in NIntegrate

Can I separate garlic into cloves for storage?

The relationship of noch nicht and the passive voice

Is a global DNS record a security risk for phpMyAdmin?

Quick Kurodoko Puzzle: Threes and Triples

Is Zack Morris's 'time stop' ability in "Saved By the Bell" a supernatural ability?

Floating Point XOR

Did HaShem ever command a Navi (Prophet) to break a law?

All numbers in a 5x5 Minesweeper grid

How does one calculate the distribution of the Matt Colville way of rolling stats?

What do solvers like Gurobi and CPLEX do when they run into hard instances of MIP

Find all files in directories named foo

Solving a nonhomogeneous linear recurrence relation

How do rulers get rich from war?

What did the controller say during my approach to land (audio clip)?

How is underwater propagation of sound possible?

Flying pigs arrive

4h 40m delay caused by aircraft inspection, Norwegian refuses EU 261/2004 compensation because it turned out there was nothing wrong with the aircraft

Algorithm for competing cells of 0s and 1s

Who are the people reviewing far more papers than they're submitting for review?

Is it possible that the shadow of The Moon is a single dot during solar eclipse?

EU compensation - fire alarm at the Flight Crew's hotel

Integrability of log of distance function

Is there a comprehensive book, contains (algebra, trig, calculus, differential equations, statistics, ...)?



How to count the number of function evaluations in NIntegrate


Differences between ParametricPlot3D and NIntegrateDetermining which rule NIntegrate selects automaticallyWeighted mean of complex exponential function using NIntegrateProblems with NIntegrateNIntegrate fails to converge under almost any PrecisionGoal, MinRecursion etc. How can I trust the result?Match NIntegrate vs Integrate with HighPrecision






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







3












$begingroup$


I expect the following code to count the number of function calls in NIntegrate.



i = 0;
f[x_] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
Print[NIntegrate[f[x], {x, -2, 1}]]
Print[i]


However, the output is



0.0901049
2


which means only 2 function calls in NIntegrate. It's hard to believe converged result can be obtained by merely two function calls. What's happening here?










share|improve this question









$endgroup$





















    3












    $begingroup$


    I expect the following code to count the number of function calls in NIntegrate.



    i = 0;
    f[x_] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
    Print[NIntegrate[f[x], {x, -2, 1}]]
    Print[i]


    However, the output is



    0.0901049
    2


    which means only 2 function calls in NIntegrate. It's hard to believe converged result can be obtained by merely two function calls. What's happening here?










    share|improve this question









    $endgroup$

















      3












      3








      3


      1



      $begingroup$


      I expect the following code to count the number of function calls in NIntegrate.



      i = 0;
      f[x_] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
      Print[NIntegrate[f[x], {x, -2, 1}]]
      Print[i]


      However, the output is



      0.0901049
      2


      which means only 2 function calls in NIntegrate. It's hard to believe converged result can be obtained by merely two function calls. What's happening here?










      share|improve this question









      $endgroup$




      I expect the following code to count the number of function calls in NIntegrate.



      i = 0;
      f[x_] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
      Print[NIntegrate[f[x], {x, -2, 1}]]
      Print[i]


      However, the output is



      0.0901049
      2


      which means only 2 function calls in NIntegrate. It's hard to believe converged result can be obtained by merely two function calls. What's happening here?







      numerical-integration






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 8 hours ago









      Chong WangChong Wang

      2592 silver badges8 bronze badges




      2592 silver badges8 bronze badges

























          2 Answers
          2






          active

          oldest

          votes


















          2














          $begingroup$

          Try the option EvaluationMonitor



          Block[{k = 0}, {NIntegrate[f[x], {x, -2, 1}, EvaluationMonitor :> k++], k}]



          {0.0901049, 121}




          Without using EvaluationMonitor you can do



          ClearAll[f, ff]
          f[x_] := Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]]

          i = 0;
          ff[y_?NumberQ] := Block[{x = y}, i++; f[x]]

          {NIntegrate[ff[x], {x, -2, 1}], i}



          {0.0901049, 121}







          share|improve this answer











          $endgroup$















          • $begingroup$
            Yeah, that works. But what's wrong with my approach?
            $endgroup$
            – Chong Wang
            8 hours ago



















          2














          $begingroup$

          A very simple modification (adding ?NumericQ) achieves the result you expected.



          i = 0;
          f[x_?NumericQ] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
          Print[NIntegrate[f[x], {x, -2, 1}]]
          Print[i]

          (* 0.0901049*)

          (*122*)


          The issue is that NIntegrate tries to evaluate f[x] symbolically. In your version, it is called only once and is replaced by Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]. In my version, the f[x] is returned unchanged until specific numerical values are given to x.






          share|improve this answer









          $endgroup$


















            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "387"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });















            draft saved

            draft discarded
















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f206391%2fhow-to-count-the-number-of-function-evaluations-in-nintegrate%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            2














            $begingroup$

            Try the option EvaluationMonitor



            Block[{k = 0}, {NIntegrate[f[x], {x, -2, 1}, EvaluationMonitor :> k++], k}]



            {0.0901049, 121}




            Without using EvaluationMonitor you can do



            ClearAll[f, ff]
            f[x_] := Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]]

            i = 0;
            ff[y_?NumberQ] := Block[{x = y}, i++; f[x]]

            {NIntegrate[ff[x], {x, -2, 1}], i}



            {0.0901049, 121}







            share|improve this answer











            $endgroup$















            • $begingroup$
              Yeah, that works. But what's wrong with my approach?
              $endgroup$
              – Chong Wang
              8 hours ago
















            2














            $begingroup$

            Try the option EvaluationMonitor



            Block[{k = 0}, {NIntegrate[f[x], {x, -2, 1}, EvaluationMonitor :> k++], k}]



            {0.0901049, 121}




            Without using EvaluationMonitor you can do



            ClearAll[f, ff]
            f[x_] := Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]]

            i = 0;
            ff[y_?NumberQ] := Block[{x = y}, i++; f[x]]

            {NIntegrate[ff[x], {x, -2, 1}], i}



            {0.0901049, 121}







            share|improve this answer











            $endgroup$















            • $begingroup$
              Yeah, that works. But what's wrong with my approach?
              $endgroup$
              – Chong Wang
              8 hours ago














            2














            2










            2







            $begingroup$

            Try the option EvaluationMonitor



            Block[{k = 0}, {NIntegrate[f[x], {x, -2, 1}, EvaluationMonitor :> k++], k}]



            {0.0901049, 121}




            Without using EvaluationMonitor you can do



            ClearAll[f, ff]
            f[x_] := Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]]

            i = 0;
            ff[y_?NumberQ] := Block[{x = y}, i++; f[x]]

            {NIntegrate[ff[x], {x, -2, 1}], i}



            {0.0901049, 121}







            share|improve this answer











            $endgroup$



            Try the option EvaluationMonitor



            Block[{k = 0}, {NIntegrate[f[x], {x, -2, 1}, EvaluationMonitor :> k++], k}]



            {0.0901049, 121}




            Without using EvaluationMonitor you can do



            ClearAll[f, ff]
            f[x_] := Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]]

            i = 0;
            ff[y_?NumberQ] := Block[{x = y}, i++; f[x]]

            {NIntegrate[ff[x], {x, -2, 1}], i}



            {0.0901049, 121}








            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited 8 hours ago

























            answered 8 hours ago









            kglrkglr

            217k10 gold badges247 silver badges497 bronze badges




            217k10 gold badges247 silver badges497 bronze badges















            • $begingroup$
              Yeah, that works. But what's wrong with my approach?
              $endgroup$
              – Chong Wang
              8 hours ago


















            • $begingroup$
              Yeah, that works. But what's wrong with my approach?
              $endgroup$
              – Chong Wang
              8 hours ago
















            $begingroup$
            Yeah, that works. But what's wrong with my approach?
            $endgroup$
            – Chong Wang
            8 hours ago




            $begingroup$
            Yeah, that works. But what's wrong with my approach?
            $endgroup$
            – Chong Wang
            8 hours ago













            2














            $begingroup$

            A very simple modification (adding ?NumericQ) achieves the result you expected.



            i = 0;
            f[x_?NumericQ] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
            Print[NIntegrate[f[x], {x, -2, 1}]]
            Print[i]

            (* 0.0901049*)

            (*122*)


            The issue is that NIntegrate tries to evaluate f[x] symbolically. In your version, it is called only once and is replaced by Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]. In my version, the f[x] is returned unchanged until specific numerical values are given to x.






            share|improve this answer









            $endgroup$




















              2














              $begingroup$

              A very simple modification (adding ?NumericQ) achieves the result you expected.



              i = 0;
              f[x_?NumericQ] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
              Print[NIntegrate[f[x], {x, -2, 1}]]
              Print[i]

              (* 0.0901049*)

              (*122*)


              The issue is that NIntegrate tries to evaluate f[x] symbolically. In your version, it is called only once and is replaced by Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]. In my version, the f[x] is returned unchanged until specific numerical values are given to x.






              share|improve this answer









              $endgroup$


















                2














                2










                2







                $begingroup$

                A very simple modification (adding ?NumericQ) achieves the result you expected.



                i = 0;
                f[x_?NumericQ] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
                Print[NIntegrate[f[x], {x, -2, 1}]]
                Print[i]

                (* 0.0901049*)

                (*122*)


                The issue is that NIntegrate tries to evaluate f[x] symbolically. In your version, it is called only once and is replaced by Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]. In my version, the f[x] is returned unchanged until specific numerical values are given to x.






                share|improve this answer









                $endgroup$



                A very simple modification (adding ?NumericQ) achieves the result you expected.



                i = 0;
                f[x_?NumericQ] := (i += 1; Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]])
                Print[NIntegrate[f[x], {x, -2, 1}]]
                Print[i]

                (* 0.0901049*)

                (*122*)


                The issue is that NIntegrate tries to evaluate f[x] symbolically. In your version, it is called only once and is replaced by Tanh[x] Sin[Exp[x]] Exp[-0.55 x^2 Exp[x^2]. In my version, the f[x] is returned unchanged until specific numerical values are given to x.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 7 hours ago









                mikadomikado

                7,6371 gold badge9 silver badges29 bronze badges




                7,6371 gold badge9 silver badges29 bronze badges


































                    draft saved

                    draft discarded



















































                    Thanks for contributing an answer to Mathematica Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    Use MathJax to format equations. MathJax reference.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f206391%2fhow-to-count-the-number-of-function-evaluations-in-nintegrate%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

                    Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

                    Ciclooctatetraenă Vezi și | Bibliografie | Meniu de navigare637866text4148569-500570979m