Re: minmum of a function
- To: mathgroup at smc.vnet.net
- Subject: [mg75349] Re: minmum of a function
- From: Peter Pein <petsie at dordos.net>
- Date: Thu, 26 Apr 2007 03:30:06 -0400 (EDT)
- References: <f014ar$8qr$1@smc.vnet.net> <f0ejkm$pad$1@smc.vnet.net>
skruege at gwdg.de schrieb:
> Hi Jean-Marc,
>
> Thank for your help.
> I think (Head /@ t1)[[All,1]] is exactly what I need.
> Probably I could simplify my definitions of function even before.
> In fact, I defined
>
> amp := fmax/f5
>
> with fmax := FindMaximum[Sum[Integrate[f1[x], {x, i, i + a}], {i, 0, 2}],
> {p, 0}] whereas f1[x_] := c + (Cos[Pi*x + p])^2
> and
> f5 := Integrate[f4[x], {x, 0, 2 + a}] whereas f4[x_] := c + (Cos[Pi*x +
> pmax])^2 and pmax := p /. fmax[[2]].
>
> With (Head /@ t1)[[All,1]] I'm now able to create a list amp[a] and to
> plot it.
> Before your help, I managed to get the list by using 'Block' like f6 :=
> Block[{a = 0.1}, amp], but it isn't elegant at all.
>
> Regards,
> Sven
>
Hi Sven,
I think you should try to find an explicit expression for amp. Then each call
to amp will be faster.
If amp := fmax/f5 then am will be of the form
{number1/number3,{(p->number2)/number3}}, which does not make much sense to
me. amp:=fmax[[1]]/f5 would be more meaningful, if the handling of the
parameters was sufficient (sorry).
I tried the following and had to do some assumptions:
I'll assume 0<a<1 and pmax<0
In[1]:=
f1and4[x_, p_] := c + Cos[Pi*x + p]^2
In[2]:=
targetToMaximize = FullSimplify /@ Apart[Sum[Integrate[f1and4[x, p], {x, i, i
+ a}],
{i, 0, 2}], a]
Out[2]=
(3/2)*a*(1 + 2*c) + (3*Cos[2*p + a*Pi]*Sin[a*Pi])/(2*Pi)
In[3]:=
redu = Module[{t1 = Simplify[D[targetToMaximize, p]], t2},
t2 = Simplify[D[t1, p]];
Assuming[0 < a < 1, FullSimplify[
Reduce[t1 == 0 > t2], p, Reals]]]]
Out[3]=
(C[1] | C[2]) \[Element] Integers &&
((p + (a*Pi)/2 == Pi*C[1] && 0 < a - 2*C[2] < 1) ||
(-1 < a - 2*C[2] < 0 && p == ArcTan[Cot[(a*Pi)/2]] + Pi*C[1]))
In[4]:=
sol = Solve[FullSimplify[redu /. {C[1 | 2] -> 0}, 0 < a < 1], p]
Out[4]=
{{p -> -((a*Pi)/2)}}
In[5]:=
pmax = p /. sol[[1]]
Out[5]=
-((a*Pi)/2)
In[6]:=
fmax = targetToMaximize /. p -> pmax
Out[6]=
(3/2)*a*(1 + 2*c) + (3*Sin[a*Pi])/(2*Pi)
In[7]:=
f5[a_] = Integrate[f1and4[x, pmax], {x, 0, 2 + a}]
Out[7]=
((2 + a)*(1 + 2*c)*Pi + Sin[a*Pi])/(2*Pi)
In[8]:=
amp[a_] = FullSimplify[fmax/f5[a]]
Out[8]=
(3*(a*(1 + 2*c)*Pi + Sin[a*Pi]))/((2 + a)*(1 + 2*c)*Pi + Sin[a*Pi])
In[9]:=
Plot[amp[a] /. c -> 0.3, {a, 0, 1}]
hth,
Peter