using FindMinimum to minimize a function involving NIntegrate
- To: mathgroup at smc.vnet.net
- Subject: [mg15483] using FindMinimum to minimize a function involving NIntegrate
- From: "Albert Maydeu-Olivares" <amaydeu at nil.fut.es>
- Date: Mon, 18 Jan 1999 04:22:25 -0500
- Organization: University of Barcelona
- Sender: owner-wri-mathgroup at wolfram.com
Hi, everyone I can't get FindMinimum to work when the function to be minimized involves numerical integrals. Any suggestions would be most welcome. I enclose a typical example: I'm trying to minimize e .e where e = {data1-definite integral of a univariate normal distribution, data2- definite integral of a univariate normal distribution, data3- definite integral of a bivariatye normal distribution} using Newton's method. Below is the code. The gradient is correct. In[1]:= dens[x_]=1/(E^(x^2/2)*Sqrt[2*Pi]); p[h_]:=Module[{x},NIntegrate[dens[x],{x,h,Infinity}]] dens2[h_,k_,x_]= 1/(2*E^((h^2 + k^2 - 2*h*k*x)/(2*(1 - x^2)))*Pi*Sqrt[1 - x^2]); pp[h_,k_,r_]:= Module[{x}, NIntegrate[dens2[h,k,x],{x,0,r},PrecisionGoal->10]+p[h] p[k]] In[3]:= nvars=2;ncorr=1; prop={.828,.628,.567}; t={t1,t2}; r={l1 *l2}; gradient={{-dens[t1],0,0,0}, {0,-dens[t2],0,0}, {dens[t1]*(-1 + Erf[(-(l1*l2*t1) + t2)/Sqrt[2 - 2*l1^2*l2^2]])/2, dens[t2]* (-1 + Erf[(t1 - l1*l2*t2)/Sqrt[2 - 2*l1^2*l2^2]])/2, dens2[t1,t2,l1*l2]*l2, dens2[t1,t2,l1*l2]*l1}}; In[4]:= e := prop-{p[t[[1]]],p[t[[2]]],pp[t[[2]],t[[1]],r[[1]]]} ; FindMinimum[e . e, {t1,-.95},{t2,-.4},{l1,.5},{l2,.6}, Gradient->gradient, Method->Newton] Out[4]= "Could not symbolically find the gradient of (e . e) Try giving two starting values for each variable." I believe the error message given by FindMinimum is misleading. Trying to figure out what's going on, I specify the problem using Integrate and then numerically evaluating the integrals inside FindMinimum. It did not work either. It just sit there. In[11]:= p2[h_]:=Integrate[dens[x],{x,h,Infinity}] pp2[h_,k_,r_]:=Integrate[dens2[h,k,x],{x,0,r}]+p[h] p[k] e2 := prop-{p2[t[[1]]],p2[t[[2]]],pp2[t[[2]],t[[1]],r[[1]]]} ; FindMinimum[N[e2 . e2], {t1,-.95},{t2,-.4},{l1,.5},{l2,.6}, -- Albert Maydeu-Olivares Tel. +34 3 4021079 ext. 3099 Faculty of Psychology Fax. +34 3 4021362 University of Barcelona E-Mail: amaydeu at tinet.fut.es Passeig de la Vall d'Hebron, 171. 08035 - Barcelona (Spain)
- Follow-Ups:
- Re: using FindMinimum to minimize a function involving NIntegrate
- From: jtischer@col2.telecom.com.co (Cl-Jurgen Tischer)
- Re: using FindMinimum to minimize a function involving NIntegrate