Re: NMaximize woes
- To: mathgroup at smc.vnet.net
- Subject: [mg52014] Re: NMaximize woes
- From: David Bailey <dave at Remove_Thisdbailey.co.uk>
- Date: Sun, 7 Nov 2004 01:03:35 -0500 (EST)
- References: <cm7d2r$liq$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Nix N. Nix wrote: > Hi! > > I'm sorry if this is a repost - I don't think my previous message got > posted, but it may have been. > > I have a function called FindQuality which takes two real values and > outputs a single real value. It is a complex collection of loops > (things are iterated until convergence) and includes an integral that > cannot be evaluated analytically. > > When I try running it through NMaximize, I get the following error: > > NIntegrate::inum: Integrand T1[Enr] T2[Enr,(0.y)/(x^2)] > Log[(1+e^((U-Enr)/(k_b*T)))/(1+e^((U-Enr-eV)/(k_B*T)))] > > Except for Enr, which is the variable being integrated over, x, and y, > all other variables are constants. > > NMaximize is called as follows: > NMaximize[{FindQuality[x,y],GStart <= x <= GEnd,CStart <= y <= CEnd},{x,y}] > > FindQuality is defined (partially) as follows: > FindQuality[LoopVar_, Imax_] := ( > > Print[LoopVar, " " , Imax]; > ... > > As you can see from the error message, the symbols "x" and "y" make it > all the way into the integrand. > > The Print statement also outputs "x y". > > Why does NMaximize pass symbols(?) into FindQuality rather than floating > point values ? I mean, no wonder the function doesn't work ! Or, am I > completely wrong ? Shouldn't the Print statement print out two floating > point values instead of two letters I passed into it anyway ? > > I would appreciate any help you can give me ! > > Thanks ! > As others have said, you may need to supply more information on this one, however, I notice 'variables' like k_b and k_B in the expression being printed out as part of the diagnostic. You can't use and underscore in a variable name because it denotes a pattern. I suggest you correct this and try again. David Bailey