Problem 5:

Let f(z) = 1/GAMMA(z) , where GAMMA(z)  is the gamma function, and let p(z)  be the cubic polynomial that best approximates f(z)  on the unit disk in the supremum norm abs(abs(`.`))[infinity] .  What is abs(abs(f-p))[infinity] ?

Solution:

Since the functions are analytic, the supremum will occur on the unit circle.  So write f(z) and p(z) as functions of t where z = exp(I*t).

>    restart;
F:= t -> 1/GAMMA(exp(I*t));
F(Pi):= 0;

F := proc (t) options operator, arrow; 1/GAMMA(exp(t*I)) end proc

F(Pi) := 0

>    P:= (a,t) ->
a[0] + a[1]*exp(I*t)+
a[2]*exp(2*I*t)+a[3]*exp(3*I*t);

P := proc (a, t) options operator, arrow; a[0]+a[1]*exp(t*I)+a[2]*exp(2*I*t)+a[3]*exp(3*I*t) end proc

Note that f(z)  has the symmetry f(conjugate(z)) = conjugate(f(z)) .  It is easy to show that the best approximation must have that symmetry too, which means we can assume the coefficients a[0]  to a[3]  are real.  And then abs(F(t)-P(a,t)) = abs(F(-t)-P(a,-t)) , so it suffices to take t  in the interval [0, Pi] .  

It's convenient to have the conjugates of these functions available.

>    Fbar:= t -> 1/GAMMA(exp(-I*t));Fbar(Pi):= 0;

Fbar := proc (t) options operator, arrow; 1/GAMMA(exp(-I*t)) end proc

Fbar(Pi) := 0

>    Pbar:= (a,t) -> P(a,-t);

Pbar := proc (a, t) options operator, arrow; P(a,-t) end proc

