Problem 9:

The integral I(alpha) = int((2+sin(10*alpha))*x^alpha*sin(alpha/(2-x)),x = 0 .. 2)  depends on the parameter alpha .  What is the value alpha*epsilon*[0, 5]  at which I(alpha)  achieves its maximum?

Solution:

This is rather different from Gaston's solution.  The numerical integration works in Maple 8, but not Maple 7.
We want to be able to evaluate
`I'`(alpha)  and `I''`(alpha)  so that we can use Newton's method to find the location of the maximum.  Write J(alpha) = int(x^alpha*sin(alpha/(2-x)),x = 0 .. 2)  so I(alpha) = (2+sin(10*alpha))*J(alpha) , `I'`(alpha) = 10*cos(10*alpha)*J(alpha)+(2+sin(10*alpha))*`J'`(alpha) , and `I''`(alpha) = -100*sin(10*alpha)*J(alpha)+20*cos(10*alpha)*`J'`(alpha)+(2+sin(10*alpha))*`J''`(alpha) .
  
We break the interval up into pieces.  

On the interval 0 .. 1/3  we use a series in powers of x .  On 1/3 .. 2  we use the transformation y = alpha/(2-x)  , obtaining an integral on 3*alpha/5 .. infinity .  On the interval 3*alpha/5 .. 2*Pi  we use Maple's own numerical integration, and on 2*Pi .. infinity  we expand the integrand in negative powers of y times sin(y).

>    restart: ti:= time():

First for the interval 0 .. 1/3 : J1 is the integral, dJ1 its derivative and d2J1 its second derivative.

>    f:= x^alpha*sin(alpha/(2-x));
S:= convert(series(sin(alpha/(2-x)),x,40),polynom):
intp:= proc(t) local c,xp,n;
  if has(t,x) then xp,c := selectremove(has,t,x);
    if xp = x then n:= 1 else n:= op(2,xp) fi;
  else n:= 0; c:= t
  fi;
  collect(expand(c),[cos,sin])*3^(-n-alpha-1)/(n+alpha+1);
end:
J1:= map(intp,S):  

f := x^alpha*sin(alpha/(2-x))

>    dJ1:= diff(J1,alpha):
d2J1:= diff(J1,alpha$2):

>    length(J1),length(dJ1),length(d2J1);

35210, 139039, 342479

How big is the last term in dJ1 for a typical alpha?

>    evalf(eval(select(has,dJ1,3^(-40-alpha)),alpha=0.8));

.1989447824e-31

 Next the transformation.

>    xy := expand(solve(alpha/(2-x)=y,x));
g:= subs(x=xy,f)*diff(xy,y);
g1:= eval(g,y=3*alpha/5);
ga:= normal(diff(g,alpha));
ga1:= normal(eval(ga,y=3*alpha/5));
gy:= normal(eval(diff(g,y),y=3*alpha/5));
gaa:= normal(diff(g,alpha$2));

xy := -1/y*alpha+2

g := (-1/y*alpha+2)^alpha*sin(y)/y^2*alpha

g1 := 25/9*(1/3)^alpha*sin(3/5*alpha)/alpha

ga := ((-alpha+2*y)/y)^alpha/y^2*sin(y)*(-ln((-alpha+2*y)/y)*alpha^2+2*alpha*ln((-alpha+2*y)/y)*y-alpha^2-alpha+2*y)/(-alpha+2*y)
ga := ((-alpha+2*y)/y)^alpha/y^2*sin(y)*(-ln((-alpha+2*y)/y)*alpha^2+2*alpha*ln((-alpha+2*y)/y)*y-alpha^2-alpha+2*y)/(-alpha+2*y)

ga1 := -25/9*(1/3)^alpha*sin(3/5*alpha)/alpha^2*(ln(3)*alpha+5*alpha-1)

gy := 25/27*(1/3)^alpha*(25*sin(3/5*alpha)*alpha+3*cos(3/5*alpha)*alpha-10*sin(3/5*alpha))/alpha^2

gaa := ((-alpha+2*y)/y)^alpha/y^2*sin(y)*(ln((-alpha+2*y)/y)^2*alpha^3-4*ln((-alpha+2*y)/y)^2*alpha^2*y+2*ln((-alpha+2*y)/y)*alpha^3+4*alpha*ln((-alpha+2*y)/y)^2*y^2-4*alpha^2*ln((-alpha+2*y)/y)*y+alph...
gaa := ((-alpha+2*y)/y)^alpha/y^2*sin(y)*(ln((-alpha+2*y)/y)^2*alpha^3-4*ln((-alpha+2*y)/y)^2*alpha^2*y+2*ln((-alpha+2*y)/y)*alpha^3+4*alpha*ln((-alpha+2*y)/y)^2*y^2-4*alpha^2*ln((-alpha+2*y)/y)*y+alph...
gaa := ((-alpha+2*y)/y)^alpha/y^2*sin(y)*(ln((-alpha+2*y)/y)^2*alpha^3-4*ln((-alpha+2*y)/y)^2*alpha^2*y+2*ln((-alpha+2*y)/y)*alpha^3+4*alpha*ln((-alpha+2*y)/y)^2*y^2-4*alpha^2*ln((-alpha+2*y)/y)*y+alph...
gaa := ((-alpha+2*y)/y)^alpha/y^2*sin(y)*(ln((-alpha+2*y)/y)^2*alpha^3-4*ln((-alpha+2*y)/y)^2*alpha^2*y+2*ln((-alpha+2*y)/y)*alpha^3+4*alpha*ln((-alpha+2*y)/y)^2*y^2-4*alpha^2*ln((-alpha+2*y)/y)*y+alph...

So we want int(g,y = 3*alpha/5 .. infinity) .   J2(alpha)  is the integral from 3*alpha/5  to 2*Pi , dJ2(alpha)  and d2J2(alpha)  its derivatives.  Maple sometimes seems to have trouble evaluating d2J2(alpha)  to high precision, but we don't need as much accuracy there, so the relative error tolerance epsilon  can be increased in this case.

>    dH:=diff(int(h(a,y),y=3*a/5 .. 2*Pi),a);
d2H:=diff(int(h(a,y),y=3*a/5 .. 2*Pi),a$2);

dH := int(diff(h(a,y),a),y = 3/5*a .. 2*Pi)-3/5*h(a,3/5*a)

d2H := int(diff(h(a,y),`$`(a,2)),y = 3/5*a .. 2*Pi)-3/5*diff(h(a,3/5*a),a)-3/5*D[1](h)(a,3/5*a)-9/25*D[2](h)(a,3/5*a)
d2H := int(diff(h(a,y),`$`(a,2)),y = 3/5*a .. 2*Pi)-3/5*diff(h(a,3/5*a),a)-3/5*D[1](h)(a,3/5*a)-9/25*D[2](h)(a,3/5*a)

>    J2:= a -> evalf(Int(subs(alpha=a,g),y=3*a/5 .. 2*Pi));

J2 := proc (a) options operator, arrow; evalf(Int(subs(alpha = a,g),y = 3/5*a .. 2*Pi)) end proc

>    dJ2:= a -> evalf(Int(subs(alpha=a,ga),y=3*a/5 .. 2*Pi) - 3/5*subs(alpha=a,g1));
d2J2:= a -> evalf(Int(subs(alpha=a,gaa),y=3*a/5 .. 2*Pi,epsilon=10^(-Digits/2)) - subs(alpha=a,6/5*ga1+9/25*gy));

dJ2 := proc (a) options operator, arrow; evalf(Int(subs(alpha = a,ga),y = 3/5*a .. 2*Pi)-3/5*subs(alpha = a,g1)) end proc

d2J2 := proc (a) options operator, arrow; evalf(Int(subs(alpha = a,gaa),y = 3/5*a .. 2*Pi,epsilon = 10^(-1/2*Digits))-subs(alpha = a,6/5*ga1+9/25*gy)) end proc
d2J2 := proc (a) options operator, arrow; evalf(Int(subs(alpha = a,gaa),y = 3/5*a .. 2*Pi,epsilon = 10^(-1/2*Digits))-subs(alpha = a,6/5*ga1+9/25*gy)) end proc

>    J2(0.8),dJ2(0.8),d2J2(0.8);

.9479853062, -.473268468e-1, -1.867707819

 For the interval 2*Pi .. infinity , we will use a series for (2-alpha/y)^alpha  in negative powers of y , relying on Maple to integrate int(y^(-n)*sin(y),y = 2*Pi .. infinity) .  We have g = sum(2^(2+alpha-n)*(-alpha)^n*pochhammer(alpha-n+3,n-3)/(n-2)!/(y^n),n = 2 .. infinity)  where pochhammer(t,m) = t*(t+1)*`...`*(t+m-1) .

>    J3:=add(2^(2+alpha-n)*(-alpha)^n*pochhammer(alpha-n+3,n-3)/(n-2)!*int(sin(y)/y^n,y=2*Pi..infinity),n = 2 .. 30):

>    dJ3:= diff(J3,alpha): d2J3:= diff(J3,alpha$2):

>    evalf(eval([J3,dJ3,d2J3],alpha=0.8));

[.2996502688e-1, .5460972990e-1, .4797002434e-1]

>    t30:= add(2^(2+alpha-n)*(-alpha)^n*pochhammer(alpha-n+3,n-3)/(n-2)!*int(sin(y)/y^n,y=2*Pi..infinity),n = 30..30); evalf(eval([t30,diff(t30,alpha),diff(t30,alpha$2)],alpha=0.8));

t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...
t40 := 1/682787435320509937650020271153533998386052839391450114904805806912519264010240000000000000000*2^(-38+alpha)*alpha^40*pochhammer(-37+alpha,37)*(3204623491323167701791035845312500-1260*Pi^30-986...

[-.8199343340e-52, -.3427432072e-50, -.1359950069e-48]

>    Jp:= a -> evalf(eval(J1+J3,alpha=a))+J2(a):
Ip:= a -> evalf(2+sin(10*a))*Jp(a):
 Jp(0.8);

1.011316729

Here it is plotted (with low precision), J(alpha)  in red and I(alpha)  in green.  The maximum is near y = .78 .

>    plot([Jp,Ip],0..5);

[Maple Plot]

Here is a Newton iteration procedure.  It takes an initial alpha  value, prints the values of I(alpha) , `I'`(alpha)  and `I''`(alpha) , and returns the new alpha for the next iteration: alpha-`I'`(alpha)/`I''`(alpha) .

>    Newt:= proc(a)
 local J,dJ,d2J,Ia,dI,d2I;
 J:= evalf(eval(J1+J3,alpha=a)+J2(a));
 dJ:= evalf(eval(dJ1+dJ3,alpha=a)+dJ2(a));
 d2J:= evalf(eval(d2J1+d2J3,alpha=a)+d2J2(a));
 Ia:= (2+sin(10*a))*J;
 dI:=10*cos(10*a)*J+(2+sin(10*a))*dJ;
 d2I:= -100*sin(10*a)*J+20*cos(10*a)*dJ+(2+sin(10*a))*d2J;
 print([Ia,dI,d2I]);
 a-dI/d2I;
 end;

>   

Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...
Newt := proc (a) local J, dJ, d2J, Ia, dI, d2I; J := evalf(eval(J1+J3,alpha = a)+J2(a)); dJ := evalf(eval(dJ1+dJ3,alpha = a)+dJ2(a)); d2J := evalf(eval(d2J1+d2J3,alpha = a)+d2J2(a)); Ia := (2+sin(10*a)...

>    a1:=Newt(0.8);

[3.023188004, -1.496404074, -105.5874509]

a1 := .7858278227

>    Digits:= 36: for i from 2 to 5 do a||i:= Newt(a||(i-1)) od;
(time()-ti)*seconds;

[3.03373198811697874303260565369710092, .113058083733051509637375176936349642e-1, -106.808426558699779305985520179700236]
[3.03373198811697874303260565369710092, .113058083733051509637375176936349642e-1, -106.808426558699779305985520179700236]
[3.03373198811697874303260565369710092, .113058083733051509637375176936349642e-1, -106.808426558699779305985520179700236]

a2 := .785933673977259399606915415769757737

[3.03373258648549362510338687782707197, .398512227462085428435216138263e-7, -106.807652599725646153189933279631786]
[3.03373258648549362510338687782707197, .398512227462085428435216138263e-7, -106.807652599725646153189933279631786]
[3.03373258648549362510338687782707197, .398512227462085428435216138263e-7, -106.807652599725646153189933279631786]

a3 := .785933674350371454560091191969610542

[3.03373258648549363253787268351282550, .5503578696849385298e-18, -106.807652596775551611685463080769510]
[3.03373258648549363253787268351282550, .5503578696849385298e-18, -106.807652596775551611685463080769510]

a4 := .785933674350371454565243986327545466

[3.03373258648549363253787268351282552, .381e-34, -106.807652596775551611644721340214701]
[3.03373258648549363253787268351282552, .381e-34, -106.807652596775551611644721340214701]

a5 := .785933674350371454565243986327545466

2751.435*seconds

This has 33 correct digits.

>