1
$\begingroup$

I need to find the minimum of a function $f(t) = \int_0^1\!g(t,x)\,dx$. What I did in mathematica is as follows:

f[t_] = NIntegrate[g[t,x],{x,-1,1}] FindMinimum[f[t],{t,t0}] 

However mathematica halts at the first try, because NIntegrate does not work with the symbolic t. Although Plot[f[t],{t,0,1}] works perferctly, FindMinimum stops at the initial point.

Any way to get around it? Thanks!

  • 0
    thank you guys!. next time i will ask on SO instead.2010-08-13

1 Answers 1

1

OP's equivalent question on Stack Overflow was already answered. This is the accepted answer by Andrew Moylan.


Try this:

In[58]:= g[t_, x_] := t^3 - t + x^2  In[59]:= f[t_?NumericQ] := NIntegrate[g[t, x], {x, -1, 1}]  In[60]:= FindMinimum[f[t], {t, 1}]  Out[60]= {-0.103134, {t -> 0.57735}}  In[61]:= Plot[f[t], {t, 0, 1}] 

Two relevant changes I made to your code:

  1. Define f with := instead of with =. This effectively gives a definition for f "later", when the user of f has supplied the values of the arguments. See SetDelayed.

  2. Define f with t_?NumericQ instead of t_. This says, t can be anything numeric (Pi, 7, 0, etc). But not anything non-numeric (t, x, "foo", etc).