We have to minimize with respect to a  the maximum with respect to t  of   abs(F(t)-P(a,t))^2  (this is a quadratic polynomial in a[0] ,..., a[3] , so it's a bit simpler to deal with than abs(F(t)-P(a,t)) ).  I can change this from a min-max question to a constrained minimization by writing it as

minimize v  (with respect to a  and v ) subject to abs(F(t)-P(a,t))^2-v <= 0  for each t   epsilon   [0, Pi] .

Now write the Karush-Kuhn-Tucker conditions:

The Lagrangian is H(v,a,lambda) = v+sum((abs(F(t)-P(a,t))^2-v)*lambda[t],t)

Formally the sum is over all t*epsilon*[0, Pi] .  In general this might run into technical problems, but they won't occur here: lambda[t]  will be nonzero for only finitely many t .  The Karush-Kuhn-Tucker conditions say

diff(H(v,a,lambda),v) = `` 1-sum(lambda[t],t) = 0  

diff(H(v,a,lambda),a[j]) = `` sum(2*Re((P(a,-t)-F(-t))*exp(j*I*t))*lambda[t],t) = 0  for j = 0, 1, 2, 3

diff(H(v,a,lambda),lambda[t]) = ``   abs(F(t)-P(a,t))^2-v <= 0 , 0 <= lambda[t] , and lambda[t]*(abs(F(t)-P(a,t))^2-v) = 0  for t*epsilon*[0, Pi]

Note that this last condition implies lambda[t] <> 0  for only finitely many t , since abs(F(t)-P(a,t))^2 = v  for only finitely many t .

Also, since the objective is linear and the constraints are convex, we don't have to worry about local minima.  The Karush-Kuhn-Tucker conditions should have a unique solution, which will give us the global minimum.

Finding the solution is not so easy, however.  I spent some time exploring the parameter space, looking for approximate solutions.
For a starting point, we can use a Taylor polynomial for f(z), corresponding to a partial sum of the Fourier series for F(t).  This will give us the best approximation in the L^2 norm on the circle.

>    ptayl:= taylor(1/GAMMA(z),z=0,4);

ptayl := series(1*z+gamma*z^2+(-1/12*Pi^2+1/2*gamma^2)*z^3+O(z^4),z,4)

>    a0:= table([seq(j=evalf(coeff(ptayl,z,j)),j=0..3)]);

a0 := TABLE([0 = 0., 1 = 1., 2 = .5772156649, 3 = -.6558780717])

>    plot(abs(P(a0,t)-F(t))^2,t=0..Pi);

[Maple Plot]

Here's a fast way to approximate the maximum of abs(F(t)-P(a,t)) .  Instead of all t, I'll just look at 90 of them.
It's more convenient to use the list
[a[0], a[1], a[2], a[3]]  rather than the table a  (whose indices start at 0).

>    eits:= evalf([seq(exp(I*i*Pi/90),i=0..90)]):
fvals:= evalf([seq(F(i*Pi/90),i=0..90)]):
appnorm:= proc(L) local i;
  max(seq(
abs(fvals[i]-L[1]-eits[i]*(L[2]+eits[i]*(L[3]+eits[i]*L[4]))),i=1..91)) end:

 Now we generate random steps from the current L, accepting the step if it improves the norm.

>    ti:= time():
bestL:= [a0[0],a0[1],a0[2],a0[3]]:
bestnorm:= appnorm(bestL);
for iter from 1 to 5000 do
  L:= bestL + .01*exp(-.001*iter)*[stats[random,normald](4)];
  newnorm:= appnorm(L);
  if newnorm < bestnorm then
    bestL:= L; bestnorm:= newnorm;
    print ("iteration",iter,bestnorm,L);
  else
    L:= 2*bestL-L;
    newnorm:= appnorm(L);
    if newnorm < bestnorm then
      bestL:= L; bestnorm:= newnorm;
      print ("iteration",iter,bestnorm,L);
    fi
  fi
od:
(time()-ti)*seconds;   
  

bestnorm := .2354677585



























1409.498*seconds

The last solution turns out to have 4 correct digits of the actual answer.

>    a1:= table([seq(j=bestL[j+1],j=0..3)]);

a1 := TABLE([0 = .4962591167e-2, 1 = 1.018460994, 2 = .6238640979, 3 = -.6039944321])
a1 := TABLE([0 = .4962591167e-2, 1 = 1.018460994, 2 = .6238640979, 3 = -.6039944321])
a1 := TABLE([0 = .4962591167e-2, 1 = 1.018460994, 2 = .6238640979, 3 = -.6039944321])

In our approximate solution, abs(F(t)-P(a,t))  is close to constant from about t = 1.1  to Pi .

>    plot(abs(F(t)-P(a1,t)),t=0..Pi);

[Maple Plot]

On closer inspection, it achieves its maximum at three points in this interval, one of which is Pi .

>    plot(abs(F(t)-P(a1,t)),t=1..Pi,0.21 .. 0.21437 );

[Maple Plot]

>    peak1:= fsolve(diff((F(t)-P(a1,t))*(Fbar(t)-Pbar(a1,t)),t), t= 1.4 .. 1.5); peak1:= simplify(%,zero);

peak1 := 1.456250258+0.*I

peak1 := 1.456250258

>    peak2:= simplify(fsolve(diff((F(t)-P(a1,t))*(Fbar(t)-Pbar(a1,t)),t), t= 2.2 .. 2.3),zero); v1:= evalf(abs(F(Pi)-P(a1,Pi))^2);

peak2 := 2.271144006

v1 := .4595026405e-1

So we should expect lambda[t] <> 0  for three values of t , say t[1] , t[2]  and t[3] = Pi .  We write the KKT equations with this assumption; note that in order to have abs(F(t)-P(a,t))^2 <= v  for all t  and `` = v  for t = t[i]  we need diff(abs(F(t)-P(a,t))^2,t) = 0   at t = t[i] .  This is automatic at t = Pi .

>    t[3]:= Pi:
kkt:= [ 1 - (lambda[1]+lambda[2]+lambda[3]),
seq(
add(((Pbar(a,t[i])-Fbar(t[i]))*exp(j*I*t[i])+(P(a,t[i])-F(t[i]))*exp(-j*I*t[i]))*lambda[i],i=1..3),j=0..3),
seq(
(F(t[i])-P(a,t[i]))*(Fbar(t[i])-Pbar(a,t[i])) - v, i=1..3),
seq(eval(diff((F(t)-P(a,t))*(Fbar(t)-Pbar(a,t)),t), t=t[i]),i=1..2)];  
       

kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...
kkt := [1-lambda[1]-lambda[2]-lambda[3], (2*a[0]+a[1]*exp(-I*t[1])+a[2]*exp(-2*I*t[1])+a[3]*exp(-3*I*t[1])-1/GAMMA(exp(-I*t[1]))+a[1]*exp(t[1]*I)+a[2]*exp(2*I*t[1])+a[3]*exp(3*I*t[1])-1/GAMMA(exp(t[1]*...

Here's what we have for these equations at our approximate solution.

>    evalf(eval(kkt,{a=a1,t[1]=peak1, t[2]=peak2, v = v1}));

[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], (-.3026165877+0.*I)*lambda[1]+(-.126261980+0.*I)*lambda[2]+.428720254*lambda[3], (-.3362716506+0.*I)*lambda[1]+(.3946429640+0.*I)*lambda[2]-.428720254*lambda...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], (-.3026165877+0.*I)*lambda[1]+(-.126261980+0.*I)*lambda[2]+.428720254*lambda[3], (-.3362716506+0.*I)*lambda[1]+(.3946429640+0.*I)*lambda[2]-.428720254*lambda...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], (-.3026165877+0.*I)*lambda[1]+(-.126261980+0.*I)*lambda[2]+.428720254*lambda[3], (-.3362716506+0.*I)*lambda[1]+(.3946429640+0.*I)*lambda[2]-.428720254*lambda...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], (-.3026165877+0.*I)*lambda[1]+(-.126261980+0.*I)*lambda[2]+.428720254*lambda[3], (-.3362716506+0.*I)*lambda[1]+(.3946429640+0.*I)*lambda[2]-.428720254*lambda...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], (-.3026165877+0.*I)*lambda[1]+(-.126261980+0.*I)*lambda[2]+.428720254*lambda[3], (-.3362716506+0.*I)*lambda[1]+(.3946429640+0.*I)*lambda[2]-.428720254*lambda...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], (-.3026165877+0.*I)*lambda[1]+(-.126261980+0.*I)*lambda[2]+.428720254*lambda[3], (-.3362716506+0.*I)*lambda[1]+(.3946429640+0.*I)*lambda[2]-.428720254*lambda...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], (-.3026165877+0.*I)*lambda[1]+(-.126261980+0.*I)*lambda[2]+.428720254*lambda[3], (-.3362716506+0.*I)*lambda[1]+(.3946429640+0.*I)*lambda[2]-.428720254*lambda...

