Numerical Function Fitting












0












$begingroup$


In summary I have a program that numerically integrates a function with multiple parameters, and would like to fit it against some data. Now, if I had the analytic form of the function I could of course find the minimum of my fit criteria (say Chi Square.) So, for the 3 parameters I care about, I could simply try a bunch of values for each parameter, but that could take forever! The integration takes at least 1.2s (bare minimum), and if I were to try 10 values for each parameter... More importantly however, this isn't smart! Is there a robust way to look for minimums in a non-analytic evaluation?










share|cite|improve this question









$endgroup$

















    0












    $begingroup$


    In summary I have a program that numerically integrates a function with multiple parameters, and would like to fit it against some data. Now, if I had the analytic form of the function I could of course find the minimum of my fit criteria (say Chi Square.) So, for the 3 parameters I care about, I could simply try a bunch of values for each parameter, but that could take forever! The integration takes at least 1.2s (bare minimum), and if I were to try 10 values for each parameter... More importantly however, this isn't smart! Is there a robust way to look for minimums in a non-analytic evaluation?










    share|cite|improve this question









    $endgroup$















      0












      0








      0





      $begingroup$


      In summary I have a program that numerically integrates a function with multiple parameters, and would like to fit it against some data. Now, if I had the analytic form of the function I could of course find the minimum of my fit criteria (say Chi Square.) So, for the 3 parameters I care about, I could simply try a bunch of values for each parameter, but that could take forever! The integration takes at least 1.2s (bare minimum), and if I were to try 10 values for each parameter... More importantly however, this isn't smart! Is there a robust way to look for minimums in a non-analytic evaluation?










      share|cite|improve this question









      $endgroup$




      In summary I have a program that numerically integrates a function with multiple parameters, and would like to fit it against some data. Now, if I had the analytic form of the function I could of course find the minimum of my fit criteria (say Chi Square.) So, for the 3 parameters I care about, I could simply try a bunch of values for each parameter, but that could take forever! The integration takes at least 1.2s (bare minimum), and if I were to try 10 values for each parameter... More importantly however, this isn't smart! Is there a robust way to look for minimums in a non-analytic evaluation?







      algorithms






      share|cite|improve this question













      share|cite|improve this question











      share|cite|improve this question




      share|cite|improve this question










      asked Jun 22 '18 at 0:07









      Captain MorganCaptain Morgan

      37918




      37918






















          2 Answers
          2






          active

          oldest

          votes


















          2












          $begingroup$

          Any numerical analysis book will have a section on multidimensional minimization. There are a number of methods. The fact that you don't have a functional form is not important. These methods just call your routine to evaluate the function (and maybe the gradient, if you can) at various points. They have clever ways to choose the points to evaluate the function at. Sections 10.4 through 10.7 in Numerical Recipes has routines in C. Others will have other favorites.






          share|cite|improve this answer









          $endgroup$





















            1












            $begingroup$

            Ever heard of the Nelder and Mead Simplex Method for Function Minimization? Give it a try. Seems to me like the thing you are looking for. Here is a Python implementation. But you can find it also in C++, Fortran and other languages...if you care to Google around.






            share|cite|improve this answer











            $endgroup$













              Your Answer





              StackExchange.ifUsing("editor", function () {
              return StackExchange.using("mathjaxEditing", function () {
              StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
              StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
              });
              });
              }, "mathjax-editing");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "69"
              };
              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: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              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/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              noCode: true, onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2827917%2fnumerical-function-fitting%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$

              Any numerical analysis book will have a section on multidimensional minimization. There are a number of methods. The fact that you don't have a functional form is not important. These methods just call your routine to evaluate the function (and maybe the gradient, if you can) at various points. They have clever ways to choose the points to evaluate the function at. Sections 10.4 through 10.7 in Numerical Recipes has routines in C. Others will have other favorites.






              share|cite|improve this answer









              $endgroup$


















                2












                $begingroup$

                Any numerical analysis book will have a section on multidimensional minimization. There are a number of methods. The fact that you don't have a functional form is not important. These methods just call your routine to evaluate the function (and maybe the gradient, if you can) at various points. They have clever ways to choose the points to evaluate the function at. Sections 10.4 through 10.7 in Numerical Recipes has routines in C. Others will have other favorites.






                share|cite|improve this answer









                $endgroup$
















                  2












                  2








                  2





                  $begingroup$

                  Any numerical analysis book will have a section on multidimensional minimization. There are a number of methods. The fact that you don't have a functional form is not important. These methods just call your routine to evaluate the function (and maybe the gradient, if you can) at various points. They have clever ways to choose the points to evaluate the function at. Sections 10.4 through 10.7 in Numerical Recipes has routines in C. Others will have other favorites.






                  share|cite|improve this answer









                  $endgroup$



                  Any numerical analysis book will have a section on multidimensional minimization. There are a number of methods. The fact that you don't have a functional form is not important. These methods just call your routine to evaluate the function (and maybe the gradient, if you can) at various points. They have clever ways to choose the points to evaluate the function at. Sections 10.4 through 10.7 in Numerical Recipes has routines in C. Others will have other favorites.







                  share|cite|improve this answer












                  share|cite|improve this answer



                  share|cite|improve this answer










                  answered Jun 22 '18 at 2:18









                  Ross MillikanRoss Millikan

                  296k23198371




                  296k23198371























                      1












                      $begingroup$

                      Ever heard of the Nelder and Mead Simplex Method for Function Minimization? Give it a try. Seems to me like the thing you are looking for. Here is a Python implementation. But you can find it also in C++, Fortran and other languages...if you care to Google around.






                      share|cite|improve this answer











                      $endgroup$


















                        1












                        $begingroup$

                        Ever heard of the Nelder and Mead Simplex Method for Function Minimization? Give it a try. Seems to me like the thing you are looking for. Here is a Python implementation. But you can find it also in C++, Fortran and other languages...if you care to Google around.






                        share|cite|improve this answer











                        $endgroup$
















                          1












                          1








                          1





                          $begingroup$

                          Ever heard of the Nelder and Mead Simplex Method for Function Minimization? Give it a try. Seems to me like the thing you are looking for. Here is a Python implementation. But you can find it also in C++, Fortran and other languages...if you care to Google around.






                          share|cite|improve this answer











                          $endgroup$



                          Ever heard of the Nelder and Mead Simplex Method for Function Minimization? Give it a try. Seems to me like the thing you are looking for. Here is a Python implementation. But you can find it also in C++, Fortran and other languages...if you care to Google around.







                          share|cite|improve this answer














                          share|cite|improve this answer



                          share|cite|improve this answer








                          edited Dec 16 '18 at 2:03

























                          answered Dec 15 '18 at 16:38









                          agcalaagcala

                          1112




                          1112






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Mathematics 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%2fmath.stackexchange.com%2fquestions%2f2827917%2fnumerical-function-fitting%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

                              Wiesbaden

                              Marschland

                              Dieringhausen