Re: Finding the Local Minima of a somewhat complicated function
- To: mathgroup at smc.vnet.net
- Subject: [mg116059] Re: Finding the Local Minima of a somewhat complicated function
- From: Dana DeLouis <dana.del at gmail.com>
- Date: Mon, 31 Jan 2011 03:24:06 -0500 (EST)
Hi. Just a thought. I might suggest rationalizing the 0.695, and replacing your large value with a constant (say k)
After simplify, I get...
fun2 =
-(1/(200 k))(100 (5 a (2+k y)+4 (-832+y (166+k (-391+166 y))))+139 a (2 k y ArcTanh[1-2 y]+Log[k]-k Log[1-y]))
NMinimize[{fun2/.k->10000000000,0<y<1,0<a<300},{a,y}]
{-310.7,{a->300.,y->0.9458}}
> function is indeterminate at y=0 and at y=1.
Hmmm. Just for g-wizz....
Limit[fun2,y->0]//Expand
1664/k-(5 a)/k-(139 a Log[k])/(200 k)
> I see that for most (but not all) values of a, Mathematica does
> not find a local minimum. Why is this so?
A plot shows that the equation becomes more linear as the value of =91a gets smaller.
Let=92s look at the extreme...
Limit[fun2,{a->0}]//Expand
{1664/k+782 y-(332 y)/k-332 y^2}
As =91a gets smaller, this becomes a polynomial, and the graph is =93almost=94 a straight line on the interval 0<y<1. Hense, there is no minimum.
About =93Where=94 does it break down ?
Find a Minimum when the derivative is zero wrt y.
cp=D[fun2,y]/.k->10000000000 //FullSimplify
1954999999917/2500000000-(5 a)/2-664 y-139/100 a ArcTanh[1-2 y]
ContourPlot[cp==0,{a,0,300},{y,0,1},GridLines->Automatic]
<graph here>
We see that it breaks down numerically below about a< 150.
Side Note: We just note that between about 160-190, there are two solutions of y that return a derivative of zero.
= = = = = = = = = =
HTH : >)
Dana DeLouis
On Jan 28, 6:14 am, Andrew DeYoung <adeyo... at andrew.cmu.edu> wrote:
> Hi,
>
> I have a function that consists of two variables, y and a. I would
> like to find the local minimum of the function in y for various
> constant values of a.
>
> For example, the list of a values is given by:
>
> atable = Range[100, 300, 5];
>
> For each a value in atable, I want to find the local minimum of the
> function in y. My function is "fun," and I use code like the
> following:
>
> fun=(1000-5*a)/10000000000+332*(y/10000000000+(1-y)*(1/5000000000+y))
> +(1/2)*y*(1000-5*a+1000*(-1/10))+0.695*a*(-(Log[10000000000]/
> 10000000000)+(1-y)*Log[1-y]+y*Log[y]);
>
> startPoint = 10^(-20);
> endPoint = 1-10^(-20);
> minData = Table[FindMinimum[fun /. a -> j, {y, startPoint, =
endPoint}],
> {j, atable}]
>
> Above, I use startPoint=10^(-20) and endPoint=1-10^(-20) because =
the
> function is indeterminate at y=0 and at y=1. When I run the above
> code, I see that for most (but not all) values of a, Mathematica does
> not find a local minimum. Why is this so?
>
> Of course, it could be that the function does not have a local minimum
> at those values of a where Mathematica does not find one. But, if I
> plot fun at a=300, for example, the plot shows that there is a local
> minimum at something like y=0.945:
>
> Plot[fun /. a -> 300, {y, 0, 1}]
>
> But if I ask Mathematica to find that local minimum...
>
> FindMinimum[fun /. a -> 300, {y, startPoint, endPoint}]
>
> ...Mathematica will not find it.
>
> Can you please help me understand why I am having trouble finding the
> local minima?
>
> Many thanks in advance,
>
> Andrew DeYoung
> Carnegie Mellon University