>    simplify(fnormal(%),zero);

[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...

We need values for the Lagrange multipliers lambda[1], lambda[2], lambda[3] , from an overdetermined system with
5 equations involving these.

>    remove(type,%,constant);

[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...
[1.-1.*lambda[1]-1.*lambda[2]-1.*lambda[3], -.3026165877*lambda[1]-.126261980*lambda[2]+.428720254*lambda[3], -.3362716506*lambda[1]+.3946429640*lambda[2]-.428720254*lambda[3], .2257477508*lambda[1]-.3...

>    lambdas:=linalg[leastsqrs](convert(%,set),{lambda[1],lambda[2],lambda[3]});
subs(lambdas,%%);

lambdas := {lambda[1] = .2123144878, lambda[2] = .4869663050, lambda[3] = .3005533063}

[.1659009e-3, .31180741e-2, -.80708071e-2, -.94427642e-2, .13591496e-2]

Now using this approximate solution as a starting point, we solve the KKT equations using fsolve.

>    approxsol:= lambdas union {seq(a[i]=a1[i],i=0..3),t[1]=peak1, t[2]=peak2, v = v1};

approxsol := {lambda[1] = .2123144878, lambda[2] = .4869663050, lambda[3] = .3005533063, t[2] = 2.271144006, v = .4595026405e-1, t[1] = 1.456250258, a[0] = .4962591167e-2, a[1] = 1.018460994, a[2] = .6...
approxsol := {lambda[1] = .2123144878, lambda[2] = .4869663050, lambda[3] = .3005533063, t[2] = 2.271144006, v = .4595026405e-1, t[1] = 1.456250258, a[0] = .4962591167e-2, a[1] = 1.018460994, a[2] = .6...
approxsol := {lambda[1] = .2123144878, lambda[2] = .4869663050, lambda[3] = .3005533063, t[2] = 2.271144006, v = .4595026405e-1, t[1] = 1.456250258, a[0] = .4962591167e-2, a[1] = 1.018460994, a[2] = .6...

>    Digits:= 30:
fsolve(convert(kkt,set), approxsol);

{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .48561462698559099019845794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...
{lambda[1] = .211370889985791215421426077972-.179750174942185154944046590271e-46*I, lambda[2] = .485614626985590990198455122240+.115736507436212117484974928028e-46*I, lambda[3] = .303014483028617794380...

>    sol:=simplify(fnormal(%),zero);

sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...
sol := {a[2] = .625211916433402308861975345313, t[2] = 2.26237744961289709382818566697, t[1] = 1.40319917081601296435139597916, v = .459395927869473663317263757946e-1, lambda[1] = .21137088998579121542...

And the answer is:

>    ans:= subs(sol,sqrt(v));

ans := .214335234590459639461526400185

This is actually correct to 30 digits.