I need to find the minimum of a function f(t) = int g(t,x) dx over [0,1]. 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. It needs a specific value to evaluate. Although Plot[f[t],{t,0,1}] works perferctly, FindMinimum stops at the initial point.
I cannot replace NIntegrate by Integrate, because the function g is a bit complicated and if you type Integrate, mathematica just keep running…
Any way to get around it? Thanks!
Try this:
Two relevant changes I made to your code:
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.Define f with
t_?NumericQinstead oft_. This says, t can be anything numeric (Pi, 7, 0, etc). But not anything non-numeric (t, x, “foo”, etc).