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