Steepest descent

Consider $f \in C^1$. The steepest descent consists to iteratively compute $$ x_{k+1} = x_k - \alpha^* \nabla f(x^k) $$ where $\alpha^* \in \arg\min_{\alpha \geq 0} f(x_k - \alpha \nabla f(x_k))$.

In [20]:
using Optim
using Plots
plotly()
#pyplot()
Out[20]:
Plots.PlotlyBackend()

We need the LinearAlgebra library to access some methods as det, that computes a matrix determinant.

In [21]:
using LinearAlgebra

Example 1

Consider the bivariate function $$ f(x, y) = 4x^2 - 4xy + 2y^2 $$

In [22]:
f1(x) = 4x[1]*(x[1]-x[2])+2*x[2]*x[2]

default(size=(600,600), fc=:heat)
x, y = -2.5:0.1:2.5, 0.5:0.1:2.5
z = Surface((x,y)->f1([x,y]), x, y)
surface(x,y,z)
Out[22]:
Plots.jl

Its gradient is $$ \nabla f(x, y) = \begin{pmatrix} 8x - 4y \\ 4y - 4x \end{pmatrix} $$ The Hessian is $$ \nabla f^2(x,y) = \begin{pmatrix} 8 & -4 \\ -4 & 4 \end{pmatrix} $$

In [8]:
A = [8 -4; -4 4 ]
Out[8]:
2×2 Array{Int64,2}:
  8  -4
 -4   4

The principal minors determinants are

In [9]:
8
det( A )
Out[9]:
16.0

Therefore, the matrix is positive definite. We can confirm this by computing the eigenvalues:

In [10]:
eigvals(A)
Out[10]:
2-element Array{Float64,1}:
  1.5278640450004206
 10.47213595499958  

We compute the gradient as

In [11]:
function f1grad(x)
    return [8*x[1]-4*x[2], 4*x[2]-4*x[1]]
end
Out[11]:
f1grad (generic function with 1 method)

Consider $x_0 = (2, 3)$. Therefore $\nabla f(x_0) = (4, 4)$.

We have to minimize the univariate function $$ m(\alpha) = f((2, 3) - \alpha(4, 4)) = f(2 - 4\alpha, 3 - 4\alpha) $$ The derivative of $m(\alpha)$ is \begin{align*} m'(\alpha) &= \nabla_{(x,y)} f(2 - 4\alpha, 3 - 4\alpha)^T \nabla_{\alpha} \begin{pmatrix} 2 - 4\alpha \\ 3 - 4\alpha \end{pmatrix} \\ &= \begin{pmatrix} 8(2-4\alpha) - 4(3-4\alpha) & 4(3-4\alpha) - 4(2-4\alpha)\end{pmatrix}\begin{pmatrix} -4 \\ -4 \end{pmatrix} \\ &= -\begin{pmatrix} 4 - 16\alpha & 4\end{pmatrix}\begin{pmatrix} 4 \\ 4 \end{pmatrix} \\ &= -16+64\alpha-16\\ &= 64\alpha-32 \end{align*}

The second derivate of $m(\alpha)$ is $$ m''(\alpha) = 64 $$ Therefore the unidimensionel model is strictly convex. The minimizer can be found by setting $m'(\alpha^*) = 0$, leading to $\alpha^* = \frac{1}{2}$. Therefore $$ x_1 = x_0 - \frac{1}{2}\nabla f(x_0) = (2, 3) - \frac{1}{2}(4, 4) = (0, 1), $$ and $$ \nabla f(x_1) = \begin{pmatrix} -4 \\ 4 \end{pmatrix} $$ The univariate function to minimize is now $$ m(\alpha) = f((0, 1) - \alpha(-4, 4)) = f(4\alpha, 1 - 4\alpha) $$ and its derivative is \begin{align*} m'(\alpha) &= \nabla_{(x,y)} f(4\alpha, 1 - 4\alpha)^T \nabla_{\alpha} \begin{pmatrix} 4\alpha \\ 1 - 4\alpha \end{pmatrix} \\ &= ( 8 \times 4\alpha - 4(1-4\alpha), 4(1-4\alpha) - 4\times(4\alpha))\begin{pmatrix} 4 \\ -4 \end{pmatrix} \\ &= ( -4 + 48\alpha, 4 - 32 \alpha)\begin{pmatrix} 4 \\ -4 \end{pmatrix} \\ &= -32+320\alpha \end{align*} The root of $m'(\alpha)$ is $\alpha^* = \frac{1}{10}$, and $m''(\alpha) = 320$, thus $\alpha^*$ is a global minimizer. We obtain $$ x_2 = \begin{pmatrix} 0 \\ 1 \end{pmatrix} - \frac{1}{10}\begin{pmatrix} -4 \\ 4 \end{pmatrix} = \begin{pmatrix} \frac{4}{10} \\ \frac{6}{10} \end{pmatrix} = \begin{pmatrix} \frac{2}{5} \\ \frac{3}{5} \end{pmatrix} $$ We could continue, but such a hand computation is tedious. We will automatize the procedure by constructing a Julia function.

In [12]:
function steepestdescent(f::Function, fprime::Function, x0, h::Float64, verbose::Bool = true,
                         record::Bool = false, tol::Float64 = 1e-7, maxiter::Int64 = 1000)

    function fsearch(α::Float64)
        return(f(x-α*grad))
    end

    x = x0
    k = 0

    grad = fprime(x)

    if (verbose || record)
        fx = f(x)
    end
    if (verbose)
        println("$k. x = $x, f($x) = $fx")
    end
    if (record)
        iterates = [ fx x' ]
    end
    
    while ((k < maxiter) && (norm(grad) > tol))
        α = Optim.minimizer(optimize(fsearch, 0, h, GoldenSection()))
        x = x-α*grad
        k += 1
        grad = fprime(x)       
        if (verbose || record)
            fx = f(x)
        end
        if (verbose)
            println("$k. x = $x, f($x) = $fx")
        end
        if (record)
            iterates = [ iterates; fx x' ]
        end
    end

    if (k == maxiter)
        println("WARNING: maximum number of iterations reached")
    end

    if (record)
        return x, iterates
    else
        return x
    end
end
Out[12]:
steepestdescent (generic function with 5 methods)

The following variant proposes to enlarge the interval where the unidimensional search is done when the upper bound is reached.

This is only valid for convex functions!

But the idea will be adapted and generalized when discussing about trust regions.

In [13]:
function steepestdescent_convex(f::Function, fprime::Function, x0, h::Float64, verbose::Bool = true,
        record::Bool = false, tol::Float64 = 1e-7, maxiter::Int64 = 1000)

    function fsearch(α::Float64)
        return(f(x-α*grad))
    end

    x = x0
    k = 0

    grad = fprime(x)

    if (verbose || record)
        fx = f(x)
    end
    if (verbose)
        println("$k. x = $x, f($x) = $fx")
    end
    if (record)
        iterates = [ fx x' ]
    end

    Δ = 1e-6
    
    while ((k < maxiter) && (norm(grad) > tol))
        α = Optim.minimizer(optimize(fsearch, 0, h, GoldenSection()))
        while ((h-α) <= Δ)
            h *= 2
            α = Optim.minimizer(optimize(fsearch, α, h, GoldenSection()))
        end
        h = α
        x = x-α*grad
        k += 1
        grad = fprime(x)       
        if (verbose || record)
            fx = f(x)
        end
        if (verbose)
            println("$k. x = $x, f($x) = $fx")
        end
        if (record)
            iterates = [ iterates; fx x' ]
        end
    end

    if (k == maxiter)
        println("WARNING: maximum number of iterations reached")
    end

    if (record)
        return x, iterates
    else
        return x
    end
end
Out[13]:
steepestdescent_convex (generic function with 5 methods)

Executing this function on the problem, we obtain

In [14]:
sol, iter = steepestdescent(f1, f1grad, [2.0,3.0], 2.0, true, true)
0. x = [2.0, 3.0], f([2.0, 3.0]) = 10.0
1. x = [3.3384826014781765e-9, 1.0000000033384826], f([3.3384826014781765e-9, 1.0000000033384826]) = 2.0
2. x = [0.4000000056568157, 0.5999999996847565], f([0.4000000056568157, 0.5999999996847565]) = 0.4000000042732578
3. x = [1.2686234840408872e-8, 0.20000004191604126], f([1.2686234840408872e-8, 0.20000004191604126]) = 0.08000002338384717
4. x = [0.08000002003440877, 0.12000002949337335], f([0.08000002003440877, 0.12000002949337335]) = 0.01600000792444612
5. x = [1.2797865406311004e-9, 0.04000001297171028], f([1.2797865406311004e-9, 0.04000001297171028]) = 0.003200001870708075
6. x = [0.016000005590790508, 0.024000008148791697], f([0.016000005590790508, 0.024000008148791697]) = 0.0006400004396667061
7. x = [4.5701057174718507e-10, 0.008000003964587964], f([4.5701057174718507e-10, 0.008000003964587964]) = 0.00012800011224250156
8. x = [0.0032000017064671205, 0.004800002532327185], f([0.0032000017064671205, 0.004800002532327185]) = 2.560002712829075e-5
9. x = [4.110368252360774e-11, 0.0016000009764577262], f([4.110368252360774e-11, 0.0016000009764577262]) = 5.120005986267632e-6
10. x = [0.0006400004046497921, 0.0009600005964701434], f([0.0006400004046497921, 0.0009600005964701434]) = 1.0240012814339186e-6
11. x = [1.6262869089594956e-11, 0.00032000025010139714], f([1.6262869089594956e-11, 0.00032000025010139714]) = 2.048002993134258e-7
12. x = [0.00012800010446232586, 0.0001920001553967927], f([0.00012800010446232586, 0.0001920001553967927]) = 4.0960066523961365e-8
13. x = [1.2406358492617064e-12, 6.40000573618869e-5], f([1.2406358492617064e-12, 6.40000573618869e-5]) = 8.192014367046571e-9
14. x = [2.5600023426720605e-5, 3.84000346795478e-5], f([2.5600023426720605e-5, 3.84000346795478e-5]) = 1.6384029750422933e-9
15. x = [1.0173143286161621e-12, 1.2800014112273815e-5], f([1.0173143286161621e-12, 1.2800014112273815e-5]) = 3.276806704622707e-10
16. x = [5.120005960429759e-6, 7.680008762232643e-6], f([5.120005960429759e-6, 7.680008762232643e-6]) = 6.553615076014975e-11
17. x = [4.0998192135725505e-13, 2.5600039254326795e-6], f([4.0998192135725505e-13, 2.5600039254326795e-6]) = 1.3107235998240816e-11
18. x = [1.0240016826511797e-6, 1.5360024887706478e-6], f([1.0240016826511797e-6, 1.5360024887706478e-6]) = 2.621448543078865e-12
19. x = [6.50489277175567e-14, 5.12001011992864e-7], f([6.50489277175567e-14, 5.12001011992864e-7]) = 5.242899393429833e-13
20. x = [2.048004222892293e-7, 3.072006287329907e-7], f([2.048004222892293e-7, 3.072006287329907e-7]) = 1.048580304991432e-13
21. x = [6.105355806159245e-15, 1.0240023135252877e-7], f([6.105355806159245e-15, 1.0240023135252877e-7]) = 2.0971612261343592e-14
22. x = [4.096009413622503e-8, 6.14401408795172e-8], f([4.096009413622503e-8, 6.14401408795172e-8]) = 4.194323252511695e-15
23. x = [5.772500948176087e-16, 2.048004861982361e-8], f([5.772500948176087e-16, 2.048004861982361e-8]) = 8.388647356522391e-16
24. x = [8.192019638207948e-9, 1.2288029327965716e-8], f([8.192019638207948e-9, 1.2288029327965716e-8]) = 1.677729622627484e-16
Out[14]:
([8.192019638207948e-9, 1.2288029327965716e-8], [10.0 2.0 3.0; 2.0 3.3384826014781765e-9 1.0000000033384826; … ; 8.388647356522391e-16 5.772500948176087e-16 2.048004861982361e-8; 1.677729622627484e-16 8.192019638207948e-9 1.2288029327965716e-8])
In [15]:
sol, iter = steepestdescent(f1, f1grad, [10.0,10.0], 2.0, true, true)
0. x = [10.0, 10.0], f([10.0, 10.0]) = 200.0
1. x = [5.000000000465118, 10.0], f([5.000000000465118, 10.0]) = 100.0
2. x = [4.999999999534882, 4.9999999754264985], f([4.999999999534882, 4.9999999754264985]) = 49.999999990697646
3. x = [2.499999987945808, 4.99999998748069], f([2.499999987945808, 4.99999998748069]) = 24.9999998748069
4. x = [2.499999999534882, 2.4999999754264985], f([2.499999999534882, 2.4999999754264985]) = 12.49999999534882
5. x = [1.2499999878295287, 2.49999998748069], f([1.2499999878295287, 2.49999998748069]) = 6.24999993740345
6. x = [1.2499999996511608, 1.2500000252711772], f([1.2499999996511608, 1.2500000252711772]) = 3.1249999982558054
7. x = [0.6249999960013161, 1.2500000124611685], f([0.6249999960013161, 1.2500000124611685]) = 1.562500031152922
8. x = [0.6250000164598511, 0.6250000365727931], f([0.6250000164598511, 0.6250000365727931]) = 0.7812500411496293
9. x = [0.3125000099692602, 0.6250000265163219], f([0.3125000099692602, 0.6250000265163219]) = 0.39062503314540314
10. x = [0.3125000165470615, 0.3125000193296728], f([0.3125000165470615, 0.3125000193296728]) = 0.19531252068382743
11. x = [0.15625000808538766, 0.3125000179383671], f([0.15625000808538766, 0.3125000179383671]) = 0.09765626121147977
12. x = [0.1562500098529794, 0.15625001276559403], f([0.1562500098529794, 0.15625001276559403]) = 0.04882813115811234
13. x = [0.07812500430351281, 0.15625001130928667], f([0.07812500430351281, 0.15625001130928667]) = 0.02441406603415222
14. x = [0.07812500700577368, 0.07812500937494776], f([0.07812500700577368, 0.07812500937494776]) = 0.012207033439304385
15. x = [0.039062503647831766, 0.0781250081903607], f([0.039062503647831766, 0.0781250081903607]) = 0.006103516904743926
16. x = [0.03906250454252888, 0.039062505661911356], f([0.03906250454252888, 0.039062505661911356]) = 0.0030517585222701814
17. x = [0.019531252311134607, 0.039062505102220105], f([0.019531252311134607, 0.039062505102220105]) = 0.001525879304860972
18. x = [0.019531252791085474, 0.019531253318174426], f([0.019531252791085474, 0.019531253318174426]) = 0.0007629396711785688
19. x = [0.00976562639917667, 0.01953125305462994], f([0.00976562639917667, 0.01953125305462994]) = 0.00038146984588399154
20. x = [0.009765626655453257, 0.009765626902696594], f([0.009765626655453257, 0.009765626902696594]) = 0.00019073492794739847
21. x = [0.004882813321393021, 0.009765626779074922], f([0.004882813321393021, 0.009765626779074922]) = 9.536746638818527e-5
22. x = [0.004882813457681894, 0.00488281357315299], f([0.004882813457681894, 0.00488281357315299]) = 4.768373452503885e-5
23. x = [0.0024414067215988555, 0.00488281351541744], f([0.0024414067215988555, 0.00488281351541744]) = 2.3841867826343228e-5
24. x = [0.002441406793818581, 0.0024414068474788433], f([0.002441406793818581, 0.0024414068474788433]) = 1.1920934265807051e-5
25. x = [0.001220703391250601, 0.0024414068206487114], f([0.001220703391250601, 0.0024414068206487114]) = 5.96046726391005e-6
26. x = [0.001220703429398108, 0.0012207034704917847], f([0.001220703429398108, 0.0012207034704917847]) = 2.980233725088607e-6
27. x = [0.0006103517190014818, 0.0012207034499449457], f([0.0006103517190014818, 0.0012207034499449457]) = 1.4901169127074928e-6
28. x = [0.0006103517309434633, 0.0006103517504714804], f([0.0006103517309434633, 0.0006103517504714804]) = 7.450584709313643e-7
29. x = [0.00030517586711353465, 0.0006103517407074716], f([0.00030517586711353465, 0.0006103517407074716]) = 3.7252924738464066e-7
30. x = [0.0003051758735939367, 0.00030517587625456487], f([0.0003051758735939367, 0.00030517587625456487]) = 1.8626462764764486e-7
31. x = [0.00015258793658485165, 0.00030517587492425076], f([0.00015258793658485165, 0.00030517587492425076]) = 9.313231463578194e-8
32. x = [0.00015258793833939906, 0.0001525879411553668], f([0.00015258793833939906, 0.0001525879411553668]) = 4.656615785333651e-8
33. x = [7.629396854713192e-5, 0.0001525879397473829], f([7.629396854713192e-5, 0.0001525879397473829]) = 2.328307935635096e-8
34. x = [7.629397120025079e-5, 7.629397349970635e-5], f([7.629397120025079e-5, 7.629397349970635e-5]) = 1.1641540083009406e-8
35. x = [3.814698573457742e-5, 7.629397234997854e-5], f([3.814698573457742e-5, 7.629397234997854e-5]) = 5.820770216939291e-9
36. x = [3.814698661540107e-5, 3.814698770145251e-5], f([3.814698661540107e-5, 3.814698770145251e-5]) = 2.910385175671179e-9
37. x = [1.907349334308836e-5, 3.8146987158426776e-5], f([1.907349334308836e-5, 3.8146987158426776e-5]) = 1.4551926292651776e-9
38. x = [1.907349381533839e-5, 1.9073494326525932e-5], f([1.907349381533839e-5, 1.9073494326525932e-5]) = 7.275963326475042e-10
39. x = [9.536746909444012e-6, 1.9073494070932155e-5], f([9.536746909444012e-6, 1.9073494070932155e-5]) = 3.637981760738842e-10
40. x = [9.536747161488129e-6, 9.536747401162812e-6], f([9.536747161488129e-6, 9.536747401162812e-6]) = 1.8189909284430388e-10
41. x = [4.7683735736719255e-6, 9.536747281325468e-6], f([4.7683735736719255e-6, 9.536747281325468e-6]) = 9.094954870786873e-11
42. x = [4.7683737076535354e-6, 4.768373819531331e-6], f([4.7683737076535354e-6, 4.768373819531331e-6]) = 4.5474775631683075e-11
43. x = [2.3841868463109237e-6, 4.7683737635924315e-6], f([2.3841868463109237e-6, 4.7683737635924315e-6]) = 2.2737388349316652e-11
44. x = [2.384186917281503e-6, 2.3841870010788953e-6], f([2.384186917281503e-6, 2.3841870010788953e-6]) = 1.1368694513072568e-11
45. x = [1.1920934688120761e-6, 2.384186959180198e-6], f([1.1920934688120761e-6, 2.384186959180198e-6]) = 5.68434745632492e-12
46. x = [1.1920934903681212e-6, 1.1920935045192326e-6], f([1.1920934903681212e-6, 1.1920935045192326e-6]) = 2.8421737795561007e-12
47. x = [5.960467363959298e-7, 1.1920934974436767e-6], f([5.960467363959298e-7, 1.1920934974436767e-6]) = 1.4210869066474978e-12
48. x = [5.960467610477448e-7, 5.960467879667743e-7], f([5.960467610477448e-7, 5.960467879667743e-7]) = 7.105434827110162e-13
49. x = [2.9802337809197755e-7, 5.960467745072589e-7], f([2.9802337809197755e-7, 5.960467745072589e-7]) = 3.5527175740050737e-13
50. x = [2.980233964152791e-7, 2.9802341429660983e-7], f([2.980233964152791e-7, 2.9802341429660983e-7]) = 1.776358896217978e-13
51. x = [1.4901169674295845e-7, 2.980234053559438e-7], f([1.4901169674295845e-7, 2.980234053559438e-7]) = 8.881795013995334e-14
52. x = [1.4901170861298351e-7, 1.490117200548806e-7], f([1.4901170861298351e-7, 1.490117200548806e-7]) = 4.440897860752167e-14
53. x = [7.450585482476679e-8, 1.4901171433393165e-7], f([7.450585482476679e-8, 1.4901171433393165e-7]) = 2.2204491008737274e-14
54. x = [7.45058595091643e-8, 7.450586387592613e-8], f([7.45058595091643e-8, 7.450586387592613e-8]) = 1.1102246202398695e-14
55. x = [3.725292933662608e-8, 7.450586169254506e-8], f([3.725292933662608e-8, 7.450586169254506e-8]) = 5.551123426548662e-15
56. x = [3.7252932355918514e-8, 3.7252935164607425e-8], f([3.7252932355918514e-8, 3.7252935164607425e-8]) = 2.7755619382292965e-15
57. x = [1.862646628163515e-8, 3.725293376026287e-8], f([1.862646628163515e-8, 3.725293376026287e-8]) = 1.3877810737465348e-15
Out[15]:
([1.862646628163515e-8, 3.725293376026287e-8], [200.0 10.0 10.0; 100.0 5.000000000465118 10.0; … ; 2.7755619382292965e-15 3.7252932355918514e-8 3.7252935164607425e-8; 1.3877810737465348e-15 1.862646628163515e-8 3.725293376026287e-8])
In [16]:
sol, iter = steepestdescent(f1, f1grad, [100.0,100.0], 2.0, true, true)
0. x = [100.0, 100.0], f([100.0, 100.0]) = 20000.0
1. x = [50.00000000465118, 100.0], f([50.00000000465118, 100.0]) = 10000.0
2. x = [49.99999999534882, 49.99999975426499], f([49.99999999534882, 49.99999975426499]) = 4999.999999069764
3. x = [24.999999879458084, 49.9999998748069], f([24.999999879458084, 49.9999998748069]) = 2499.9999874806904
4. x = [24.99999999534882, 24.99999975426499], f([24.99999999534882, 24.99999975426499]) = 1249.9999995348821
5. x = [12.49999987829529, 24.999999874806903], f([12.49999987829529, 24.999999874806903]) = 624.9999937403452
6. x = [12.49999999651161, 12.500000252711775], f([12.49999999651161, 12.500000252711775]) = 312.49999982558063
7. x = [6.249999960013162, 12.50000012461169], f([6.249999960013162, 12.50000012461169]) = 156.2500031152923
8. x = [6.250000164598514, 6.250000365727932], f([6.250000164598514, 6.250000365727932]) = 78.125004114963
9. x = [3.1250000996926026, 6.25000026516322], f([3.1250000996926026, 6.25000026516322]) = 39.06250331454032
10. x = [3.125000165470614, 3.1250002608189593], f([3.125000165470614, 3.1250002608189593]) = 19.531252068382752
11. x = [1.5625000888237965, 3.1250002131447854], f([1.5625000888237965, 3.1250002131447854]) = 9.765626332154953
12. x = [1.5625001243209877, 1.562500135625861], f([1.5625001243209877, 1.562500135625861]) = 4.882813277006204
13. x = [0.7812500599156866, 1.5625001299734242], f([0.7812500599156866, 1.5625001299734242]) = 2.4414066561669676
14. x = [0.7812500700577374, 0.7812500728839603], f([0.7812500700577374, 0.7812500728839603]) = 1.220703343930439
15. x = [0.39062503249335817, 0.7812500714708488], f([0.39062503249335817, 0.7812500714708488]) = 0.6103516741732063
16. x = [0.39062503897749046, 0.3906250441938745], f([0.39062503897749046, 0.3906250441938745]) = 0.30517584215233196
17. x = [0.19531252012262626, 0.39062504158568245], f([0.19531252012262626, 0.39062504158568245]) = 0.15258792311381614
18. x = [0.1953125214630562, 0.1953125191445551], f([0.1953125214630562, 0.1953125191445551]) = 0.07629396208051357
19. x = [0.0976562611933118, 0.19531252030380564], f([0.0976562611933118, 0.19531252030380564]) = 0.03814698058742449
20. x = [0.09765625911049375, 0.09765625729011158], f([0.09765625911049375, 0.09765625729011158]) = 0.019073489886911793
21. x = [0.04882812945557291, 0.09765625820030265], f([0.04882812945557291, 0.09765625820030265]) = 0.009536744765684177
22. x = [0.048828128744729714, 0.048828128156020244], f([0.048828128744729714, 0.048828128156020244]) = 0.0047683723134238016
23. x = [0.02441406448326867, 0.04882812845037497], f([0.02441406448326867, 0.04882812845037497]) = 0.0023841861279663176
24. x = [0.024414063967106287, 0.024414063833492348], f([0.024414063967106287, 0.024414063833492348]) = 0.001192093038779915
25. x = [0.012207031917881715, 0.024414063900299317], f([0.012207031917881715, 0.024414063900299317]) = 0.0005960465161278985
26. x = [0.012207031982417602, 0.01220703201976412], f([0.012207031982417602, 0.01220703201976412]) = 0.00029802325963953244
27. x = [0.006103516010449831, 0.012207032001090861], f([0.006103516010449831, 0.012207032001090861]) = 0.0001490116302756564
28. x = [0.0061035159906410305, 0.006103515979885108], f([0.0061035159906410305, 0.006103515979885108]) = 7.450581489602152e-5
29. x = [0.0030517579902264395, 0.006103515985263069], f([0.0030517579902264395, 0.006103515985263069]) = 3.7252907382361815e-5
30. x = [0.00305175799503663, 0.003051757974944078], f([0.00305175799503663, 0.003051757974944078]) = 1.862645372053998e-5
31. x = [0.0015258789876139817, 0.003051757984990354], f([0.0015258789876139817, 0.003051757984990354]) = 9.313226798952386e-6
32. x = [0.0015258789973763723, 0.001525878979972801], f([0.0015258789973763723, 0.001525878979972801]) = 4.656613429268647e-6
33. x = [0.00076293950265073, 0.0015258789886745865], f([0.00076293950265073, 0.0015258789886745865]) = 2.328306688078579e-6
34. x = [0.0007629394860238558, 0.0007629394721569798], f([0.0007629394860238558, 0.0007629394721569798]) = 1.164153318668691e-6
35. x = [0.00038146974241065455, 0.0007629394790904176], f([0.00038146974241065455, 0.0007629394790904176]) = 5.820766487547578e-7
36. x = [0.00038146973667976293, 0.0003814697322578999], f([0.00038146973667976293, 0.0003814697322578999]) = 2.9103832000505534e-7
37. x = [0.00019073486929503222, 0.00038146973446883135], f([0.00019073486929503222, 0.00038146973446883135]) = 1.455191583157207e-7
38. x = [0.00019073486517379897, 0.00019073486167159494], f([0.00019073486517379897, 0.00019073486167159494]) = 7.275957758573457e-8
39. x = [9.536743241883858e-5, 0.0001907348634226969], f([9.536743241883858e-5, 0.0001907348634226969]) = 3.637978812487484e-8
40. x = [9.536743100385829e-5, 9.536742988065e-5], f([9.536743100385829e-5, 9.536742988065e-5]) = 1.8189893792551346e-8
41. x = [4.768371573184554e-5, 9.536743044225413e-5], f([4.768371573184554e-5, 9.536743044225413e-5]) = 9.09494678915818e-9
42. x = [4.768371471040854e-5, 4.768371343244386e-5], f([4.768371471040854e-5, 4.768371343244386e-5]) = 4.547473297167267e-9
43. x = [2.38418571119822e-5, 4.768371407142619e-5], f([2.38418571119822e-5, 4.768371407142619e-5]) = 2.2737365876455284e-9
44. x = [2.3841856959443993e-5, 2.3841856992588765e-5], f([2.3841856959443993e-5, 2.3841856992588765e-5]) = 1.1368682865491758e-9
45. x = [1.192092849740331e-5, 2.384185697601638e-5], f([1.192092849740331e-5, 2.384185697601638e-5]) = 5.684341440648209e-10
46. x = [1.192092847861307e-5, 1.1920928437706593e-5], f([1.192092847861307e-5, 1.1920928437706593e-5]) = 2.8421707158441623e-10
47. x = [5.96046421940776e-6, 1.1920928458159831e-5], f([5.96046421940776e-6, 1.1920928458159831e-5]) = 1.4210853530456493e-10
48. x = [5.960464238752071e-6, 5.960464269155023e-6], f([5.960464238752071e-6, 5.960464269155023e-6]) = 7.105426788288461e-11
49. x = [2.9802321348547432e-6, 5.960464253953547e-6], f([2.9802321348547432e-6, 5.960464253953547e-6]) = 3.552713412265802e-11
50. x = [2.980232119098804e-6, 2.980232119930564e-6], f([2.980232119098804e-6, 2.980232119930564e-6]) = 1.7763566967416295e-11
51. x = [1.4901160601038979e-6, 2.980232119514684e-6], f([1.4901160601038979e-6, 2.980232119514684e-6]) = 8.881783486186985e-12
52. x = [1.490116059410786e-6, 1.4901160526418082e-6], f([1.490116059410786e-6, 1.4901160526418082e-6]) = 4.4408917410278585e-12
53. x = [7.450580263902121e-7, 1.4901160560262971e-6], f([7.450580263902121e-7, 1.4901160560262971e-6]) = 2.220445860427367e-12
54. x = [7.450580296360851e-7, 7.450580226591672e-7], f([7.450580296360851e-7, 7.450580226591672e-7]) = 1.110222935050411e-12
55. x = [3.725290175133376e-7, 7.45058026147626e-7], f([3.725290175133376e-7, 7.45058026147626e-7]) = 5.551114623269968e-13
56. x = [3.7252900863428804e-7, 3.7252899954926263e-7], f([3.7252900863428804e-7, 3.7252899954926263e-7]) = 2.775557245480911e-13
57. x = [1.862645028665083e-7, 3.725290040917753e-7], f([1.862645028665083e-7, 3.725290040917753e-7]) = 1.3877785888960991e-13
58. x = [1.8626450122526693e-7, 1.8626449790910904e-7], f([1.8626450122526693e-7, 1.8626449790910904e-7]) = 6.938892883339495e-14
59. x = [9.313225050049298e-8, 1.8626449956718794e-7], f([9.313225050049298e-8, 1.8626449956718794e-7]) = 3.4694463799014965e-14
60. x = [9.313224906669492e-8, 9.313224802179339e-8], f([9.313224906669492e-8, 9.313224802179339e-8]) = 1.7347231632441794e-14
61. x = [4.656612478386591e-8, 9.313224854424415e-8], f([4.656612478386591e-8, 9.313224854424415e-8]) = 8.673615718906866e-15
62. x = [4.656612376037819e-8, 4.656612253835665e-8], f([4.656612376037819e-8, 4.656612253835665e-8]) = 4.3368077641337195e-15
63. x = [2.3283061655662933e-8, 4.656612314936741e-8], f([2.3283061655662933e-8, 4.656612314936741e-8]) = 2.1684038251620514e-15
Out[16]:
([2.3283061655662933e-8, 4.656612314936741e-8], [20000.0 100.0 100.0; 10000.0 50.00000000465118 100.0; … ; 4.3368077641337195e-15 4.656612376037819e-8 4.656612253835665e-8; 2.1684038251620514e-15 2.3283061655662933e-8 4.656612314936741e-8])

We converge to the solution $(0,0)$, but the method was quite slow close to the solution.

In [17]:
sol, iter = steepestdescent(f1, f1grad, [2.0,3.0], 0.1, true, true)
0. x = [2.0, 3.0], f([2.0, 3.0]) = 10.0
1. x = [1.6000000074048677, 2.6000000074048675], f([1.6000000074048677, 2.6000000074048675]) = 7.120000047391152
2. x = [1.3600000088858413, 2.2000000148097354], f([1.3600000088858413, 2.2000000148097354]) = 5.110400068243261
3. x = [1.1520000115515936, 1.8640000186602665], f([1.1520000115515936, 1.8640000186602665]) = 3.6680960734752444
4. x = [0.9760000130325671, 1.579200021089063], f([0.9760000130325671, 1.579200021089063]) = 2.632852550317856
5. x = [0.8268800138026734, 1.337920022333081], f([0.8268800138026734, 1.337920022333081]) = 1.8897848950901366
6. x = [0.7005440140325205, 1.1335040227051016], f([0.7005440140325205, 1.1335040227051016]) = 1.3564325694131156
7. x = [0.593510413869969, 0.9603200224420807], f([0.593510413869969, 0.9603200224420807]) = 0.9736078006258554
8. x = [0.5028300934295156, 0.8135961817294126], f([0.5028300934295156, 0.8135961817294126]) = 0.6988273289911094
9. x = [0.4260044927998767, 0.6892897487106355], f([0.4260044927998767, 0.6892897487106355]) = 0.5015979077313479
10. x = [0.360916799249144, 0.5839756482959244], f([0.360916799249144, 0.5839756482959244]) = 0.3600323722366426
11. x = [0.30577362018901844, 0.4947521103289335], f([0.30577362018901844, 0.4947521103289335]) = 0.2584207530781202
12. x = [0.25905556903422955, 0.4191607156723282], f([0.25905556903422955, 0.4191607156723282]) = 0.1854868916553111
13. x = [0.21947540080849198, 0.35511865820264615], f([0.21947540080849198, 0.35511865820264615]) = 0.13313708967308996
14. x = [0.18594254406352279, 0.30086135624940485], f([0.18594254406352279, 0.30086135624940485]) = 0.09556192617405829
15. x = [0.15753305183838784, 0.25489383222601064], f([0.15753305183838784, 0.25489383222601064]) = 0.06859156795840621
16. x = [0.13346414370364953, 0.21594952079190521], f([0.13346414370364953, 0.21594952079190521]) = 0.0492330301758803
17. x = [0.11307263743498301, 0.18295537056739625], f([0.11307263743498301, 0.18295537056739625]) = 0.03533803545311841
18. x = [0.09579667603377062, 0.15500227783190335], f([0.09579667603377062, 0.15500227783190335]) = 0.02536461284679652
19. x = [0.08116024661046753, 0.1313200375510599], f([0.08116024661046753, 0.1313200375510599]) = 0.018205980514151676
20. x = [0.06876006457207173, 0.11125612154624956], f([0.06876006457207173, 0.11125612154624956]) = 0.013067722676616083
21. x = [0.05825446172739567, 0.09425769907125611], f([0.05825446172739567, 0.09425769907125611]) = 0.009379630820773909
22. x = [0.04935397213874895, 0.07985640440031114], f([0.04935397213874895, 0.07985640440031114]) = 0.006732425879487195
23. x = [0.0418133563274674, 0.06765543172155274], f([0.0418133563274674, 0.06765543172155274]) = 0.004832339256082697
24. x = [0.035424844072379794, 0.05731860175527575], f([0.035424844072379794, 0.05731860175527575]) = 0.003468512406059575
25. x = [0.030012409616782164, 0.048561098844237746], f([0.030012409616782164, 0.048561098844237746]) = 0.002489597206124491
26. x = [0.02542692154593886, 0.041141623290606104], f([0.02542692154593886, 0.041141623290606104]) = 0.001786960380454355
27. x = [0.021542033697347918, 0.03485574270910449], f([0.021542033697347918, 0.03485574270910449]) = 0.0012826281269348026
28. x = [0.018250703884041035, 0.029530259202988116], f([0.018250703884041035, 0.029530259202988116]) = 0.0009206331209122758
29. x = [0.015462244509623885, 0.0250184371589329], f([0.015462244509623885, 0.0250184371589329]) = 0.0006608036464522032
30. x = [0.013099823809231468, 0.021195960169971634], f([0.013099823809231468, 0.021195960169971634]) = 0.00047430561560921335
31. x = [0.011098348866886591, 0.017957505685626388], f([0.011098348866886591, 0.017957505685626388]) = 0.00034044275967037504
32. x = [0.009402672079018529, 0.015213843008921618], f([0.009402672079018529, 0.015213843008921618]) = 0.0002443598996042107
33. x = [0.007966071645966943, 0.012889374679991334], f([0.007966071645966943, 0.012889374679991334]) = 0.00017539442046702453
34. x = [0.006748964223721221, 0.010920053502837986], f([0.006748964223721221, 0.010920053502837986]) = 0.00012589300773486358
35. x = [0.005717814264968261, 0.009251617822077644], f([0.005717814264968261, 0.009251617822077644]) = 9.036233509782691e-5
36. x = [0.00484420999799702, 0.007838096425401238], f([0.00484420999799702, 0.007838096425401238]) = 6.485945288977895e-5
37. x = [0.0041040805834613005, 0.006640541876608883], f([0.0041040805834613005, 0.006640541876608883]) = 4.655422665435992e-5
38. x = [0.0034770328789438267, 0.00562595737813201], f([0.0034770328789438267, 0.00562595737813201]) = 3.341526828893516e-5
39. x = [0.002945789536876036, 0.004766387594369238], f([0.002945789536876036, 0.004766387594369238]) = 2.3984506565032704e-5
40. x = [0.0024957129534547966, 0.004038148384853245], f([0.0024957129534547966, 0.004038148384853245]) = 1.7215380412150762e-5
41. x = [0.0021144019516911514, 0.003421174223715396], f([0.0021144019516911514, 0.003421174223715396]) = 1.235669876849351e-5
42. x = [0.0017913500858047797, 0.002898465324582174], f([0.0017913500858047797, 0.002898465324582174]) = 8.869278563691836e-6
43. x = [0.001517656152060494, 0.002455619237269258], f([0.001517656152060494, 0.002455619237269258]) = 6.366109890202818e-6
44. x = [0.0012857789296123524, 0.0020804340101312447], f([0.0012857789296123524, 0.0020804340101312447]) = 4.569408305659147e-6
45. x = [0.0010893293936116754, 0.0017625719838080035], f([0.0010893293936116754, 0.0017625719838080035]) = 3.279788226081283e-6
46. x = [0.0009228946753266042, 0.0014932749527147445], f([0.0009228946753266042, 0.0014932749527147445]) = 2.3541364851591403e-6
47. x = [0.0007818889187615411, 0.0012651228459830788], f([0.0007818889187615411, 0.0012651228459830788]) = 1.6897306194000845e-6
48. x = [0.0006624269243570404, 0.001071829278672747], f([0.0006624269243570404, 0.001071829278672747]) = 1.2128394356647428e-6
49. x = [0.0005612170982141204, 0.0009080683399780346], f([0.0005612170982141204, 0.0009080683399780346]) = 8.705408304820937e-7
50. x = [0.0004754707572213887, 0.0007693278458408564], f([0.0004754707572213887, 0.0007693278458408564]) = 6.24848859009181e-7
51. x = [0.00040282529112544547, 0.0006517850125690422], f([0.00040282529112544547, 0.0006517850125690422]) = 4.484983161431463e-7
52. x = [0.00034127906439206015, 0.0005522011258351173], f([0.00034127906439206015, 0.0005522011258351173]) = 3.219190315914174e-7
53. x = [0.0002891362641777353, 0.0004678323028197444], f([0.0002891362641777353, 0.0004678323028197444]) = 2.3106410697800706e-7
54. x = [0.00024496017478124006, 0.00039635388868616123], f([0.00024496017478124006, 0.00039635388868616123]) = 1.6585108767756158e-7
55. x = [0.00020753359112355975, 0.00033579640424524315], f([0.00020753359112355975, 0.00033579640424524315]) = 1.190430813490575e-7
56. x = [0.00017582528050979882, 0.00028449127994633895], f([0.00017582528050979882, 0.00028449127994633895]) = 8.544565739978315e-8
57. x = [0.00014896156857780094, 0.00024102488097638023], f([0.00014896156857780094, 0.00024102488097638023]) = 6.13304048059146e-8
58. x = [0.00012620226652743633, 0.00020419955669866515], f([0.00012620226652743633, 0.00020419955669866515]) = 4.40211787014339e-8
59. x = [0.0001069202763419048, 0.00017300064120773324], f([0.0001069202763419048, 0.00017300064120773324]) = 3.1597120227660606e-8
60. x = [9.05843120538884e-5, 0.00014656849575071822], f([9.05843120538884e-5, 0.00014656849575071822]) = 2.2679492828953233e-8
61. x = [7.674426096727434e-5, 0.00012417482268654175], f([7.674426096727434e-5, 0.00012417482268654175]) = 1.6278679552836683e-8
62. x = [6.501878148513563e-5, 0.00010520259835005182], f([6.501878148513563e-5, 0.00010520259835005182]) = 1.1684362167289879e-8
63. x = [5.508479582094748e-5, 8.91290719016412e-5], f([5.508479582094748e-5, 8.91290719016412e-5]) = 8.386694928987934e-9
64. x = [4.666858808064824e-5, 7.551136172145707e-5], f([4.666858808064824e-5, 7.551136172145707e-5]) = 6.0197254094723194e-9
65. x = [3.9538262436710275e-5, 6.397425247871046e-5], f([3.9538262436710275e-5, 6.397425247871046e-5]) = 4.320783611693814e-9
66. x = [3.3497353590656566e-5, 5.419985664285566e-5], f([3.3497353590656566e-5, 5.419985664285566e-5]) = 3.10133266040757e-9
67. x = [2.8379413470017753e-5, 4.5918855575275317e-5], f([2.8379413470017753e-5, 4.5918855575275317e-5]) = 2.2260462765318142e-9
68. x = [2.404342500438223e-5, 3.890307886304954e-5], f([2.404342500438223e-5, 3.890307886304954e-5]) = 1.5977911974815178e-9
69. x = [2.0369916614100872e-5, 3.2959217429616386e-5], f([2.0369916614100872e-5, 3.2959217429616386e-5]) = 1.1468479957779246e-9
70. x = [1.725767035228116e-5, 2.7923497196632285e-5], f([1.725767035228116e-5, 2.7923497196632285e-5]) = 8.231740965233705e-10
71. x = [1.4620932997920874e-5, 2.365716653787087e-5], f([1.4620932997920874e-5, 2.365716653787087e-5]) = 5.908503966364175e-10
72. x = [1.2387053256086483e-5, 2.0042673188802983e-5], f([1.2387053256086483e-5, 2.0042673188802983e-5]) = 4.240952098466578e-10
73. x = [1.0494479961774128e-5, 1.6980425272405236e-5], f([1.0494479961774128e-5, 1.6980425272405236e-5]) = 3.0440319248115275e-10
74. x = [8.891066130999589e-6, 1.4386047196180358e-5], f([8.891066130999589e-6, 1.4386047196180358e-5]) = 2.184917477050064e-10
75. x = [7.532632129819622e-6, 1.2188054810797657e-5], f([7.532632129819622e-6, 1.2188054810797657e-5]) = 1.568270142835112e-10
76. x = [6.381748371588343e-6, 1.0325885772879232e-5], f([6.381748371588343e-6, 1.0325885772879232e-5]) = 1.1256586423706423e-10
77. x = [5.406704001519548e-6, 8.748230841568691e-6], f([5.406704001519548e-6, 8.748230841568691e-6]) = 8.079649956563261e-11
78. x = [4.5806331522237495e-6, 7.411620130292598e-6], f([4.5806331522237495e-6, 7.411620130292598e-6]) = 5.799337469049334e-11
79. x = [3.8807746955176875e-6, 6.279225360028142e-6], f([3.8807746955176875e-6, 6.279225360028142e-6]) = 4.1625955654922086e-11
80. x = [3.2878450940912076e-6, 5.31984511198417e-6], f([3.2878450940912076e-6, 5.31984511198417e-6]) = 2.9877898870913244e-11
81. x = [2.7855070729112762e-6, 4.5070451198736765e-6], f([2.7855070729112762e-6, 4.5070451198736765e-6]) = 2.1445485800755723e-11
82. x = [2.359919470410276e-6, 3.818429913836477e-6], f([2.359919470410276e-6, 3.818429913836477e-6]) = 1.539294524080962e-11
83. x = [1.9993558662914607e-6, 3.2350257472660737e-6], f([1.9993558662914607e-6, 3.2350257472660737e-6]) = 1.1048607869643784e-11
84. x = [1.6938814778197153e-6, 2.7407578040262003e-6], f([1.6938814778197153e-6, 2.7407578040262003e-6]) = 7.930369006544579e-12
85. x = [1.4350794219654107e-6, 2.322007281295587e-6], f([1.4350794219654107e-6, 2.322007281295587e-6]) = 5.692187950009173e-12
86. x = [1.2158188009703066e-6, 1.9672361441310998e-6], f([1.2158188009703066e-6, 1.9672361441310998e-6]) = 4.0856867607913985e-12
87. x = [1.0300582212853326e-6, 1.6666692124309284e-6], f([1.0300582212853326e-6, 1.6666692124309284e-6]) = 2.932586986569762e-12
88. x = [8.726793321428626e-7, 1.4120248206867102e-6], f([8.726793321428626e-7, 1.4120248206867102e-6]) = 2.104925545523829e-12
89. x = [7.393457971715496e-7, 1.196286629262953e-6], f([7.393457971715496e-7, 1.196286629262953e-6]) = 1.5108542636552369e-12
90. x = [6.263838132306625e-7, 1.0135102998099781e-6], f([6.263838132306625e-7, 1.0135102998099781e-6]) = 1.084447196177261e-12
91. x = [5.306808843417926e-7, 8.586597080448723e-7], f([5.306808843417926e-7, 8.586597080448723e-7]) = 7.783846196068857e-13
92. x = [4.4960006158728935e-7, 7.274681809922803e-7], f([4.4960006158728935e-7, 7.274681809922803e-7]) = 5.587018143219213e-13
93. x = [3.8090728598602225e-7, 6.163209352878605e-7], f([3.8090728598602225e-7, 6.163209352878605e-7]) = 4.010198935896925e-13
94. x = [3.227098323897098e-7, 5.221554773103321e-7], f([3.227098323897098e-7, 5.221554773103321e-7]) = 2.878404023975951e-13
95. x = [2.734041583148298e-7, 4.423772208189518e-7], f([2.734041583148298e-7, 4.423772208189518e-7]) = 2.0660345927172488e-13
96. x = [2.316317207638451e-7, 3.7478799706852615e-7], f([2.316317207638451e-7, 3.7478799706852615e-7]) = 1.482939470188842e-13
97. x = [1.9624154363532845e-7, 3.17525487606707e-7], f([1.9624154363532845e-7, 3.17525487606707e-7]) = 1.0644107702725802e-13
98. x = [1.6625850432479958e-7, 2.690119109162471e-7], f([1.6625850432479958e-7, 2.690119109162471e-7]) = 7.640030565293347e-14
99. x = [1.4085646570170562e-7, 2.2791054904054348e-7], f([1.4085646570170562e-7, 2.2791054904054348e-7]) = 5.483791471188219e-14
100. x = [1.1933551315495804e-7, 1.930889163496323e-7], f([1.1933551315495804e-7, 1.930889163496323e-7]) = 3.936105836550671e-14
101. x = [1.0110266950837403e-7, 1.635875556178968e-7], f([1.0110266950837403e-7, 1.635875556178968e-7]) = 2.8252221547679072e-14
102. x = [8.565555643479309e-8, 1.3859360163678e-7], f([8.565555643479309e-8, 1.3859360163678e-7]) = 2.0278621955923266e-14
103. x = [7.256855218393946e-8, 1.1741838394798446e-7], f([7.256855218393946e-8, 1.1741838394798446e-7]) = 1.455540435067257e-14
104. x = [6.148106422123513e-8, 9.947845157447353e-8], f([6.148106422123513e-8, 9.947845157447353e-8]) = 1.0447445406895359e-14
105. x = [5.2087593647929954e-8, 8.42794969145438e-8], f([5.2087593647929954e-8, 8.42794969145438e-8]) = 7.498872095917792e-15
106. x = [4.4129317642728464e-8, 7.140273584627505e-8], f([4.4129317642728464e-8, 7.140273584627505e-8]) = 5.3824720322367446e-15
107. x = [3.738695799187142e-8, 6.049336876681246e-8], f([3.738695799187142e-8, 6.049336876681246e-8]) = 3.86338169357254e-15
108. x = [3.1674739210844834e-8, 5.125080462793596e-8], f([3.1674739210844834e-8, 5.125080462793596e-8]) = 2.773022882578525e-15
Out[17]:
([3.1674739210844834e-8, 5.125080462793596e-8], [10.0 2.0 3.0; 7.120000047391152 1.6000000074048677 2.6000000074048675; … ; 3.86338169357254e-15 3.738695799187142e-8 6.049336876681246e-8; 2.773022882578525e-15 3.1674739210844834e-8 5.125080462793596e-8])
In [18]:
sol, iter = steepestdescent_convex(f1, f1grad, [2.0,3.0], 0.1, true, true)
0. x = [2.0, 3.0], f([2.0, 3.0]) = 10.0
1. x = [-6.864689705565752e-9, 0.9999999931353103], f([-6.864689705565752e-9, 0.9999999931353103]) = 2.0
2. x = [0.39999999550607185, 0.5999999935104245], f([0.39999999550607185, 0.5999999935104245]) = 0.3999999912131972
3. x = [-4.951900556271482e-10, 0.19999999650389555], f([-4.951900556271482e-10, 0.19999999650389555]) = 0.0799999975992685
4. x = [0.07999999835247451, 0.11999999785430701], f([0.07999999835247451, 0.11999999785430701]) = 0.015999999393085048
5. x = [-6.581302169905712e-10, 0.03999999754132129], f([-6.581302169905712e-10, 0.03999999754132129]) = 0.0031999997119122486
6. x = [0.015999998860773402, 0.023999998285669757], f([0.015999998860773402, 0.023999998285669757]) = 0.0006399999086861844
7. x = [-4.1769140229908075e-11, 0.007999999405088599], f([-4.1769140229908075e-11, 0.007999999405088599]) = 0.00012799998229944828
8. x = [0.0031999997458548846, 0.00479999963417223], f([0.0031999997458548846, 0.00479999963417223]) = 2.5599996032173687e-5
9. x = [-1.9768119866730993e-11, 0.001599999806989613], f([-1.9768119866730993e-11, 0.001599999806989613]) = 5.1199988912495524e-6
10. x = [0.0006399999175120787, 0.0009599998776166624], f([0.0006399999175120787, 0.0009599998776166624]) = 1.0239997377648056e-6
11. x = [-7.647698988845486e-12, 0.0003199999470627073], f([-7.647698988845486e-12, 0.0003199999470627073]) = 2.0479994202932426e-7
12. x = [0.00012799997707655522, 0.00019199996539753266], f([0.00012799997707655522, 0.00019199996539753266]) = 4.095998527336782e-8
13. x = [-6.549525461904682e-13, 6.39999885352256e-5], f([-6.549525461904682e-13, 6.39999885352256e-5]) = 8.191997232685837e-9
14. x = [2.5599995215294852e-5, 3.8399992926959216e-5], f([2.5599995215294852e-5, 3.8399992926959216e-5]) = 1.6383993928834648e-9
15. x = [-1.9115841925327302e-13, 1.2799997104438184e-5], f([-1.9115841925327302e-13, 1.2799997104438184e-5]) = 3.276798615345608e-10
16. x = [5.119998791864238e-6, 7.679998197878894e-6], f([5.119998791864238e-6, 7.679998197878894e-6]) = 6.553596917497331e-11
17. x = [1.4270822953801714e-14, 2.5599993799553316e-6], f([1.4270822953801714e-14, 2.5599993799553316e-6]) = 1.3107193504610174e-11
18. x = [1.0239997515401352e-6, 1.5359996369776903e-6], f([1.0239997515401352e-6, 1.5359996369776903e-6]) = 2.621438747684656e-12
19. x = [-2.0586501567096513e-14, 5.119998261811024e-7], f([-2.0586501567096513e-14, 5.119998261811024e-7]) = 5.242876861801006e-13
20. x = [2.0479992620371114e-7, 3.071998876254902e-7], f([2.0479992620371114e-7, 3.071998876254902e-7]) = 1.0485752374445474e-13
21. x = [4.028915548807309e-15, 1.0239997217100033e-7], f([4.028915548807309e-15, 1.0239997217100033e-7]) = 2.0971506950999988e-14
22. x = [4.0959990360515646e-8, 6.143998422783399e-8], f([4.0959990360515646e-8, 6.143998422783399e-8]) = 4.194301918277864e-15
23. x = [2.667964187437204e-15, 2.0480001787039767e-8], f([2.667964187437204e-15, 2.0480001787039767e-8]) = 8.388607278346872e-16
24. x = [8.192001380727594e-9, 1.228800200709067e-8], f([8.192001380727594e-9, 1.228800200709067e-8]) = 1.6777221550601903e-16
Out[18]:
([8.192001380727594e-9, 1.228800200709067e-8], [10.0 2.0 3.0; 2.0 -6.864689705565752e-9 0.9999999931353103; … ; 8.388607278346872e-16 2.667964187437204e-15 2.0480001787039767e-8; 1.6777221550601903e-16 8.192001380727594e-9 1.228800200709067e-8])
In [19]:
k = [x = i for i=1:length(iter[:,1])]
Plots.plot(k,iter[:,1])
Out[19]:
In [ ]:
k
In [ ]:
k = [x = i for i=10:length(iter[:,1])]
Plots.plot(k,iter[10:length(iter[:,1]),1])

Coordinate descent

In [ ]:
function Jacobi(f::Function, x0, h::Float64, verbose::Bool = true, δ::Float64 = 1e-6, maxiter::Int64 = 1000)

    function fsearch(α::Float64)
        return(f(x0-α*d))
    end

    x = copy(x0)
    n = length(x)
    k = 0
    d = zeros(n)
    
    while true
        x0[:] = x[:]
        k += 1
        
        for i = 1:n
            d[i] = 1.0  # d is now the i^th vector of the canonical basis
            α = Optim.minimizer(optimize(fsearch, 0, h, GoldenSection()))
            x[i] -= α
            d[i] = 0.0
        end
        
        if verbose
            println(k, ". ", f(x), " ", x, " ", x0)
        end
        
        if norm(x-x0) < δ
            break
        end
    end
    
    return x
end
In [ ]:
sol = Jacobi(f1, [2.0,3.0], 1.0)

Exemple 2

Consider the bivariate function $$ f(x,y) = \frac{(2-x)^2}{2y^2}+\frac{(3-x)^2}{2y^2} + \ln y $$ that is computed in Julia as

In [ ]:
f(x) = (2-x[1])*(2-x[1])/(2*x[2]*x[2])+(3-x[1])*(3-x[1])/(2*x[2]*x[2])+log(x[2])

Its derivative is $$ \nabla f(x) = \begin{pmatrix} \frac{-2(2-x)}{2y^2}+\frac{-2(3-x)}{2y^2} \\ -\frac{(2-x)^2}{y^3}-\frac{(3-x)^2}{y^3} + \frac{1}{y} \end{pmatrix} = \begin{pmatrix} \frac{x-2}{y^2}+\frac{x-3}{y^2} \\ -\frac{(2-x)^2}{y^3}-\frac{(3-x)^2}{y^3} + \frac{1}{y} \end{pmatrix} $$

In [ ]:
function fprime(x)
    return [(x[1]-2)/(x[2]*x[2])+(x[1]-3)/(x[2]*x[2]),
            -(2-x[1])*(2-x[1])/(x[2]*x[2]*x[2])-(3-x[1])*(3-x[1])/(x[2]*x[2]*x[2])+1/x[2]]
end
In [ ]:
default(size=(600,600), fc=:heat)
x, y = -2.5:0.1:2.5, 0.5:0.1:2.5
z = Surface((x,y)->f([x,y]), x, y)
surface(x,y,z, linealpha = 0.3)
In [ ]:
sol = steepestdescent(f, fprime, [1.0,1.0], 2.0)

The choice of $h$ is important. Consider for instance a too small value: $h = 0.1$.

In [ ]:
sol = steepestdescent(f, fprime, [1.0,1.0], 0.1)

But a too big $h$ can lead to some issues too. Consider for instance $h = 10$.

In [ ]:
sol = steepestdescent(f, fprime, [1.0,1.0], 10.0)

We will have to ensure that the iterates are such that $y > 0$ due to the logarithmic operator.

The choice of the starting point is also important to ensure that the algorithm converges fast enough. Consider for instance $x_0 = (0.1, 0.1)$.

In [ ]:
sol = steepestdescent(f, fprime, [0.1,0.1], 2.0)

Now, take $x_0 = (100, 100)$.

In [ ]:
sol = steepestdescent(f, fprime, [100.0,100.0], 5.0)

In practice, we often need some insight on the function to optimize in order to be efficient.

Rosenbrock function

$$ f(x,y) = (1-x)^2 + 100(y-x^2)^2 $$
$$ \nabla f(x,y) = \begin{pmatrix} -2(1-x)-400x(y-x^2) \\ 200(y-x^2) \end{pmatrix} $$
$$ \nabla^2 f(x,y) = \begin{pmatrix} 2 - 400(y-x^2) + 800x^2 & -400x \\ -400x & 200 \end{pmatrix} = \begin{pmatrix} 2 - 400y + 1200x^2 & -400x \\ -400x & 200 \end{pmatrix} $$
In [23]:
function rosenbrock(x::Vector)
  return (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2
end
 
function rosenbrock_gradient(x::Vector)
  return [-2.0 * (1.0 - x[1]) - 400.0 * (x[2] - x[1]^2) * x[1],
          200.0 * (x[2] - x[1]^2)]
end
 
function rosenbrock_hessian(x::Vector)
  h = zeros(2, 2)
  h[1, 1] = 2.0 - 400.0 * x[2] + 1200.0 * x[1]^2
  h[1, 2] = -400.0 * x[1]
  h[2, 1] = -400.0 * x[1]
  h[2, 2] = 200.0
  return h
end
Out[23]:
rosenbrock_hessian (generic function with 1 method)
In [24]:
default(size=(600,600))
x, y = 0:0.01:1.0, 0:0.01:1.0
z = Surface((x,y)->rosenbrock([x,y]), x, y)
surface(x,y,z, linealpha = 0.3)
Out[24]:
Plots.jl
In [25]:
Plots.contour(x,y,z, linealpha = 0.1, levels=2500)
Out[25]:
Plots.jl
In [26]:
sol, iter = steepestdescent(rosenbrock, rosenbrock_gradient, [0.0,0.0], 10.0, true, true)
0. x = [0.0, 0.0], f([0.0, 0.0]) = 1.0
1. x = [0.1612620227407261, 0.0], f([0.1612620227407261, 0.0]) = 0.7711096853441531
2. x = [0.16126202280695034, 0.02600544024872085], f([0.16126202280695034, 0.02600544024872085]) = 0.7034813943858886
3. x = [0.21133888041724883, 0.02600543876247529], f([0.21133888041724883, 0.02600543876247529]) = 0.6568010089605405
4. x = [0.21133888100318554, 0.04466412256994727], f([0.21133888100318554, 0.04466412256994727]) = 0.6219863606173075
5. x = [0.24508247498253186, 0.04466412279984179], f([0.24508247498253186, 0.04466412279984179]) = 0.5936204637173165
6. x = [0.2450824743849232, 0.06006541860916487], f([0.2450824743849232, 0.06006541860916487]) = 0.5699004704807902
7. x = [0.2711222718134955, 0.06006542082182948], f([0.2711222718134955, 0.06006542082182948]) = 0.5493311173278929
8. x = [0.2711222708981266, 0.0735072854577914], f([0.2711222708981266, 0.0735072854577914]) = 0.5312627439807038
9. x = [0.29257001561271645, 0.07350728639695933], f([0.29257001561271645, 0.07350728639695933]) = 0.5150738178410098
10. x = [0.2925700148205872, 0.08559721330212781], f([0.2925700148205872, 0.08559721330212781]) = 0.5004571839309442
11. x = [0.31093080030671383, 0.08559721400286757], f([0.31093080030671383, 0.08559721400286757]) = 0.48709466086751985
12. x = [0.31093080025786574, 0.09667796239376748], f([0.31093080025786574, 0.09667796239376748]) = 0.4748163620332654
13. x = [0.32705633895121194, 0.0966779627570338], f([0.32705633895121194, 0.0966779627570338]) = 0.4634372309681655
14. x = [0.3270563388406716, 0.10696584867584466], f([0.3270563388406716, 0.10696584867584466]) = 0.45285317109452106
15. x = [0.34147917966047076, 0.10696584889021117], f([0.34147917966047076, 0.10696584889021117]) = 0.44294683674908686
16. x = [0.34147917957615054, 0.11660802998007845], f([0.34147917957615054, 0.11660802998007845]) = 0.43364967093169987
17. x = [0.35455629129726013, 0.11660803018645081], f([0.35455629129726013, 0.11660803018645081]) = 0.4248824645510051
18. x = [0.3545562909824612, 0.12571016314624006], f([0.3545562909824612, 0.12571016314624006]) = 0.4165975815103173
19. x = [0.3665395702808029, 0.1257101637570594], f([0.3665395702808029, 0.1257101637570594]) = 0.4087389645403241
20. x = [0.36653956967664153, 0.13435125605737955], f([0.36653956967664153, 0.13435125605737955]) = 0.40127211678545444
21. x = [0.3776139464389042, 0.13435125619961247], f([0.3776139464389042, 0.13435125619961247]) = 0.3941558676722247
22. x = [0.37761394646013513, 0.14259229299276238], f([0.37761394646013513, 0.14259229299276238]) = 0.38736439964092756
23. x = [0.38791953096168935, 0.14259229227816972], f([0.38791953096168935, 0.14259229227816972]) = 0.3808665590438894
24. x = [0.38791953164271525, 0.15048156418366151], f([0.38791953164271525, 0.15048156418366151]) = 0.3746424997444731
25. x = [0.3975652307132169, 0.15048156236546914], f([0.3975652307132169, 0.15048156236546914]) = 0.3686680627004397
26. x = [0.3975652324647904, 0.1580581152372333], f([0.3975652324647904, 0.1580581152372333]) = 0.36292764913520204
27. x = [0.4066375219733344, 0.1580581134715968], f([0.4066375219733344, 0.1580581134715968]) = 0.3574021347367799
28. x = [0.4066375239092683, 0.16535407718962844], f([0.4066375239092683, 0.16535407718962844]) = 0.3520790280325243
29. x = [0.4152063101623946, 0.16535407525659443], f([0.4152063101623946, 0.16535407525659443]) = 0.34694292443681346
30. x = [0.4152063113680399, 0.17239628238293805], f([0.4152063113680399, 0.17239628238293805]) = 0.34198365826377397
31. x = [0.42332897810407716, 0.1723962804618621], f([0.42332897810407716, 0.1723962804618621]) = 0.33718863471913035
32. x = [0.4233289797073569, 0.17920742533977313], f([0.4233289797073569, 0.17920742533977313]) = 0.3325494656453579
33. x = [0.43105326682885253, 0.17920742496512393], f([0.43105326682885253, 0.17920742496512393]) = 0.32805571713162346
34. x = [0.4310532673689011, 0.18580692043008465], f([0.4310532673689011, 0.18580692043008465]) = 0.3237003845716032
35. x = [0.43841934676855787, 0.18580691897915594], f([0.43841934676855787, 0.18580691897915594]) = 0.3194747261456466
36. x = [0.4384193481341236, 0.19221152544167294], f([0.4384193481341236, 0.19221152544167294]) = 0.3153728285501027
37. x = [0.44546138112247474, 0.1922115246600468], f([0.44546138112247474, 0.1922115246600468]) = 0.31138729255049824
38. x = [0.44546138124991075, 0.19843584240960657], f([0.44546138124991075, 0.19843584240960657]) = 0.3075130796852568
39. x = [0.4522086741038411, 0.19843584213641413], f([0.4522086741038411, 0.19843584213641413]) = 0.3037438711954518
40. x = [0.4522086736606174, 0.2044926845672846], f([0.4522086736606174, 0.2044926845672846]) = 0.3000753372126599
41. x = [0.45868657490787185, 0.20449268452779948], f([0.45868657490787185, 0.20449268452779948]) = 0.29650203781054824
42. x = [0.4586865750709403, 0.21039337432120128], f([0.4586865750709403, 0.21039337432120128]) = 0.2930202240084287
43. x = [0.46491717315029296, 0.21039337412450212], f([0.46491717315029296, 0.21039337412450212]) = 0.2896251780393302
44. x = [0.4649171731882241, 0.21614797820261164], f([0.4649171731882241, 0.21614797820261164]) = 0.28631363154888095
45. x = [0.4709198394704101, 0.21614797789155066], f([0.4709198394704101, 0.21614797789155066]) = 0.28308146634477055
46. x = [0.47091984037103257, 0.221765496557067], f([0.47091984037103257, 0.221765496557067]) = 0.2799258153130136
47. x = [0.47671167009298804, 0.2217654960075416], f([0.47671167009298804, 0.2217654960075416]) = 0.2768430618298368
48. x = [0.4767116699440883, 0.22725401606985668], f([0.4767116699440883, 0.22725401606985668]) = 0.27383067637270475
49. x = [0.4823078273070866, 0.2272540162741426], f([0.4823078273070866, 0.2272540162741426]) = 0.2708854656602998
50. x = [0.48230782658078375, 0.23262083933898028], f([0.48230782658078375, 0.23262083933898028]) = 0.2680051864195119
51. x = [0.4877218312985245, 0.2326208395921666], f([0.4877218312985245, 0.2326208395921666]) = 0.2651870048223571
52. x = [0.4877218314779602, 0.23787258538363515], f([0.4877218314779602, 0.23787258538363515]) = 0.2624289219442954
53. x = [0.4929657963259798, 0.23787258488878021], f([0.4929657963259798, 0.23787258488878021]) = 0.2597284112391086
54. x = [0.49296579638249666, 0.2430152766266245], f([0.49296579638249666, 0.2430152766266245]) = 0.2570836836380358
55. x = [0.49805061568825115, 0.24301527640239076], f([0.49805061568825115, 0.24301527640239076]) = 0.25449247698514527
56. x = [0.49805061658483746, 0.24805441699865693], f([0.49805061658483746, 0.24805441699865693]) = 0.2519531835108618
57. x = [0.5029861310596924, 0.24805441668585915], f([0.5029861310596924, 0.24805441668585915]) = 0.2494637697351823
58. x = [0.5029861316510841, 0.25299504887483176], f([0.5029861316510841, 0.25299504887483176]) = 0.24702278533115352
59. x = [0.5077812596453132, 0.25299504864182587], f([0.5077812596453132, 0.25299504864182587]) = 0.24462839564175978
60. x = [0.5077812602631905, 0.2578418093692486], f([0.5077812602631905, 0.2578418093692486]) = 0.24227928774809313
61. x = [0.5124441128776053, 0.25784180833215453], f([0.5124441128776053, 0.25784180833215453]) = 0.23997380066119134
62. x = [0.5124441139738207, 0.2625989713984018], f([0.5124441139738207, 0.2625989713984018]) = 0.23771074199877293
63. x = [0.5169820918539044, 0.26259897004694943], f([0.5169820918539044, 0.26259897004694943]) = 0.2354886031949667
64. x = [0.5169820935504372, 0.2672704863639032], f([0.5169820935504372, 0.2672704863639032]) = 0.23330629795091873
65. x = [0.5214019702389341, 0.2672704851632513], f([0.5214019702389341, 0.2672704851632513]) = 0.23116245210783615
66. x = [0.5214019711872473, 0.27186001652605396], f([0.5214019711872473, 0.27186001652605396]) = 0.22905607318345256
67. x = [0.5257099605380149, 0.27186001565463513], f([0.5257099605380149, 0.27186001565463513]) = 0.22698590577525354
68. x = [0.5257099614420236, 0.27637096453238463], f([0.5257099614420236, 0.27637096453238463]) = 0.22495104067532679
69. x = [0.5299117809322826, 0.27637096367037745], f([0.5299117809322826, 0.27637096367037745]) = 0.2229503280302457
70. x = [0.5299117819054657, 0.28080649789777257], f([0.5299117819054657, 0.28080649789777257]) = 0.22098293279129458
71. x = [0.5340127048210788, 0.2808064967675729], f([0.5340127048210788, 0.2808064967675729]) = 0.21904779912045264
72. x = [0.534012705860308, 0.28516957158251066], f([0.534012705860308, 0.28516957158251066]) = 0.21714415829963205
73. x = [0.5380176065649581, 0.28516957023983347], f([0.5380176065649581, 0.28516957023983347]) = 0.21527103850466994
74. x = [0.5380176081023069, 0.28946294851869525], f([0.5380176081023069, 0.28946294851869525]) = 0.21342773042351404
75. x = [0.5419310032811242, 0.28946294691721963], f([0.5419310032811242, 0.28946294691721963]) = 0.2116133376782171
76. x = [0.5419310047515339, 0.29368921587758573], f([0.5419310047515339, 0.29368921587758573]) = 0.20982720440793967
77. x = [0.5457570865898584, 0.2936892142349757], f([0.5457570865898584, 0.2936892142349757]) = 0.20806850196298415
78. x = [0.5457570885385001, 0.29785080184311163], f([0.5457570885385001, 0.29785080184311163]) = 0.20633662261302047
79. x = [0.5494997569473468, 0.29785080006910425], f([0.5494997569473468, 0.29785080006910425]) = 0.2046307989664715
80. x = [0.5494997594556297, 0.30194998862636097], f([0.5494997594556297, 0.30194998862636097]) = 0.2029504667305364
81. x = [0.5531626494771366, 0.3019499861996965], f([0.5531626494771366, 0.3019499861996965]) = 0.201294913842769
82. x = [0.5531626519044585, 0.3059889222559571], f([0.5531626519044585, 0.3059889222559571]) = 0.19966361565305693
83. x = [0.5567491557152695, 0.30598892001339], f([0.5567491557152695, 0.30598892001339]) = 0.19805591009997486
84. x = [0.5567491587838322, 0.30996962962092295], f([0.5567491587838322, 0.30996962962092295]) = 0.1964713082388418
85. x = [0.5602624494427373, 0.30996962659754534], f([0.5602624494427373, 0.30996962659754534]) = 0.19490919364939663
86. x = [0.5602624531056657, 0.3138940206724136], f([0.5602624531056657, 0.3138940206724136]) = 0.19336911014864872
87. x = [0.5637055025720049, 0.31389401729587413], f([0.5637055025720049, 0.31389401729587413]) = 0.191850482770056
88. x = [0.5637055063787026, 0.31776390254482173], f([0.5637055063787026, 0.31776390254482173]) = 0.1903528851642664
89. x = [0.5670811022041661, 0.31776389896790874], f([0.5670811022041661, 0.31776389896790874]) = 0.18887578013987083
90. x = [0.5670811061399202, 0.32158098456016976], f([0.5670811061399202, 0.32158098456016976]) = 0.1874187686610363
91. x = [0.5703918675998588, 0.3215809817923052], f([0.5703918675998588, 0.3215809817923052]) = 0.1859813483317945
92. x = [0.5703918705066301, 0.325346889032092], f([0.5703918705066301, 0.325346889032092]) = 0.18456314492679302
93. x = [0.5736402603241066, 0.3253468866941144], f([0.5736402603241066, 0.3253468866941144]) = 0.18316368762260327
94. x = [0.5736402632112945, 0.32906315527968033], f([0.5736402632112945, 0.32906315527968033]) = 0.1817826251545356
95. x = [0.5768286022047667, 0.32906315251089274], f([0.5768286022047667, 0.32906315251089274]) = 0.18041951579613916
96. x = [0.5768286048682323, 0.33273124188066033], f([0.5768286048682323, 0.33273124188066033]) = 0.17907402965776728
97. x = [0.579959081464713, 0.3327312400412868], f([0.579959081464713, 0.3327312400412868]) = 0.17774575181160876
98. x = [0.5799590834930921, 0.3363525414042971], f([0.5799590834930921, 0.3363525414042971]) = 0.176434371539964
99. x = [0.5830337638050981, 0.33635253929750636], f([0.5830337638050981, 0.33635253929750636]) = 0.17513949845955692
100. x = [0.5830337664076224, 0.33992837582135327], f([0.5830337664076224, 0.33992837582135327]) = 0.17386083995621415
101. x = [0.5860546045001273, 0.3399283736117662], f([0.5860546045001273, 0.3399283736117662]) = 0.17259802856577122
102. x = [0.5860546072805951, 0.3434600059671376], f([0.5860546072805951, 0.3434600059671376]) = 0.1713507881536234
103. x = [0.5890234527594472, 0.34346000363454937], f([0.5890234527594472, 0.34346000363454937]) = 0.17011877230877642
104. x = [0.5890234552106465, 0.3469486340848002], f([0.5890234552106465, 0.3469486340848002]) = 0.16890172036699658
105. x = [0.5919420598412224, 0.34694863174374074], f([0.5919420598412224, 0.34694863174374074]) = 0.16769930519069065
106. x = [0.5919420624247221, 0.35039540871533803], f([0.5919420624247221, 0.35039540871533803]) = 0.16651128041819055
107. x = [0.5948120874293678, 0.35039540629044025], f([0.5948120874293678, 0.35039540629044025]) = 0.1653373369909536
108. x = [0.5948120910770698, 0.3538014278320447], f([0.5948120910770698, 0.3538014278320447]) = 0.1641772415373385
109. x = [0.597635115278067, 0.3538014249472325], f([0.597635115278067, 0.3538014249472325]) = 0.1630307021104252
110. x = [0.5976351186974297, 0.3571677387682407], f([0.5976351186974297, 0.3571677387682407]) = 0.16189749770563283
111. x = [0.6004126410715424, 0.35716773623639797], f([0.6004126410715424, 0.35716773623639797]) = 0.16077735180234964
112. x = [0.6004126444627057, 0.3604953473144834], f([0.6004126444627057, 0.3604953473144834]) = 0.1596700547052894
113. x = [0.6031460915119355, 0.3604953447945295], f([0.6031460915119355, 0.3604953447945295]) = 0.1585753444799616
114. x = [0.6031460946833468, 0.3637852152848376], f([0.6031460946833468, 0.3637852152848376]) = 0.15749302216508057
115. x = [0.6058368238450974, 0.3637852127402061], f([0.6058368238450974, 0.3637852127402061]) = 0.15642283921458086
116. x = [0.6058368274487557, 0.36703826545700524], f([0.6058368274487557, 0.36703826545700524]) = 0.1553646065956636
117. x = [0.6084861330092559, 0.36703826279278146], f([0.6084861330092559, 0.36703826279278146]) = 0.15431808853954515
118. x = [0.6084861364847246, 0.3702553820742113], f([0.6084861364847246, 0.3702553820742113]) = 0.1532831053246591
119. x = [0.6110952522253774, 0.37025537955508764], f([0.6110952522253774, 0.37025537955508764]) = 0.15225943289374383
120. x = [0.6110952556176933, 0.3734374155805843], f([0.6110952556176933, 0.3734374155805843]) = 0.15124690020306905
121. x = [0.6136653593199523, 0.37343741284323256], f([0.6136653593199523, 0.37343741284323256]) = 0.1502452941341824
122. x = [0.6136653627100401, 0.376585181289968], f([0.6136653627100401, 0.376585181289968]) = 0.14925445196996637
123. x = [0.6161975790494582, 0.3765851787337809], f([0.6161975790494582, 0.3765851787337809]) = 0.14827417088217965
124. x = [0.6161975825095981, 0.3796994654756256], f([0.6161975825095981, 0.3796994654756256]) = 0.14730429567147904
125. x = [0.618692986696135, 0.3796994623645528], f([0.618692986696135, 0.3796994623645528]) = 0.1463446330790024
126. x = [0.6186929907975564, 0.38278102224205224], f([0.6186929907975564, 0.38278102224205224]) = 0.14539503526691533
127. x = [0.621152611678484, 0.3827810187716718], f([0.621152611678484, 0.3827810187716718]) = 0.14445531807467488
128. x = [0.6211526158749919, 0.38583057734149634], f([0.6211526158749919, 0.38583057734149634]) = 0.14352534045836404
129. x = [0.6235774376405436, 0.38583057405601623], f([0.6235774376405436, 0.38583057405601623]) = 0.14260492675438372
130. x = [0.6235774422044751, 0.3888488318832262], f([0.6235774422044751, 0.3888488318832262]) = 0.14169394201732827
131. x = [0.6259684084689308, 0.3888488284170786], f([0.6259684084689308, 0.3888488284170786]) = 0.14079221878017265
132. x = [0.6259684129312095, 0.3918364594368766], f([0.6259684129312095, 0.3918364594368766]) = 0.13989962812520115
133. x = [0.6283264275577225, 0.3918364560014957], f([0.6283264275577225, 0.3918364560014957]) = 0.13901600999832792
134. x = [0.6283264320505926, 0.3947941110427341], f([0.6283264320505926, 0.3947941110427341]) = 0.13814124111224615
135. x = [0.6306523621701022, 0.39479410739476634], f([0.6306523621701022, 0.39479410739476634]) = 0.13727516844774748
136. x = [0.6306523668411761, 0.3977224138660692], f([0.6306523668411761, 0.3977224138660692]) = 0.1364176741200288
137. x = [0.632947044714471, 0.3977224100988349], f([0.632947044714471, 0.3977224100988349]) = 0.13556861176606208
138. x = [0.6329470493970245, 0.40062197407498396], f([0.6329470493970245, 0.40062197407498396]) = 0.13472786854635488
139. x = [0.6352112739114513, 0.400621969920658], f([0.6352112739114513, 0.400621969920658]) = 0.13389530421819326
140. x = [0.635211279290568, 0.4034933761118717], f([0.635211279290568, 0.4034933761118717]) = 0.13307081075682858
141. x = [0.6374458187082267, 0.40349337196247337], f([0.6374458187082267, 0.40349337196247337]) = 0.13225425411725658
142. x = [0.6374458239043517, 0.40633718506341], f([0.6374458239043517, 0.40633718506341]) = 0.13144553060439879
143. x = [0.639651416415944, 0.40633718101771266], f([0.639651416415944, 0.40633718101771266]) = 0.13064451172194708
144. x = [0.6396514215132041, 0.40915394819552947], f([0.6396514215132041, 0.40915394819552947]) = 0.12985109801745962
145. x = [0.6418287772805903, 0.4091539438742461], f([0.6418287772805903, 0.4091539438742461]) = 0.12906516618282
146. x = [0.641828782666134, 0.41194419288938433], f([0.641828782666134, 0.41194419288938433]) = 0.12828662092642787
147. x = [0.6439785853010245, 0.4119441889095427], f([0.6439785853010245, 0.4119441889095427]) = 0.12751534415111143
148. x = [0.6439785903495242, 0.4147084309118433], f([0.6439785903495242, 0.4147084309118433]) = 0.12675124412951558
149. x = [0.6461014981647627, 0.4147084272844714], f([0.6461014981647627, 0.4147084272844714]) = 0.12599420758357335
150. x = [0.6461015027423092, 0.4174471578906037], f([0.6461015027423092, 0.4174471578906037]) = 0.12524414636125547
151. x = [0.6481981496228112, 0.4174471543094515], f([0.6481981496228112, 0.4174471543094515]) = 0.12450095156893304
152. x = [0.6481981545175277, 0.42016085357537497], f([0.6481981545175277, 0.42016085357537497]) = 0.12376453848487697
153. x = [0.6502691519779552, 0.420160850010645], f([0.6502691519779552, 0.420160850010645]) = 0.12303480269753236
154. x = [0.6502691568897336, 0.4228499825668948], f([0.6502691568897336, 0.4228499825668948]) = 0.12231166262262155
155. x = [0.6523150945892143, 0.4228499789604677], f([0.6523150945892143, 0.4228499789604677]) = 0.12159501790580171
156. x = [0.6523150994031902, 0.4255149950691268], f([0.6523150994031902, 0.4255149950691268]) = 0.1208847901030173
157. x = [0.6543365463409216, 0.42551499148785416], f([0.6543365463409216, 0.42551499148785416]) = 0.12018088264858433
158. x = [0.6543365507199344, 0.42815632741190185], f([0.6543365507199344, 0.42815632741190185]) = 0.11948322016819589
159. x = [0.6563340554804089, 0.4281563240580113], f([0.6563340554804089, 0.4281563240580113]) = 0.11879170959816232
160. x = [0.6563340601226241, 0.43077440460445826], f([0.6563340601226241, 0.43077440460445826]) = 0.11810627823180392
161. x = [0.6583081534861536, 0.43077440108474635], f([0.6583081534861536, 0.43077440108474635]) = 0.11742683666322522
162. x = [0.6583081578948825, 0.4333696368763831], f([0.6583081578948825, 0.4333696368763831]) = 0.11675331496119229
163. x = [0.6602593518389702, 0.43336963337853174], f([0.6602593518389702, 0.43336963337853174]) = 0.11608562683729319
164. x = [0.6602593564388131, 0.4359424241093249], f([0.6602593564388131, 0.4359424241093249]) = 0.1154237048873735
165. x = [0.6621881461636036, 0.4359424205075047], f([0.6621881461636036, 0.4359424205075047]) = 0.11476746605444571
166. x = [0.6621881510598719, 0.43849315406870876], f([0.6621881510598719, 0.43849315406870876]) = 0.11411684528435234
167. x = [0.6640950156783447, 0.4384931503067066], f([0.6640950156783447, 0.4384931503067066]) = 0.11347176259268925
168. x = [0.6640950204128417, 0.44102220241565265], f([0.6640950204128417, 0.44102220241565265]) = 0.11283215531145314
169. x = [0.6659804226845412, 0.44102219889158867], f([0.6659804226845412, 0.44102219889158867]) = 0.11219794625054509
170. x = [0.6659804276027701, 0.4435299363265524], f([0.6659804276027701, 0.4435299363265524]) = 0.11156907474443238
171. x = [0.6678448162731484, 0.4435299327673596], f([0.6678448162731484, 0.4435299327673596]) = 0.11094546651865433
172. x = [0.6678448207386024, 0.44601671051703257], f([0.6678448207386024, 0.44601671051703257]) = 0.11032706311017468
173. x = [0.6696886290525018, 0.44601670722546144], f([0.6696886290525018, 0.44601670722546144]) = 0.10971379266985916
174. x = [0.6696886339785264, 0.44848287309557905], f([0.6696886339785264, 0.44848287309557905]) = 0.10910559852297627
175. x = [0.6715122825619668, 0.44848286944314225], f([0.6715122825619668, 0.44848286944314225]) = 0.10850241154056714
176. x = [0.6715122879320504, 0.45092875953897815], f([0.6715122879320504, 0.45092875953897815]) = 0.10790417697964062
177. x = [0.6733161842647911, 0.4509287558622842], f([0.6733161842647911, 0.4509287558622842]) = 0.10731082819280631
178. x = [0.6733161890777579, 0.4533546970565887], f([0.6733161890777579, 0.4533546970565887]) = 0.10672231231868354
179. x = [0.6751007277612031, 0.4533546934609088], f([0.6751007277612031, 0.4533546934609088]) = 0.10613856466738773
180. x = [0.6751007318515787, 0.4557610036852685], f([0.6751007318515787, 0.4557610036852685]) = 0.10555953444338283
181. x = [0.6768662947996549, 0.455761000675426], f([0.6768662947996549, 0.455761000675426]) = 0.104985158960591
182. x = [0.6768662987470866, 0.45814799190373307], f([0.6768662987470866, 0.45814799190373307]) = 0.10441538888541015
183. x = [0.6786132571381945, 0.45814798891721614], f([0.6786132571381945, 0.45814798891721614]) = 0.10385016376515015
184. x = [0.6786132612495241, 0.46051596425787694], f([0.6786132612495241, 0.46051596425787694]) = 0.10328943584467011
185. x = [0.6803419752337734, 0.4605159610767037], f([0.6803419752337734, 0.4605159610767037]) = 0.10273314668336907
186. x = [0.6803419793400892, 0.46286521423121435], f([0.6803419793400892, 0.46286521423121435]) = 0.10218125017221483
187. x = [0.6820527980011969, 0.46286521135245934], f([0.6820527980011969, 0.46286521135245934]) = 0.10163368980964116
188. x = [0.6820528019095984, 0.4651960294397877], f([0.6820528019095984, 0.4651960294397877]) = 0.10109042077353943
189. x = [0.6837460645831317, 0.4651960268584414], f([0.6837460645831317, 0.4651960268584414]) = 0.10055138850722391
190. x = [0.6837460678297285, 0.4675086898685005], f([0.6837460678297285, 0.4675086898685005]) = 0.10001654961316082
191. x = [0.6854221036923195, 0.4675086874328462], f([0.6854221036923195, 0.4675086874328462]) = 0.09948585106442367
192. x = [0.6854221066591583, 0.4698034684426367], f([0.6854221066591583, 0.4698034684426367]) = 0.09895925097876372
193. x = [0.6870812353406935, 0.46980346625621416], f([0.6870812353406935, 0.46980346625621416]) = 0.09843669799546491
194. x = [0.6870812383346512, 0.4720806322068961], f([0.6870812383346512, 0.4720806322068961]) = 0.09791815140217709
195. x = [0.6887237708302745, 0.47208063003619], f([0.6887237708302745, 0.47208063003619]) = 0.09740356156668332
196. x = [0.6887237737643778, 0.4743404405328111], f([0.6887237737643778, 0.4743404405328111]) = 0.09689288901949186
197. x = [0.6903500120482545, 0.47434043845110985], f([0.6903500120482545, 0.47434043845110985]) = 0.09638608567427953
198. x = [0.6903500150394596, 0.4765831471612992], f([0.6903500150394596, 0.4765831471612992]) = 0.09588311318606442
199. x = [0.6919602527171902, 0.47658314513514516], f([0.6919602527171902, 0.47658314513514516]) = 0.09538392503901885
200. x = [0.691960255984583, 0.4788089997205048], f([0.691960255984583, 0.4788089997205048]) = 0.09488848389308512
201. x = [0.6935547789832591, 0.4788089977233385], f([0.6935547789832591, 0.4788089977233385]) = 0.09439674485012964
202. x = [0.6935547819746861, 0.4810182398650694], f([0.6935547819746861, 0.4810182398650694]) = 0.09390867165058397
203. x = [0.6951338681157613, 0.4810182376672962], f([0.6951338681157613, 0.4810182376672962]) = 0.09342422052348195
204. x = [0.6951338711887082, 0.48321110289423375], f([0.6951338711887082, 0.48321110289423375]) = 0.09294335649638479
205. x = [0.6966977907877012, 0.48321110083181235], f([0.6966977907877012, 0.48321110083181235]) = 0.09246603712840736
206. x = [0.6966977935898097, 0.4853878197288562], f([0.6966977935898097, 0.4853878197288562]) = 0.09199222841329141
207. x = [0.6982468098218472, 0.48538781761656125], f([0.6982468098218472, 0.48538781761656125]) = 0.09152188904291705
208. x = [0.698246812540826, 0.48754861515951464], f([0.698246812540826, 0.48754861515951464]) = 0.09105498614177296
209. x = [0.6997811812606548, 0.48754861315807624], f([0.6997811812606548, 0.48754861315807624]) = 0.09059147958758924
210. x = [0.6997811843353042, 0.4896937099332446], f([0.6997811843353042, 0.4896937099332446]) = 0.09013133727911415
211. x = [0.7013011552387945, 0.48969370791643946], f([0.7013011552387945, 0.48969370791643946]) = 0.08967452050961035
212. x = [0.7013011584077622, 0.49182331924293266], f([0.7013011584077622, 0.49182331924293266]) = 0.08922099796854675
213. x = [0.702806974899733, 0.4918233169951114], f([0.702806974899733, 0.4918233169951114]) = 0.08877073202295538
214. x = [0.7028069776636184, 0.4939376516848105], f([0.7028069776636184, 0.4939376516848105]) = 0.08832369252543446
215. x = [0.7042988760784883, 0.493937649761093], f([0.7042988760784883, 0.493937649761093]) = 0.08787984271905568
216. x = [0.7042988785075263, 0.4960369137263927], f([0.7042988785075263, 0.4960369137263927]) = 0.0874391532519079
217. x = [0.7057770895182833, 0.4960369119970235], f([0.7057770895182833, 0.4960369119970235]) = 0.08700158842408748
218. x = [0.7057770919012868, 0.4981213062936671], f([0.7057770919012868, 0.4981213062936671]) = 0.08656711965006464
219. x = [0.7072418407455178, 0.49812130487930095], f([0.7072418407455178, 0.49812130487930095]) = 0.08613571241674267
220. x = [0.7072418422341056, 0.5001910260128434], f([0.7072418422341056, 0.5001910260128434]) = 0.08570733893848101
221. x = [0.7086933478679972, 0.5001910247207054], f([0.7086933478679972, 0.5001910247207054]) = 0.08528196532111919
222. x = [0.7086933493877339, 0.5022462660469088], f([0.7086933493877339, 0.5022462660469088]) = 0.08485956469093756
223. x = [0.710131825704645, 0.5022462647726539], f([0.710131825704645, 0.5022462647726539]) = 0.08444010416187585
224. x = [0.7101318272990877, 0.5042872143455732], f([0.7101318272990877, 0.5042872143455732]) = 0.08402355754496638
225. x = [0.7115574830476378, 0.5042872132623546], f([0.7115574830476378, 0.5042872132623546]) = 0.08360989298337967
226. x = [0.7115574841296047, 0.5063140546638409], f([0.7115574841296047, 0.5063140546638409]) = 0.08319908496164344
227. x = [0.712970522653726, 0.5063140539569422], f([0.712970522653726, 0.5063140539569422]) = 0.08279110242468189
228. x = [0.7129705232775303, 0.5083269676373974], f([0.7129705232775303, 0.5083269676373974]) = 0.0823859205075748
229. x = [0.7143711428157129, 0.5083269673569305], f([0.7143711428157129, 0.5083269673569305]) = 0.08198350905892968
230. x = [0.7143711436295627, 0.5103261323457144], f([0.7143711436295627, 0.5103261323457144]) = 0.08158384359148414
231. x = [0.7157595385831298, 0.5103261316189689], f([0.7157595385831298, 0.5103261316189689]) = 0.08118689486589596
232. x = [0.7157595397408909, 0.5123117206797062], f([0.7157595397408909, 0.5123117206797062]) = 0.08079263924831055
233. x = [0.7171358991694793, 0.5123117197356579], f([0.7171358991694793, 0.5123117197356579]) = 0.08040104820102131
234. x = [0.7171359006874746, 0.5142839020539198], f([0.7171359006874746, 0.5142839020539198]) = 0.08001209867988665
235. x = [0.7185004098086362, 0.5142839010895818], f([0.7185004098086362, 0.5142839010895818]) = 0.07962576301052522
236. x = [0.7185004104783294, 0.5162428408238496], f([0.7185004104783294, 0.5162428408238496]) = 0.07924201890086917
237. x = [0.7198532490779065, 0.5162428403594522], f([0.7198532490779065, 0.5162428403594522]) = 0.07886083910723171
238. x = [0.7198532495186465, 0.5181887014852321], f([0.7198532495186465, 0.5181887014852321]) = 0.07848220180526179
239. x = [0.7211945940140063, 0.5181887011775179], f([0.7211945940140063, 0.5181887011775179]) = 0.07810608059751298
240. x = [0.7211945945029418, 0.5201216437037616], f([0.7211945945029418, 0.5201216437037616]) = 0.0777324541343791
241. x = [0.7225246175068922, 0.5201216434349482], f([0.7225246175068922, 0.5201216434349482]) = 0.07736129680883393
242. x = [0.722524617459731, 0.5220418227869834], f([0.722524617459731, 0.5220418227869834]) = 0.07699258791586865
243. x = [0.7238434869080516, 0.5220418228099633], f([0.7238434869080516, 0.5220418228099633]) = 0.07662630233181007
244. x = [0.7238434867426127, 0.5239493930685757], f([0.7238434867426127, 0.5239493930685757]) = 0.07626241981447754
245. x = [0.7251513669728034, 0.5239493931780378], f([0.7251513669728034, 0.5239493931780378]) = 0.0759009159672303
246. x = [0.7251513674138828, 0.5258445065872175], f([0.7251513674138828, 0.5258445065872175]) = 0.07554177083445855
247. x = [0.726448420198613, 0.5258445061506991], f([0.726448420198613, 0.5258445061506991]) = 0.0751849607943713
248. x = [0.726448420287837, 0.5277273073113219], f([0.726448420287837, 0.5277273073113219]) = 0.0748304667630199
249. x = [0.7277348019174287, 0.5277273073241936], f([0.7277348019174287, 0.5277273073241936]) = 0.07447826546671767
250. x = [0.7277348021015578, 0.5295979425865183], f([0.7277348021015578, 0.5295979425865183]) = 0.0741283379866779
251. x = [0.7290106670859768, 0.5295979424006086], f([0.7290106670859768, 0.5295979424006086]) = 0.07378066178703306
252. x = [0.7290106669100368, 0.5314565522665895], f([0.7290106669100368, 0.5314565522665895]) = 0.07343521864854302
253. x = [0.7302761649095796, 0.5314565523609346], f([0.7302761649095796, 0.5314565523609346]) = 0.07309198641808055
254. x = [0.7302761652351798, 0.5333032779537366], f([0.7302761652351798, 0.5333032779537366]) = 0.07275094704024004
255. x = [0.7315314441967632, 0.5333032777475033], f([0.7315314441967632, 0.5333032777475033]) = 0.07241207918423602
256. x = [0.731531444320189, 0.5351382542896581], f([0.731531444320189, 0.5351382542896581]) = 0.07207536538880377
257. x = [0.7327766476739511, 0.5351382541688448], f([0.7327766476739511, 0.5351382541688448]) = 0.07174078463764738
258. x = [0.7327766481710549, 0.5369616172515452], f([0.7327766481710549, 0.5369616172515452]) = 0.07140831976269629
259. x = [0.7340119173859374, 0.5369616167214528], f([0.7340119173859374, 0.5369616167214528]) = 0.07107795033325964
260. x = [0.7340119179122655, 0.5387734967280415], f([0.7340119179122655, 0.5387734967280415]) = 0.07074965981271152
261. x = [0.7352373907359088, 0.5387734962254838], f([0.7352373907359088, 0.5387734962254838]) = 0.07042342811567988
262. x = [0.7352373909421971, 0.5405740211689226], f([0.7352373909421971, 0.5405740211689226]) = 0.07009923915509499
263. x = [0.7364532018398187, 0.5405740211094857], f([0.7364532018398187, 0.5405740211094857]) = 0.06977707333569666
264. x = [0.7364532022366673, 0.5423633196745706], f([0.7364532022366673, 0.5423633196745706]) = 0.06945691461130701
265. x = [0.7376594840689393, 0.542363319404554], f([0.7376594840689393, 0.542363319404554]) = 0.06913874405626466
266. x = [0.7376594843680497, 0.5441415157303816], f([0.7376594843680497, 0.5441415157303816]) = 0.06882254614203762
267. x = [0.7388563661217463, 0.5441415153415604], f([0.7388563661217463, 0.5441415153415604]) = 0.06850830219472998
268. x = [0.7388563672158199, 0.5459087330168845], f([0.7388563672158199, 0.5459087330168845]) = 0.06819599694371895
269. x = [0.740043976322651, 0.5459087322703645], f([0.740043976322651, 0.5459087322703645]) = 0.06788561240163589
270. x = [0.7400439772441988, 0.5476650898029054], f([0.7400439772441988, 0.5476650898029054]) = 0.06757713376701487
271. x = [0.7412224371432343, 0.5476650891013802], f([0.7412224371432343, 0.5476650891013802]) = 0.06727054324145736
272. x = [0.7412224388790682, 0.549410706196096], f([0.7412224388790682, 0.549410706196096]) = 0.06696582613969809
273. x = [0.7423918721338455, 0.5494107051574973], f([0.7423918721338455, 0.5494107051574973]) = 0.06666296541127864
274. x = [0.7423918734337646, 0.5511456954844194], f([0.7423918734337646, 0.5511456954844194]) = 0.06636194687296589
275. x = [0.7435523985838226, 0.5511456946987817], f([0.7435523985838226, 0.5511456946987817]) = 0.06606275358533634
276. x = [0.7435523999380909, 0.5528701737331867], f([0.7435523999380909, 0.5528701737331867]) = 0.06576537157751342
277. x = [0.7447041342605668, 0.5528701727094432], f([0.7447041342605668, 0.5528701727094432]) = 0.0654697843314729
278. x = [0.744704135625773, 0.554584251701755], f([0.744704135625773, 0.554584251701755]) = 0.06517597836658415
279. x = [0.7458471935096929, 0.5545842507688369], f([0.7458471935096929, 0.5545842507688369]) = 0.0648839374808796
280. x = [0.7458471946097084, 0.5562880394783292], f([0.7458471946097084, 0.5562880394783292]) = 0.06459364848775576
281. x = [0.7469816883577134, 0.5562880386877165], f([0.7469816883577134, 0.5562880386877165]) = 0.06430509549549375
282. x = [0.7469816890427691, 0.5579816444551484], f([0.7469816890427691, 0.5579816444551484]) = 0.06401826567965005
283. x = [0.7481077283371502, 0.5579816441480868], f([0.7481077283371502, 0.5579816441480868]) = 0.06373314352958406
284. x = [0.748107728867881, 0.5596651744224355], f([0.748107728867881, 0.5596651744224355]) = 0.06344971625609695
285. x = [0.7492254221917731, 0.5596651742313806], f([0.7492254221917731, 0.5596651742313806]) = 0.06316796885659984
286. x = [0.7492254220326316, 0.5613387328455446], f([0.7492254220326316, 0.5613387328455446]) = 0.0628878889547117
287. x = [0.7503348748294554, 0.5613387329227144], f([0.7503348748294554, 0.5613387329227144]) = 0.06260946165470319
288. x = [0.7503348746304412, 0.5630024239748729], f([0.7503348746304412, 0.5630024239748729]) = 0.06233267482579749
289. x = [0.751436190786186, 0.563002424024193], f([0.751436190786186, 0.563002424024193]) = 0.06205751397497599
290. x = [0.751436190976619, 0.5646563494836059], f([0.751436190976619, 0.5646563494836059]) = 0.06178396715621186
291. x = [0.7525294726866933, 0.5646563493190373], f([0.7525294726866933, 0.5646563493190373]) = 0.061512020307062716
292. x = [0.7525294728340995, 0.5663006076573277], f([0.7525294728340995, 0.5663006076573277]) = 0.06124166181576868
293. x = [0.7536148196775978, 0.5663006075812962], f([0.7536148196775978, 0.5663006075812962]) = 0.06097287784822715
294. x = [0.7536148199853292, 0.5679352972509096], f([0.7536148199853292, 0.5679352972509096]) = 0.06070565693086175
295. x = [0.7546923304414226, 0.567935297098112], f([0.7546923304414226, 0.567935297098112]) = 0.060439985620871536
296. x = [0.7546923302375326, 0.5695605132261362], f([0.7546923302375326, 0.5695605132261362]) = 0.06017585284429178
297. x = [0.7557620999102656, 0.5695605132667891], f([0.7557620999102656, 0.5695605132667891]) = 0.05991324521179072
298. x = [0.7557621000756555, 0.5711763523059202], f([0.7557621000756555, 0.5711763523059202]) = 0.059652151759454146
299. x = [0.756824223951815, 0.5711763521340781], f([0.756824223951815, 0.5711763521340781]) = 0.05939255957628123
300. x = [0.7568242240068124, 0.5727829060475245], f([0.7568242240068124, 0.5727829060475245]) = 0.05913445802988897
301. x = [0.75787879447669, 0.5727829060457851], f([0.75787879447669, 0.5727829060457851]) = 0.05887783440338506
302. x = [0.7578787943652621, 0.5743802670205289], f([0.7578787943652621, 0.5743802670205289]) = 0.05862267821801905
303. x = [0.758925902427157, 0.574380266989397], f([0.758925902427157, 0.574380266989397]) = 0.0583689769904646
304. x = [0.7589259025459134, 0.5759685254611383], f([0.7589259025459134, 0.5759685254611383]) = 0.058116720463302435
305. x = [0.7599656374185111, 0.5759685255016759], f([0.7599656374185111, 0.5759685255016759]) = 0.05786589655642971
306. x = [0.7599656378541889, 0.5775477712057274], f([0.7599656378541889, 0.5775477712057274]) = 0.05761649501074641
307. x = [0.76099808778028, 0.5775477709964268], f([0.76099808778028, 0.5775477709964268]) = 0.05736850409800208
308. x = [0.760998087985448, 0.5791180899826855], f([0.760998087985448, 0.5791180899826855]) = 0.05712191394661166
309. x = [0.7620233385781314, 0.5791180899547261], f([0.7620233385781314, 0.5791180899547261]) = 0.05687671291802648
310. x = [0.7620233389464247, 0.580679569562677], f([0.7620233389464247, 0.580679569562677]) = 0.05663289120620828
311. x = [0.7630414750005923, 0.5806795693643267], f([0.7630414750005923, 0.5806795693643267]) = 0.05639043750557377
312. x = [0.7630414758386912, 0.5822322949243053], f([0.7630414758386912, 0.5822322949243053]) = 0.05614934217270569
313. x = [0.764052580862826, 0.5822322944659357], f([0.764052580862826, 0.5822322944659357]) = 0.05590959421126847
314. x = [0.7640525814412245, 0.5837763479111554], f([0.7640525814412245, 0.5837763479111554]) = 0.055671184324550066
315. x = [0.7650567367932452, 0.5837763476114776], f([0.7650567367932452, 0.5837763476114776]) = 0.05543410155835036
316. x = [0.7650567369519161, 0.5853118108817936], f([0.7650567369519161, 0.5853118108817936]) = 0.055198336851681136
317. x = [0.7660540226507982, 0.5853118108281903], f([0.7660540226507982, 0.5853118108281903]) = 0.05496387941133433
318. x = [0.7660540227037593, 0.5868387657024038], f([0.7660540227037593, 0.5868387657024038]) = 0.05473072029309316
319. x = [0.7670445177052567, 0.5868387657016451], f([0.7670445177052567, 0.5868387657016451]) = 0.05449884898608796
320. x = [0.7670445177665505, 0.5883572922241662], f([0.7670445177665505, 0.5883572922241662]) = 0.05426825670261902
321. x = [0.7680282997918001, 0.5883572922290454], f([0.7680282997918001, 0.5883572922290454]) = 0.0540389331703331
322. x = [0.7680282993665601, 0.5898674684538865], f([0.7680282993665601, 0.5898674684538865]) = 0.05381086989477024
323. x = [0.7690054439459735, 0.589867468527183], f([0.7690054439459735, 0.589867468527183]) = 0.05358405657663759
324. x = [0.7690054443538296, 0.5913693738043562], f([0.7690054443538296, 0.5913693738043562]) = 0.053358484738171744
325. x = [0.7699760270624135, 0.5913693736537127], f([0.7699760270624135, 0.5913693736537127]) = 0.053134144663298306
326. x = [0.7699760271694124, 0.592863082331947], f([0.7699760271694124, 0.592863082331947]) = 0.05291102807676691
327. x = [0.7709401212822132, 0.5928630823670048], f([0.7709401212822132, 0.5928630823670048]) = 0.05268912527879106
328. x = [0.7709401209202891, 0.5943486697889054], f([0.7709401209202891, 0.5943486697889054]) = 0.0524684282040118
329. x = [0.7718977985019417, 0.5943486698958047], f([0.7718977985019417, 0.5943486698958047]) = 0.05224892719787079
330. x = [0.7718977985531107, 0.5958262119621796], f([0.7718977985531107, 0.5958262119621796]) = 0.052030614304917296
331. x = [0.772849130970564, 0.5958262117323603], f([0.772849130970564, 0.5958262117323603]) = 0.051813480167353904
332. x = [0.7728491317154724, 0.5972957814691553], f([0.7728491317154724, 0.5972957814691553]) = 0.051597516962414915
333. x = [0.7737941891004033, 0.5972957810215727], f([0.7737941891004033, 0.5972957810215727]) = 0.05138271565300259
334. x = [0.7737941897959774, 0.5987574490288361], f([0.7737941897959774, 0.5987574490288361]) = 0.05116906857005839
335. x = [0.7747330407456483, 0.5987574486690677], f([0.7747330407456483, 0.5987574486690677]) = 0.05095656677164246
336. x = [0.7747330411494172, 0.6002112852100926], f([0.7747330411494172, 0.6002112852100926]) = 0.05074520274979016
337. x = [0.7756657533111521, 0.6002112851432372], f([0.7756657533111521, 0.6002112851432372]) = 0.0505349677352437
338. x = [0.7756657529580423, 0.6016573597986332], f([0.7756657529580423, 0.6016573597986332]) = 0.050325854395882136
339. x = [0.7765923926830298, 0.6016573600106719], f([0.7765923926830298, 0.6016573600106719]) = 0.050117853964516595
340. x = [0.7765923920488861, 0.603095742514851], f([0.7765923920488861, 0.603095742514851]) = 0.04991095929043869
341. x = [0.7775130245697772, 0.603095742874751], f([0.7775130245697772, 0.603095742874751]) = 0.04970516179717981
342. x = [0.7775130244751125, 0.6045265032888385], f([0.7775130244751125, 0.6045265032888385]) = 0.04950045427821189
343. x = [0.7784277148248033, 0.6045265032640061], f([0.7784277148248033, 0.6045265032640061]) = 0.04929682850419798
344. x = [0.7784277148898379, 0.6059497072846644], f([0.7784277148898379, 0.6059497072846644]) = 0.049094277528938975
345. x = [0.7793365261573387, 0.6059497072944879], f([0.7793365261573387, 0.6059497072944879]) = 0.048892793218754435
346. x = [0.7793365260885334, 0.6073654206537071], f([0.7793365260885334, 0.6073654206537071]) = 0.04869236871867649
347. x = [0.780239520510303, 0.6073654207527527], f([0.780239520510303, 0.6073654207527527]) = 0.048492996027403285
348. x = [0.7802395204402894, 0.6087737092807065], f([0.7802395204402894, 0.6087737092807065]) = 0.048294668376313965
349. x = [0.7811367595594708, 0.6087737092709838], f([0.7811367595594708, 0.6087737092709838]) = 0.04809737790416632
350. x = [0.7811367594596178, 0.6101746365287984], f([0.7811367594596178, 0.6101746365287984]) = 0.04790111805983722
351. x = [0.782028303471418, 0.6101746367122187], f([0.782028303471418, 0.6101746367122187]) = 0.04770588114540969
352. x = [0.7820283031043188, 0.611568266567989], f([0.7820283031043188, 0.611568266567989]) = 0.04751166064758272
353. x = [0.7829142115791345, 0.6115682666851358], f([0.7829142115791345, 0.6115682666851358]) = 0.04731844892325389
354. x = [0.7829142111891376, 0.6129546616752468], f([0.7829142111891376, 0.6129546616752468]) = 0.04712623970363435
355. x = [0.7837945426899662, 0.6129546618401578], f([0.7837945426899662, 0.6129546618401578]) = 0.04693502546464018
356. x = [0.7837945418553595, 0.6143338824171756], f([0.7837945418553595, 0.6143338824171756]) = 0.04674480013153411
357. x = [0.784669353572884, 0.6143338829937918], f([0.784669353572884, 0.6143338829937918]) = 0.04655555627183733
358. x = [0.7846693524396178, 0.6157059910116148], f([0.7846693524396178, 0.6157059910116148]) = 0.046367287778773816
359. x = [0.7855387011306229, 0.61570599167631], f([0.7855387011306229, 0.61570599167631]) = 0.04617998740135746
360. x = [0.7855387003039929, 0.6170710485455247], f([0.7855387003039929, 0.6170710485455247]) = 0.04599364906730072
361. x = [0.7864026421396461, 0.6170710490006415], f([0.7864026421396461, 0.6170710490006415]) = 0.04580826576403408
362. x = [0.7864026414506574, 0.6184291133412136], f([0.7864026414506574, 0.6184291133412136]) = 0.04562383157925655
363. x = [0.7872612314043654, 0.6184291137991977], f([0.7872612314043654, 0.6184291137991977]) = 0.0454403396136242
364. x = [0.7872612303462622, 0.6197802430998092], f([0.7872612303462622, 0.6197802430998092]) = 0.04525778411378642
365. x = [0.7881145224176668, 0.6197802437842852], f([0.7881145224176668, 0.6197802437842852]) = 0.0450761582074496
366. x = [0.7881145208001762, 0.6211244952215355], f([0.7881145208001762, 0.6211244952215355]) = 0.04489545629573968
367. x = [0.7889625678678787, 0.6211244962919976], f([0.7889625678678787, 0.6211244962919976]) = 0.04471567158856578
368. x = [0.7889625664064728, 0.6224619292580903], f([0.7889625664064728, 0.6224619292580903]) = 0.04453679837774279
369. x = [0.7898054214447584, 0.6224619300299449], f([0.7898054214447584, 0.6224619300299449]) = 0.04435883010721891
370. x = [0.7898054206039817, 0.623792600917227], f([0.7898054206039817, 0.623792600917227]) = 0.04418176120746925
371. x = [0.7906431354819258, 0.6237926015143264], f([0.7906431354819258, 0.6237926015143264]) = 0.044005585362866244
372. x = [0.7906431345986905, 0.6251165648948427], f([0.7906431345986905, 0.6251165648948427]) = 0.04383029709066221
373. x = [0.7914757603143369, 0.625116565448928], f([0.7914757603143369, 0.625116565448928]) = 0.04365589007918055
374. x = [0.7914757589609471, 0.6264338750839592], f([0.7914757589609471, 0.6264338750839592]) = 0.043482359100913394
375. x = [0.7923033454166931, 0.6264338758534461], f([0.7923033454166931, 0.6264338758534461]) = 0.04330969778618346
376. x = [0.7923033437203926, 0.6277445860647417], f([0.7923033437203926, 0.6277445860647417]) = 0.04313790102972997
377. x = [0.793125940282482, 0.627744587017566], f([0.793125940282482, 0.627744587017566]) = 0.04296696255717216
378. x = [0.7931259385561463, 0.6290487516880698], f([0.7931259385561463, 0.6290487516880698]) = 0.04279687729827609
379. x = [0.7939435939605296, 0.6290487527641206], f([0.7939435939605296, 0.6290487527641206]) = 0.04262763919222362
380. x = [0.793943592343217, 0.6303464253696573], f([0.793943592343217, 0.6303464253696573]) = 0.042459243136418946
381. x = [0.7947563547604379, 0.6303464263372897], f([0.7947563547604379, 0.6303464263372897]) = 0.04229168323472438
382. x = [0.7947563534396335, 0.6316376593399291], f([0.7947563534396335, 0.6316376593399291]) = 0.042124954453397055
383. x = [0.7955642704077476, 0.6316376601243463], f([0.7955642704077476, 0.6316376601243463]) = 0.04195905103006191
384. x = [0.7955642690221575, 0.632922503742974], f([0.7955642690221575, 0.632922503742974]) = 0.041793968100445375
385. x = [0.7963673866660084, 0.6329225046865078], f([0.7963673866660084, 0.6329225046865078]) = 0.041629699959120456
386. x = [0.7963673856892879, 0.6342010114101619], f([0.7963673856892879, 0.6342010114101619]) = 0.04146624161101548
387. x = [0.7971657505075348, 0.6342010120293958], f([0.7971657505075348, 0.6342010120293958]) = 0.04130358758601291
388. x = [0.7971657497856228, 0.6354732315189393], f([0.7971657497856228, 0.6354732315189393]) = 0.04114173306002869
389. x = [0.7979594068234208, 0.635473231954178], f([0.7979594068234208, 0.635473231954178]) = 0.040980672582672996
390. x = [0.7979594066935715, 0.6367392146256455], f([0.7979594066935715, 0.6367392146256455]) = 0.04082040134361366
391. x = [0.7987484013667543, 0.6367392146666928], f([0.7987484013667543, 0.6367392146666928]) = 0.04066091404953154
392. x = [0.7987484004352298, 0.6379990058100008], f([0.7987484004352298, 0.6379990058100008]) = 0.04050220632737882
393. x = [0.7995327754096067, 0.6379990063509089], f([0.7995327754096067, 0.6379990063509089]) = 0.04034427261994617
394. x = [0.7995327749649119, 0.6392526575337577], f([0.7995327749649119, 0.6392526575337577]) = 0.04018710831326869
395. x = [0.8003125747380975, 0.6392526578096829], f([0.8003125747380975, 0.6392526578096829]) = 0.04003070827190449
396. x = [0.8003125739207827, 0.6405002144020442], f([0.8003125739207827, 0.6405002144020442]) = 0.03987506813414313
397. x = [0.8010878405341222, 0.6405002150130045], f([0.8010878405341222, 0.6405002150130045]) = 0.03972018269554534
398. x = [0.8010878398101433, 0.6417417259001986], f([0.8010878398101433, 0.6417417259001986]) = 0.039566047471395346
399. x = [0.8018586159005837, 0.6417417263618937], f([0.8018586159005837, 0.6417417263618937]) = 0.03941265746163413
400. x = [0.8018586154000166, 0.6429772383313306], f([0.8018586154000166, 0.6429772383313306]) = 0.039260008291198606
401. x = [0.8026249426816437, 0.6429772386252285], f([0.8026249426816437, 0.6429772386252285]) = 0.03910809502819825
402. x = [0.8026249422226625, 0.6442067971135748], f([0.8026249422226625, 0.6442067971135748]) = 0.03895691343260739
403. x = [0.8033868615800503, 0.644206797408637], f([0.8033868615800503, 0.644206797408637]) = 0.03880645860901341
404. x = [0.8033868611634017, 0.6454304478987335], f([0.8033868611634017, 0.6454304478987335]) = 0.038656726363179524
405. x = [0.8041444130157326, 0.6454304482036027], f([0.8041444130157326, 0.6454304482036027]) = 0.03850771190441967
406. x = [0.8041444127969252, 0.6466482364574012], f([0.8041444127969252, 0.6466482364574012]) = 0.03835941103866125
407. x = [0.8048976372241726, 0.6466482365247455], f([0.8048976372241726, 0.6466482365247455]) = 0.03821181906075808
408. x = [0.8048976374593945, 0.6478602069258494], f([0.8048976374593945, 0.6478602069258494]) = 0.03806493186892588
409. x = [0.8056465738920364, 0.647860206872824], f([0.8056465738920364, 0.647860206872824]) = 0.037918744914170036
410. x = [0.8056465741711739, 0.6490664029014095], f([0.8056465741711739, 0.6490664029014095]) = 0.03777325413140102
411. x = [0.8063912614686405, 0.6490664027375465], f([0.8063912614686405, 0.6490664027375465]) = 0.03762845497772398
412. x = [0.8063912617607404, 0.6502668675315586], f([0.8063912617607404, 0.6502668675315586]) = 0.03748434352259817
413. x = [0.8071317383734041, 0.6502668673451171], f([0.8071317383734041, 0.6502668673451171]) = 0.03734091525084301
414. x = [0.8071317381423302, 0.6514616427949013], f([0.8071317381423302, 0.6514616427949013]) = 0.03719816643199869
415. x = [0.8078680415002355, 0.6514616427650312], f([0.8078680415002355, 0.6514616427650312]) = 0.0370560924242453
416. x = [0.8078680413015487, 0.6526507718783089], f([0.8078680413015487, 0.6526507718783089]) = 0.03691468955330342
417. x = [0.8086002087308326, 0.6526507719842829], f([0.8086002087308326, 0.6526507719842829]) = 0.036773953376611046
418. x = [0.8086002085891323, 0.6538342970473581], f([0.8086002085891323, 0.6538342970473581]) = 0.036633880152123675
419. x = [0.8093282770234427, 0.6538342971550204], f([0.8093282770234427, 0.6538342971550204]) = 0.03649446558684575
420. x = [0.8093282769903749, 0.6550122599182672], f([0.8093282769903749, 0.6550122599182672]) = 0.03635570595545919
421. x = [0.8100522829114295, 0.6550122599250799], f([0.8100522829114295, 0.6550122599250799]) = 0.03621759704630435
422. x = [0.8100522828626436, 0.6561847009788865], f([0.8100522828626436, 0.6561847009788865]) = 0.036080135245693146
423. x = [0.8107722620113488, 0.6561847009758898], f([0.8107722620113488, 0.6561847009758898]) = 0.0359433163583796
424. x = [0.8107722620024836, 0.6573516607761996], f([0.8107722620024836, 0.6573516607761996]) = 0.035807136827656696
425. x = [0.8114882497896915, 0.657351660797549], f([0.8114882497896915, 0.657351660797549]) = 0.035671592547825204
426. x = [0.8114882496580422, 0.6585131789615306], f([0.8114882496580422, 0.6585131789615306]) = 0.035536680016988634
427. x = [0.8122002808265241, 0.6585131791018667], f([0.8122002808265241, 0.6585131791018667]) = 0.035402395190242505
428. x = [0.812200280795837, 0.6596692958072924], f([0.812200280795837, 0.6596692958072924]) = 0.035268734533162496
429. x = [0.8129083899445153, 0.6596692959270242], f([0.8129083899445153, 0.6596692959270242]) = 0.03513569414856965
430. x = [0.81290839004479, 0.6608200507187802], f([0.81290839004479, 0.6608200507187802]) = 0.035003270515632436
431. x = [0.8136126113535671, 0.6608200506760328], f([0.8136126113535671, 0.6608200506760328]) = 0.03487145979014089
432. x = [0.8136126115506795, 0.661965481973697], f([0.8136126115506795, 0.661965481973697]) = 0.034740258572957886
433. x = [0.8143129785016552, 0.6619654818612024], f([0.8143129785016552, 0.6619654818612024]) = 0.034609663036699934
434. x = [0.8143129788201156, 0.6631056282408125], f([0.8143129788201156, 0.6631056282408125]) = 0.03447966983465891
435. x = [0.8150095246988519, 0.6631056279535013], f([0.8150095246988519, 0.6631056279535013]) = 0.03435027516216825
436. x = [0.8150095250767061, 0.6642405267282003], f([0.8150095250767061, 0.6642405267282003]) = 0.034221475812345886
437. x = [0.8157022825010194, 0.6642405264426791], f([0.8157022825010194, 0.6642405264426791]) = 0.034093268000157065
438. x = [0.8157022827643056, 0.6653702147093262], f([0.8157022827643056, 0.6653702147093262]) = 0.033965648578288016
439. x = [0.816391283962847, 0.6653702144841076], f([0.816391283962847, 0.6653702144841076]) = 0.03383861378886658
440. x = [0.8163912841908721, 0.6664947295577336], f([0.8163912841908721, 0.6664947295577336]) = 0.03371216052107712
441. x = [0.8170765610211917, 0.666494729313303], f([0.8170765610211917, 0.666494729313303]) = 0.03358628507216347
442. x = [0.817076561571851, 0.6676141082363024], f([0.817076561571851, 0.6676141082363024]) = 0.033460984326376855
443. x = [0.8177581455557039, 0.667614107950803], f([0.8177581455557039, 0.667614107950803]) = 0.033336254761450225
444. x = [0.8177581464504499, 0.6687283871896142], f([0.8177581464504499, 0.6687283871896142]) = 0.0332120931851758
445. x = [0.818436069022436, 0.6687283867791086], f([0.818436069022436, 0.6687283867791086]) = 0.03308849622418225
446. x = [0.8184360696267852, 0.6698376010130439], f([0.8184360696267852, 0.6698376010130439]) = 0.032965460812569694
447. x = [0.81911036117316, 0.6698376006613833], f([0.81911036117316, 0.6698376006613833]) = 0.03284298347111887
448. x = [0.8191103618932408, 0.6709417861194529], f([0.8191103618932408, 0.6709417861194529]) = 0.03272106117439443
449. x = [0.8197810529246727, 0.6709417856898836], f([0.8197810529246727, 0.6709417856898836]) = 0.03259969054047282
450. x = [0.8197810536910625, 0.6720409772366025], f([0.8197810536910625, 0.6720409772366025]) = 0.03247886860870386
451. x = [0.8204481739113171, 0.6720409767754524], f([0.8204481739113171, 0.6720409767754524]) = 0.03235859202765141
452. x = [0.8204481753118622, 0.6731352109306216], f([0.8204481753118622, 0.6731352109306216]) = 0.03223885774884042
453. x = [0.8211117549323425, 0.6731352099852284], f([0.8211117549323425, 0.6731352099852284]) = 0.03211966256623332
454. x = [0.821111756575947, 0.6742245197035001], f([0.821111756575947, 0.6742245197035001]) = 0.03200100363534408
455. x = [0.8217718245717512, 0.6742245186274503], f([0.8217718245717512, 0.6742245186274503]) = 0.031882877678995745
456. x = [0.821771826173371, 0.6753089372320082], f([0.821771826173371, 0.6753089372320082]) = 0.031765281945575964
457. x = [0.822428411252509, 0.6753089361490413], f([0.822428411252509, 0.6753089361490413]) = 0.03164821313510481
458. x = [0.822428412933105, 0.6763884975073691], f([0.822428412933105, 0.6763884975073691]) = 0.03153166853345684
459. x = [0.8230815437325418, 0.6763884963643197], f([0.8230815437325418, 0.6763884963643197]) = 0.031415644898079395
460. x = [0.8230815453515415, 0.6774632331734491], f([0.8230815453515415, 0.6774632331734491]) = 0.03130013959519948
461. x = [0.8237312498833597, 0.6774632321175931], f([0.8237312498833597, 0.6774632321175931]) = 0.031185149410240677
462. x = [0.8237312514945884, 0.6785331775500072], f([0.8237312514945884, 0.6785331775500072]) = 0.031070671699664876
463. x = [0.8243775578244675, 0.6785331765009358], f([0.8243775578244675, 0.6785331765009358]) = 0.030956703325194363
464. x = [0.8243775590567123, 0.6795983616567502], f([0.8243775590567123, 0.6795983616567502]) = 0.030843241762878896
465. x = [0.825020494106961, 0.6795983610049486], f([0.825020494106961, 0.6795983610049486]) = 0.030730283897854132
466. x = [0.8250204954587037, 0.6806588203096586], f([0.8250204954587037, 0.6806588203096586]) = 0.0306178270095181
467. x = [0.82566008695381, 0.6806588194387151], f([0.82566008695381, 0.6806588194387151]) = 0.030505868145895104
468. x = [0.825660088710542, 0.6817145852667111], f([0.825660088710542, 0.6817145852667111]) = 0.030394404668417103
469. x = [0.8262963635797936, 0.6817145841071526], f([0.8262963635797936, 0.6817145841071526]) = 0.0302834336609913
470. x = [0.8262963657471735, 0.6827656877821302], f([0.8262963657471735, 0.6827656877821302]) = 0.030172952552641127
471. x = [0.8269293504664535, 0.6827656864210301], f([0.8269293504664535, 0.6827656864210301]) = 0.03006295847090877
472. x = [0.8269293529702251, 0.6838121587263324], f([0.8269293529702251, 0.6838121587263324]) = 0.02995344886330648
473. x = [0.8275590736447817, 0.6838121572991009], f([0.8275590736447817, 0.6838121572991009]) = 0.029844420948473123
474. x = [0.8275590764297283, 0.6848540295345511], f([0.8275590764297283, 0.6848540295345511]) = 0.029735872121770375
475. x = [0.828185559029153, 0.6848540278803225], f([0.828185559029153, 0.6848540278803225]) = 0.02962779965854087
476. x = [0.8281855624253911, 0.6858913319524577], f([0.8281855624253911, 0.6858913319524577]) = 0.029520200959082955
477. x = [0.8288088331550267, 0.6858913297241945], f([0.8288088331550267, 0.6858913297241945]) = 0.02941307331466942
478. x = [0.8288088365457933, 0.6869240932760681], f([0.8288088365457933, 0.6869240932760681]) = 0.029306414444808214
479. x = [0.8294289198595102, 0.6869240911970719], f([0.8294289198595102, 0.6869240911970719]) = 0.029200221521245993
480. x = [0.8294289235202971, 0.687952345293409], f([0.8294289235202971, 0.687952345293409]) = 0.029094492131448414
481. x = [0.8300458450032187, 0.687952343079445], f([0.8300458450032187, 0.687952343079445]) = 0.028989223608172583
482. x = [0.8300458482165807, 0.6889761153066112], f([0.8300458482165807, 0.6889761153066112]) = 0.028884413708424202
483. x = [0.8306596320214358, 0.6889761134412877], f([0.8306596320214358, 0.6889761134412877]) = 0.02878005968366591
484. x = [0.8306596349854843, 0.6899954341101555], f([0.8306596349854843, 0.6899954341101555]) = 0.028676159223251816
485. x = [0.831270305793333, 0.6899954323373916], f([0.831270305793333, 0.6899954323373916]) = 0.028572709666447423
486. x = [0.8312703086292442, 0.6910103309024049], f([0.8312703086292442, 0.6910103309024049]) = 0.02846970875007289
487. x = [0.831877890639315, 0.691010329140179], f([0.831877890639315, 0.691010329140179]) = 0.028367153830923426
488. x = [0.8318778935131629, 0.6920208345015866], f([0.8318778935131629, 0.6920208345015866]) = 0.02826504268957369
489. x = [0.8324824104883095, 0.6920208327808035], f([0.8324824104883095, 0.6920208327808035]) = 0.028163372753037607
490. x = [0.8324824136771141, 0.6930269744212995], f([0.8324824136771141, 0.6930269744212995]) = 0.028062141727448392
491. x = [0.833083889747839, 0.6930269725041037], f([0.833083889747839, 0.6930269725041037]) = 0.027961347154518562
492. x = [0.8330838925441769, 0.6940287765405109], f([0.8330838925441769, 0.6940287765405109]) = 0.027860986928205926
493. x = [0.8336823503803412, 0.6940287749185087], f([0.8336823503803412, 0.6940287749185087]) = 0.02776105849025371
494. x = [0.833682353235069, 0.6950262709651711], f([0.833682353235069, 0.6950262709651711]) = 0.02766155962542673
495. x = [0.8342778162991177, 0.6950262692217254], f([0.8342778162991177, 0.6950262692217254]) = 0.027562487896467792
496. x = [0.8342778194262195, 0.6960194851397331], f([0.8342778194262195, 0.6960194851397331]) = 0.027463841134131372
497. x = [0.8348703106477755, 0.696019483297379], f([0.8348703106477755, 0.696019483297379]) = 0.02736561697146828
498. x = [0.834870313707261, 0.6970084459276101], f([0.834870313707261, 0.6970084459276101]) = 0.027267813295141136
499. x = [0.8354598555060428, 0.6970084440647208], f([0.8354598555060428, 0.6970084440647208]) = 0.027170427698793614
500. x = [0.8354598587048284, 0.697993180967433], f([0.8354598587048284, 0.697993180967433]) = 0.027073458097438007
501. x = [0.8360464734374556, 0.6979931790207355], f([0.8360464734374556, 0.6979931790207355]) = 0.026976902138427263
502. x = [0.8360464768795669, 0.698973717053655], f([0.8360464768795669, 0.698973717053655]) = 0.02688075774360547
503. x = [0.8366301864756044, 0.6989737150774205], f([0.8366301864756044, 0.6989737150774205]) = 0.02678502265401827
504. x = [0.8366301904124454, 0.6999500820133946], f([0.8366301904124454, 0.6999500820133946]) = 0.026689694684678092
505. x = [0.8372110173647594, 0.6999500797011102], f([0.8372110173647594, 0.6999500797011102]) = 0.026594771686687158
506. x = [0.8372110208680454, 0.7009222991001245], f([0.8372110208680454, 0.7009222991001245]) = 0.026500251726827115
507. x = [0.8377889859805139, 0.7009222970987042], f([0.8377889859805139, 0.7009222970987042]) = 0.02640613249355187
508. x = [0.8377889893077147, 0.7018903961507565], f([0.8377889893077147, 0.7018903961507565]) = 0.02631241198981576
509. x = [0.838364114083198, 0.7018903941845864], f([0.838364114083198, 0.7018903941845864]) = 0.02621908798179231
510. x = [0.8383641176650077, 0.7028543996580426], f([0.8383641176650077, 0.7028543996580426]) = 0.02612615845821491
511. x = [0.8389364235179634, 0.7028543975797236], f([0.8389364235179634, 0.7028543975797236]) = 0.026033621293819975
512. x = [0.8389364269797503, 0.7038143345305289], f([0.8389364269797503, 0.7038143345305289]) = 0.025941474554052914
513. x = [0.8395059347774435, 0.7038143324029871], f([0.8395059347774435, 0.7038143324029871]) = 0.025849716035076784
514. x = [0.8395059379983492, 0.7047702252610712], f([0.8395059379983492, 0.7047702252610712]) = 0.025758343937792583
515. x = [0.8400726681358398, 0.7047702233801802], f([0.8400726681358398, 0.7047702233801802]) = 0.025667356054827114
516. x = [0.8400726709746953, 0.7057220975110072], f([0.8400726709746953, 0.7057220975110072]) = 0.02557675056917056
517. x = [0.8406366437364289, 0.7057220957504637], f([0.8406366437364289, 0.7057220957504637]) = 0.025486525270813055
518. x = [0.8406366470362471, 0.7066699780076823], f([0.8406366470362471, 0.7066699780076823]) = 0.025396678267852912
519. x = [0.8411978831105457, 0.7066699760118058], f([0.8411978831105457, 0.7066699760118058]) = 0.025307207528669294
520. x = [0.8411978866460682, 0.7076138904874616], f([0.8411978866460682, 0.7076138904874616]) = 0.02521811120567859
521. x = [0.841756405932859, 0.7076138883808688], f([0.841756405932859, 0.7076138883808688]) = 0.025129387270507352
522. x = [0.8417564096151705, 0.7085538593160376], f([0.8417564096151705, 0.7085538593160376]) = 0.02504103389788553
523. x = [0.8423122317355384, 0.7085538571426152], f([0.8423122317355384, 0.7085538571426152]) = 0.024953049084177868
524. x = [0.8423122359129895, 0.7094899099314845], f([0.8423122359129895, 0.7094899099314845]) = 0.024865430942765797
525. x = [0.8428653809563751, 0.7094899074189203], f([0.8428653809563751, 0.7094899074189203]) = 0.024778177558449827
526. x = [0.8428653850243252, 0.7104220643161542], f([0.8428653850243252, 0.7104220643161542]) = 0.024691287223558532
527. x = [0.8434158716255856, 0.7104220618484797], f([0.8434158716255856, 0.7104220618484797]) = 0.024604757900869047
528. x = [0.8434158764913244, 0.711350348787019], f([0.8434158764913244, 0.711350348787019]) = 0.024518587734986677
529. x = [0.8439637248380706, 0.7113503459637676], f([0.8439637248380706, 0.7113503459637676]) = 0.02443277493229108
530. x = [0.8439637288375411, 0.7122747821379697], f([0.8439637288375411, 0.7122747821379697]) = 0.02434731791828868
531. x = [0.8445089566809133, 0.712274779851146], f([0.8445089566809133, 0.712274779851146]) = 0.02426221463184357
532. x = [0.8445089604945109, 0.7131953909834191], f([0.8445089604945109, 0.7131953909834191]) = 0.024177463366501978
533. x = [0.8450515871613341, 0.7131953886704567], f([0.8450515871613341, 0.7131953886704567]) = 0.024093062185586912
534. x = [0.8450515909640354, 0.71411219776822], f([0.8450515909640354, 0.71411219776822]) = 0.024009009462780673
535. x = [0.8455916348854702, 0.7141121955455206], f([0.8455916348854702, 0.7141121955455206]) = 0.02392530330242065
536. x = [0.8455916387124625, 0.7150252259745824], f([0.8455916387124625, 0.7150252259745824]) = 0.023841942035506967
537. x = [0.8461291181574911, 0.7150252237070891], f([0.8461291181574911, 0.7150252237070891]) = 0.023758923815033115
538. x = [0.8461291227512061, 0.7159345002639975], f([0.8461291227512061, 0.7159345002639975]) = 0.023676246865319633
539. x = [0.8466640566507289, 0.7159344975188733], f([0.8466640566507289, 0.7159344975188733]) = 0.023593909492892532
540. x = [0.8466640612407119, 0.7168400402614777], f([0.8466640612407119, 0.7168400402614777]) = 0.023511910115198018
541. x = [0.8471964669467138, 0.7168400376001437], f([0.8471964669467138, 0.7168400376001437]) = 0.023430246924587922
542. x = [0.8471964716076474, 0.7177418691487145], f([0.8471964716076474, 0.7177418691487145]) = 0.02334891828915834
543. x = [0.8477263671875923, 0.7177418664978406], f([0.8477263671875923, 0.7177418664978406]) = 0.023267922483554967
544. x = [0.8477263714221019, 0.7186400079579396], f([0.8477263714221019, 0.7186400079579396]) = 0.023187257960284768
545. x = [0.8482537741484146, 0.7186400054803457], f([0.8482537741484146, 0.7186400054803457]) = 0.023106922907300095
546. x = [0.8482537784745601, 0.719534480336304], f([0.8482537784745601, 0.719534480336304]) = 0.023026915747253723
547. x = [0.8487787061217521, 0.7195344776934841], f([0.8487787061217521, 0.7195344776934841]) = 0.022947234728972546
548. x = [0.8487787106898559, 0.7204253075859967], f([0.8487787106898559, 0.7204253075859967]) = 0.022867878340628492
549. x = [0.8493011805679681, 0.7204253048684326], f([0.8493011805679681, 0.7204253048684326]) = 0.02278884486690437
550. x = [0.8493011849764994, 0.7213125102347266], f([0.8493011849764994, 0.7213125102347266]) = 0.022710132849492765
551. x = [0.8498212137581697, 0.7213125076700438], f([0.8498212137581697, 0.7213125076700438]) = 0.022631740556488773
552. x = [0.8498212185055974, 0.7221961115821429], f([0.8498212185055974, 0.7221961115821429]) = 0.022553666411150166
553. x = [0.8503388238238434, 0.7221961087698154], f([0.8503388238238434, 0.7221961087698154]) = 0.02247590880411999
554. x = [0.8503388281464063, 0.7230761297744366], f([0.8503388281464063, 0.7230761297744366]) = 0.02239846636059599
555. x = [0.8508540259235495, 0.7230761273230922], f([0.8508540259235495, 0.7230761273230922]) = 0.022321337361099352
556. x = [0.8508540302667199, 0.7239525880071381], f([0.8508540302667199, 0.7239525880071381]) = 0.022244520287685664
557. x = [0.851366837533842, 0.7239525855363963], f([0.851366837533842, 0.7239525855363963]) = 0.022168013563255182
558. x = [0.8513668418386322, 0.7248255066707016], f([0.8513668418386322, 0.7248255066707016]) = 0.022091815705027485
559. x = [0.8518772749611748, 0.724825504167749], f([0.8518772749611748, 0.724825504167749]) = 0.022015925122841774
560. x = [0.8518772794263467, 0.7256949071015543], f([0.8518772794263467, 0.7256949071015543]) = 0.021940340350146807
561. x = [0.8523853546427204, 0.7256949043922417], f([0.8523853546427204, 0.7256949043922417]) = 0.021865059799051657
562. x = [0.852385359885328, 0.7265608108453301], f([0.852385359885328, 0.7265608108453301]) = 0.021790081976192397
563. x = [0.8528910938510619, 0.726560807728182], f([0.8528910938510619, 0.726560807728182]) = 0.02171540541093583
564. x = [0.8528910988828797, 0.7274232350325383], f([0.8528910988828797, 0.7274232350325383]) = 0.021641028787893857
565. x = [0.853394506827094, 0.7274232321310825], f([0.853394506827094, 0.7274232321310825]) = 0.021566950508340774
566. x = [0.8533945116633498, 0.7282822006137828], f([0.8533945116633498, 0.7282822006137828]) = 0.021493169210434204
567. x = [0.8538956094160033, 0.7282821978532068], f([0.8538956094160033, 0.7282821978532068]) = 0.02141968335580239
568. x = [0.8538956141502911, 0.7291377280689031], f([0.8538956141502911, 0.7291377280689031]) = 0.021346491564527337
569. x = [0.8543944174348697, 0.7291377252681362], f([0.8543944174348697, 0.7291377252681362]) = 0.021273592310023817
570. x = [0.8543944223671981, 0.7299898372433447], f([0.8543944223671981, 0.7299898372433447]) = 0.021200984237788746
571. x = [0.8548909467009584, 0.7299898344228514], f([0.8548909467009584, 0.7299898344228514]) = 0.02112866589512967
572. x = [0.8548909516187349, 0.7308385475420199], f([0.8548909516187349, 0.7308385475420199]) = 0.021056635922123375
573. x = [0.8553852124129118, 0.7308385446868793], f([0.8553852124129118, 0.7308385446868793]) = 0.02098489285970166
574. x = [0.8553852170891818, 0.7316838776865616], f([0.8553852170891818, 0.7316838776865616]) = 0.02091343543634959
575. x = [0.8558772293133607, 0.7316838749403601], f([0.8558772293133607, 0.7316838749403601]) = 0.020842262141682475
576. x = [0.8558772338564357, 0.7325258473007168], f([0.8558772338564357, 0.7325258473007168]) = 0.020771371720878725
577. x = [0.8563670125702972, 0.7325258446272739], f([0.8563670125702972, 0.7325258446272739]) = 0.020700762688978584
578. x = [0.8563670169874389, 0.7333644754880548], f([0.8563670169874389, 0.7333644754880548]) = 0.020630433809092606
579. x = [0.8568545771060888, 0.7333644728729364], f([0.8568545771060888, 0.7333644728729364]) = 0.020560383607684952
580. x = [0.8568545813295714, 0.7341997807029376], f([0.8568545813295714, 0.7341997807029376]) = 0.02049061088633742
581. x = [0.8573399373551146, 0.7341997782761133], f([0.8573399373551146, 0.7341997782761133]) = 0.02042111419453711
582. x = [0.8573399416305, 0.7350317827728774], f([0.8573399416305, 0.7350317827728774]) = 0.02035189225399442
583. x = [0.8578231083360324, 0.7350317803147687], f([0.8578231083360324, 0.7350317803147687]) = 0.020282943701127962
584. x = [0.8578231128597504, 0.7358605010327147], f([0.8578231128597504, 0.7358605010327147]) = 0.020214267236897784
585. x = [0.8583041049413677, 0.7358604983004778], f([0.8583041049413677, 0.7358604983004778]) = 0.020145861508363543
586. x = [0.858304109800374, 0.7366859531383018], f([0.858304109800374, 0.7366859531383018]) = 0.02007772529947126
587. x = [0.8587829416474121, 0.7366859503544383], f([0.8587829416474121, 0.7366859503544383]) = 0.02000985729325532
588. x = [0.8587829458612206, 0.7375081554706339], f([0.8587829458612206, 0.7375081554706339]) = 0.019942256379640377
589. x = [0.8592596310714358, 0.7375081529833628], f([0.8592596310714358, 0.7375081529833628]) = 0.019874921093510193
590. x = [0.8592596351850341, 0.738327127644628], f([0.8592596351850341, 0.738327127644628]) = 0.019807850288254568
591. x = [0.8597341879914446, 0.738327125288982], f([0.8597341879914446, 0.738327125288982]) = 0.019741042614585647
592. x = [0.8597341919980049, 0.739142888059762], f([0.8597341919980049, 0.739142888059762]) = 0.01967449689445768
593. x = [0.8602066264154806, 0.7391428856450651], f([0.8602066264154806, 0.7391428856450651]) = 0.019608211777093872
594. x = [0.8602066306484163, 0.7399554545282844], f([0.8602066306484163, 0.7399554545282844]) = 0.019542186114673368
595. x = [0.8606769604797238, 0.7399554521338888], f([0.8606769604797238, 0.7399554521338888]) = 0.01947641864284591
596. x = [0.860676964594165, 0.7407648446790587], f([0.860676964594165, 0.7407648446790587]) = 0.019410908194700878
597. x = [0.8611452035135131, 0.7407648422270192], f([0.8611452035135131, 0.7407648422270192]) = 0.01934565346445174
598. x = [0.8611452076995113, 0.741571075856656], f([0.8611452076995113, 0.741571075856656]) = 0.019280653344816913
599. x = [0.8616113691169217, 0.7415710734687704], f([0.8616113691169217, 0.7415710734687704]) = 0.019215906572696288
600. x = [0.8616113732887428, 0.7423741656580565], f([0.8616113732887428, 0.7423741656580565]) = 0.019151412003032695
601. x = [0.8620754706344858, 0.7423741632845666], f([0.8620754706344858, 0.7423741632845666]) = 0.019087168406528732
602. x = [0.86207547485666, 0.7431741316351966], f([0.86207547485666, 0.7431741316351966]) = 0.01902317463602113
603. x = [0.8625375215864469, 0.7431741291944578], f([0.8625375215864469, 0.7431741291944578]) = 0.018959429477774167
604. x = [0.8625375255839225, 0.7439709900254458], f([0.8625375255839225, 0.7439709900254458]) = 0.018895931872595643
605. x = [0.8629975347722498, 0.7439709876879783], f([0.8629975347722498, 0.7439709876879783]) = 0.018832680549167872
606. x = [0.8629975381779494, 0.7447647568257374], f([0.8629975381779494, 0.7447647568257374]) = 0.018769674545305932
607. x = [0.8634555224202136, 0.7447647548452446], f([0.8634555224202136, 0.7447647548452446]) = 0.018706912532100307
608. x = [0.8634555256543626, 0.7455554500938616], f([0.8634555256543626, 0.7455554500938616]) = 0.01864439347432926
609. x = [0.8639114979853015, 0.7455554483203983], f([0.8639114979853015, 0.7455554483203983]) = 0.018582116172096246
610. x = [0.8639115011815895, 0.7463430872955523], f([0.8639115011815895, 0.7463430872955523]) = 0.018520079510651443
611. x = [0.8643654746885397, 0.746343085486948], f([0.8643654746885397, 0.746343085486948]) = 0.01845828234382666
612. x = [0.8643654777844144, 0.7471276844994666], f([0.8643654777844144, 0.7471276844994666]) = 0.018396723616653003
613. x = [0.8648174651254829, 0.7471276827286499], f([0.8648174651254829, 0.7471276827286499]) = 0.018335402160259986
614. x = [0.8648174679047659, 0.7479092577596573], f([0.8648174679047659, 0.7479092577596573]) = 0.01827431698368147
615. x = [0.8652674814702631, 0.7479092561063712], f([0.8652674814702631, 0.7479092561063712]) = 0.018213466865020966
616. x = [0.8652674841522197, 0.748687823936185], f([0.8652674841522197, 0.748687823936185]) = 0.01815285082667469
617. x = [0.8657155364489985, 0.7486878223382702], f([0.8657155364489985, 0.7486878223382702]) = 0.018092467678600403
618. x = [0.8657155390507392, 0.7494633993700066], f([0.8657155390507392, 0.7494633993700066]) = 0.018032316452435877
619. x = [0.866161642263174, 0.7494633977700732], f([0.866161642263174, 0.7494633977700732]) = 0.01797239595865667
620. x = [0.8661616454165071, 0.7502360014960376], f([0.8661616454165071, 0.7502360014960376]) = 0.01791270515761981
621. x = [0.866605812304097, 0.7502359996689815], f([0.866605812304097, 0.7502359996689815]) = 0.017853242998967483
622. x = [0.866605815151842, 0.7510056439314196], f([0.866605815151842, 0.7510056439314196]) = 0.01779400855130713
623. x = [0.8670480573066781, 0.7510056422484399], f([0.8670480573066781, 0.7510056422484399]) = 0.017735000640941405
624. x = [0.8670480601023122, 0.7517723434976744], f([0.8670480601023122, 0.7517723434976744]) = 0.017676218322560867
625. x = [0.8674883896164962, 0.7517723418514856], f([0.8674883896164962, 0.7517723418514856]) = 0.017617660472127143
626. x = [0.8674883924506915, 0.7525361162723389], f([0.8674883924506915, 0.7525361162723389]) = 0.017559326135304684
627. x = [0.8679268213004742, 0.7525361145400786], f([0.8679268213004742, 0.7525361145400786]) = 0.01750121419857363
628. x = [0.8679268243430497, 0.7532969778465911], f([0.8679268243430497, 0.7532969778465911]) = 0.017443323728114607
629. x = [0.8683633643201615, 0.7532969760510455], f([0.8683633643201615, 0.7532969760510455]) = 0.017385653649961672
630. x = [0.8683633674643727, 0.7540549436228301], f([0.8683633674643727, 0.7540549436228301]) = 0.017328203025322984
631. x = [0.868798030240341, 0.7540549417510239], f([0.868798030240341, 0.7540549417510239]) = 0.017270970784755334
632. x = [0.8687980335527187, 0.7548100291721578], f([0.8687980335527187, 0.7548100291721578]) = 0.017213955999637216
633. x = [0.8692308307123773, 0.7548100271708182], f([0.8692308307123773, 0.7548100271708182]) = 0.017157157608053048
634. x = [0.8692308343500115, 0.7555622496579824], f([0.8692308343500115, 0.7555622496579824]) = 0.017100574684798073
635. x = [0.8696617774894825, 0.7555622475907099], f([0.8696617774894825, 0.7555622475907099]) = 0.01704420623352628
636. x = [0.8696617808495393, 0.7563116185943327], f([0.8696617808495393, 0.7563116185943327]) = 0.016988051371316582
637. x = [0.8700908808584153, 0.7563116167757522], f([0.8700908808584153, 0.7563116167757522]) = 0.016932109070859968
638. x = [0.8700908842920045, 0.7570581526417398], f([0.8700908842920045, 0.7570581526417398]) = 0.016876378344036616
639. x = [0.8705181529809605, 0.7570581507625297], f([0.8705181529809605, 0.7570581507625297]) = 0.016820858257568825
640. x = [0.8705181559484748, 0.7578018649505374], f([0.8705181559484748, 0.7578018649505374]) = 0.016765547938986103
641. x = [0.8709436038978615, 0.7578018632700061], f([0.8709436038978615, 0.7578018632700061]) = 0.016710446344781776
642. x = [0.8709436072836189, 0.7585427730996029], f([0.8709436072836189, 0.7585427730996029]) = 0.016655552500968434
643. x = [0.8713672462663522, 0.7585427711197588], f([0.8713672462663522, 0.7585427711197588]) = 0.01660086548995728
644. x = [0.8713672497182389, 0.7592808900893543], f([0.8713672497182389, 0.7592808900893543]) = 0.016546384445053772
645. x = [0.8717890904110593, 0.759280888053565], f([0.8717890904110593, 0.759280888053565]) = 0.016492108374128574
646. x = [0.871789093978178, 0.7600162308322771], f([0.871789093978178, 0.7600162308322771]) = 0.016438036422940623
647. x = [0.8722091472250638, 0.7600162287181252], f([0.8722091472250638, 0.7600162287181252]) = 0.016384167608899748
648. x = [0.8722091511068973, 0.7607488100621634], f([0.8722091511068973, 0.7607488100621634]) = 0.016330501060824405
649. x = [0.8726274278158684, 0.7607488078405276], f([0.8726274278158684, 0.7607488078405276]) = 0.016277035858701723
650. x = [0.8726274317507224, 0.7614786412847692], f([0.8726274317507224, 0.7614786412847692]) = 0.01622377114242128
651. x = [0.8730439427171842, 0.7614786391131984], f([0.8730439427171842, 0.7614786391131984]) = 0.016170706002557156
652. x = [0.8730439458334848, 0.7622057369454424], f([0.8730439458334848, 0.7622057369454424]) = 0.016117839689534272
653. x = [0.8734587010639969, 0.7622057351195941], f([0.8734587010639969, 0.7622057351195941]) = 0.016065171141433694
654. x = [0.8734587041332197, 0.7629301132353687], f([0.8734587041332197, 0.7629301132353687]) = 0.016012699559646956
655. x = [0.8738717144728383, 0.7629301114698787], f([0.8738717144728383, 0.7629301114698787]) = 0.015960423997765632
656. x = [0.8738717175092927, 0.7636517837349274], f([0.8738717175092927, 0.7636517837349274]) = 0.015908343644058232
657. x = [0.8742829934308827, 0.7636517820809807], f([0.8742829934308827, 0.7636517820809807]) = 0.015856457601775797
658. x = [0.8742829960971847, 0.7643707618097321], f([0.8742829960971847, 0.7643707618097321]) = 0.015804765070302533
659. x = [0.8746925477052142, 0.7643707603290846], f([0.8746925477052142, 0.7643707603290846]) = 0.01575326512123208
660. x = [0.8746925504864397, 0.7650870630974198], f([0.8746925504864397, 0.7650870630974198]) = 0.015701956903596194
661. x = [0.8751003882963307, 0.7650870613981721], f([0.8751003882963307, 0.7650870613981721]) = 0.01565083952425636
662. x = [0.8751003917867096, 0.7658007017621488], f([0.8751003917867096, 0.7658007017621488]) = 0.015599912131837102
663. x = [0.8755065263688028, 0.7658006997926518], f([0.8755065263688028, 0.7658006997926518]) = 0.01554917393727827
664. x = [0.8755065294840302, 0.7665116885002636], f([0.8755065294840302, 0.7665116885002636]) = 0.015498624201113488
665. x = [0.875910969982386, 0.7665116867683708], f([0.875910969982386, 0.7665116867683708]) = 0.015448262006614172
666. x = [0.8759109737361952, 0.7672200404653805], f([0.8759109737361952, 0.7672200404653805]) = 0.015398086439103533
667. x = [0.8763137309194666, 0.7672200383381963], f([0.8763137309194666, 0.7672200383381963]) = 0.015348096759453894
668. x = [0.8763137352121214, 0.7679257698599397], f([0.8763137352121214, 0.7679257698599397]) = 0.015298292097182599
669. x = [0.8767148189675492, 0.7679257674802653], f([0.8767148189675492, 0.7679257674802653]) = 0.015248671711509938
670. x = [0.8767148233230557, 0.7686288890584684], f([0.8767148233230557, 0.7686288890584684]) = 0.015199234788271178
671. x = [0.8771142434852939, 0.7686288865884368], f([0.8771142434852939, 0.7686288865884368]) = 0.01514998051524233
672. x = [0.8771142472664655, 0.7693294093203934], f([0.8771142472664655, 0.7693294093203934]) = 0.015100908224891695
673. x = [0.87751201275386, 0.7693294071961916], f([0.87751201275386, 0.7693294071961916]) = 0.015052016996395093
674. x = [0.8775120169022482, 0.7700273470150976], f([0.8775120169022482, 0.7700273470150976]) = 0.015003306003360318
675. x = [0.8779081382049783, 0.7700273446843268], f([0.8779081382049783, 0.7700273446843268]) = 0.01495477449660404
676. x = [0.8779081421755105, 0.7707227128835471], f([0.8779081421755105, 0.7707227128835471]) = 0.014906421747039962
677. x = [0.8783026285789107, 0.7707227106911342], f([0.8783026285789107, 0.7707227106911342]) = 0.014858246934436645
678. x = [0.8783026320073614, 0.771415519437039], f([0.8783026320073614, 0.771415519437039]) = 0.014810249376339362
679. x = [0.8786954925973076, 0.7714155174853068], f([0.8786954925973076, 0.7714155174853068]) = 0.014762428191642795
680. x = [0.8786954963901643, 0.7721057823668779], f([0.8786954963901643, 0.7721057823668779]) = 0.014714782596033527
681. x = [0.8790867413245859, 0.7721057801122394], f([0.8790867413245859, 0.7721057801122394]) = 0.014667311819099341
682. x = [0.8790867451991089, 0.7727935125065757], f([0.8790867451991089, 0.7727935125065757]) = 0.014620015186550006
683. x = [0.8794763833754705, 0.7727935102760715], f([0.8794763833754705, 0.7727935102760715]) = 0.014572891881762584
684. x = [0.8794763874997379, 0.7734787233450454], f([0.8794763874997379, 0.7734787233450454]) = 0.014525941170118486
685. x = [0.8798644284214852, 0.7734787210348413], f([0.8798644284214852, 0.7734787210348413]) = 0.01447916230870296
686. x = [0.8798644324391866, 0.7741614267785131], f([0.8798644324391866, 0.7741614267785131]) = 0.014432554593164112
687. x = [0.8802508852369041, 0.7741614244280243], f([0.8802508852369041, 0.7741614244280243]) = 0.014386117218804352
688. x = [0.8802508891851829, 0.7748416352848599], f([0.8802508891851829, 0.7748416352848599]) = 0.01433984954094478
689. x = [0.8806357627323161, 0.7748416329150257], f([0.8806357627323161, 0.7748416329150257]) = 0.014293750722800069
690. x = [0.8806357672838294, 0.7755193628077836], f([0.8806357672838294, 0.7755193628077836]) = 0.014247820051926832
691. x = [0.8810190711237914, 0.7755193601784094], f([0.8810190711237914, 0.7755193601784094]) = 0.014202056815406436
692. x = [0.8810190756008055, 0.7761946195005234], f([0.8810190756008055, 0.7761946195005234]) = 0.014156460370893121
693. x = [0.8814008182430234, 0.7761946169568973], f([0.8814008182430234, 0.7761946169568973]) = 0.0141110299385983
694. x = [0.8814008227815263, 0.7768674181585895], f([0.8814008227815263, 0.7768674181585895]) = 0.014065764836904946
695. x = [0.8817810133535336, 0.77686741567145], f([0.8817810133535336, 0.77686741567145]) = 0.014020664353737305
696. x = [0.8817810173344429, 0.7775377696571568], f([0.8817810173344429, 0.7775377696571568]) = 0.013975727862484364
697. x = [0.882159664385792, 0.7775377673748404], f([0.882159664385792, 0.7775377673748404]) = 0.013930954552764548
698. x = [0.8821596681098294, 0.7782056863760332], f([0.8821596681098294, 0.7782056863760332]) = 0.013886343819989579
699. x = [0.8825367802174598, 0.7782056843482841], f([0.8825367802174598, 0.7782056843482841]) = 0.013841894908861629
700. x = [0.8825367840461857, 0.7788711821271304], f([0.8825367840461857, 0.7788711821271304]) = 0.01379760710221721
701. x = [0.8829123704456902, 0.7788711799104849], f([0.8829123704456902, 0.7788711799104849]) = 0.013753479704351488
702. x = [0.8829123743102565, 0.7795342672040066], f([0.8829123743102565, 0.7795342672040066]) = 0.013709512089665702
703. x = [0.8832864430915198, 0.7795342651293928], f([0.8832864430915198, 0.7795342651293928]) = 0.013665703567271847
704. x = [0.8832864473773815, 0.7801949555040414], f([0.8832864473773815, 0.7801949555040414]) = 0.013622053365798192
705. x = [0.8836590076315033, 0.7801949531471921], f([0.8836590076315033, 0.7801949531471921]) = 0.013578560896153724
706. x = [0.8836590122159873, 0.7808532580740638], f([0.8836590122159873, 0.7808532580740638]) = 0.01353522543856652
707. x = [0.8840300726936869, 0.780853255457645], f([0.8840300726936869, 0.780853255457645]) = 0.013492046352925514
708. x = [0.8840300766191581, 0.7815091833619677], f([0.8840300766191581, 0.7815091833619677]) = 0.01344902312896323
709. x = [0.8843996448095918, 0.7815091811329514], f([0.8843996448095918, 0.7815091811329514]) = 0.01340615495965859
710. x = [0.8843996485132739, 0.7821627448373284], f([0.8843996485132739, 0.7821627448373284]) = 0.013363441263858902
711. x = [0.8847677329303604, 0.782162742752735], f([0.8847677329303604, 0.782162742752735]) = 0.013320881320303941
712. x = [0.884767736791935, 0.7828139550697094], f([0.884767736791935, 0.7828139550697094]) = 0.013278474484057676
713. x = [0.8851343461512926, 0.7828139528421276], f([0.8851343461512926, 0.7828139528421276]) = 0.013236220090822873
714. x = [0.8851343498733818, 0.7834628237867348], f([0.8851343498733818, 0.7834628237867348]) = 0.013194117579014838
715. x = [0.8854994920089311, 0.7834628217329046], f([0.8854994920089311, 0.7834628217329046]) = 0.013152166255236245
716. x = [0.8854994955683064, 0.784109363018827], f([0.8854994955683064, 0.784109363018827]) = 0.013110365515116334
717. x = [0.8858631788598209, 0.7841093609964903], f([0.8858631788598209, 0.7841093609964903]) = 0.013068714677835134
718. x = [0.8858631820594759, 0.7847535830298281], f([0.8858631820594759, 0.7847535830298281]) = 0.013027213209591595
719. x = [0.8862254142393131, 0.7847535812204456], f([0.8862254142393131, 0.7847535812204456]) = 0.012985860391163173
720. x = [0.8862254174882411, 0.7853954965313976], f([0.8862254174882411, 0.7853954965313976]) = 0.012944655625728543
721. x = [0.8865862069758746, 0.7853954946512152], f([0.8865862069758746, 0.7853954946512152]) = 0.012903598255332872
722. x = [0.886586210090507, 0.7860351132302014], f([0.886586210090507, 0.7860351132302014]) = 0.012862687741637438
723. x = [0.8869455644618883, 0.7860351115485043], f([0.8869455644618883, 0.7860351115485043]) = 0.012821923426171552
724. x = [0.886945567609161, 0.7866724458216925], f([0.886945567609161, 0.7866724458216925]) = 0.012781304683218293
725. x = [0.8873034951204194, 0.7866724439474034], f([0.8873034951204194, 0.7866724439474034]) = 0.012740830872508213
726. x = [0.8873034986522672, 0.7873075049716957], f([0.8873034986522672, 0.7873075049716957]) = 0.012700501416023448
727. x = [0.8876600072234244, 0.7873075029942043], f([0.8876600072234244, 0.7873075029942043]) = 0.012660315717043291
728. x = [0.8876600105130813, 0.7879403003993574], f([0.8876600105130813, 0.7879403003993574]) = 0.012620273237924768
729. x = [0.888015107637876, 0.7879402984600685], f([0.888015107637876, 0.7879402984600685]) = 0.012580373295321292
730. x = [0.8880151110207567, 0.7885708434432562], f([0.8880151110207567, 0.7885708434432562]) = 0.012540615359697098
731. x = [0.8883688043759315, 0.7885708415349522], f([0.8883688043759315, 0.7885708415349522]) = 0.012500998801233513
732. x = [0.888368807988481, 0.7891991453245706], f([0.888368807988481, 0.7891991453245706]) = 0.012461523029916627
733. x = [0.8887211054551399, 0.7891991433307857], f([0.8887211054551399, 0.7891991433307857]) = 0.012422187477303151
734. x = [0.8887211090178679, 0.7898252159724273], f([0.8887211090178679, 0.7898252159724273]) = 0.012382991578217276
735. x = [0.8890720180901017, 0.7898252139673525], f([0.8890720180901017, 0.7898252139673525]) = 0.012343934728237504
736. x = [0.8890720216300481, 0.790449065648623], f([0.8890720216300481, 0.790449065648623]) = 0.01230501638524813
737. x = [0.8894215497471173, 0.7904490637570392], f([0.8894215497471173, 0.7904490637570392]) = 0.012266235971115941
738. x = [0.8894215530854801, 0.7910707049630786], f([0.8894215530854801, 0.7910707049630786]) = 0.01222759292203074
739. x = [0.8897697079438084, 0.7910707031149052], f([0.8897697079438084, 0.7910707031149052]) = 0.012189086646655113
740. x = [0.8897697106581386, 0.7916901429172087], f([0.8897697106581386, 0.7916901429172087]) = 0.012150716688392899
741. x = [0.8901164992013321, 0.7916901413717176], f([0.8901164992013321, 0.7916901413717176]) = 0.01211248236566202
742. x = [0.8901165018071251, 0.7923073913284828], f([0.8901165018071251, 0.7923073913284828]) = 0.012074383175105603
743. x = [0.8904619317254534, 0.7923073899015721], f([0.8904619317254534, 0.7923073899015721]) = 0.012036418521633445
744. x = [0.8904619339028063, 0.7929224596143906], f([0.8904619339028063, 0.7929224596143906]) = 0.011998587924314694
745. x = [0.8908060122597846, 0.7929224583942195], f([0.8908060122597846, 0.7929224583942195]) = 0.011960890751846915
746. x = [0.8908060144490868, 0.793535359353918], f([0.8908060144490868, 0.793535359353918]) = 0.011923326480494621
747. x = [0.8911487487875502, 0.7935353581061878], f([0.8911487487875502, 0.7935353581061878]) = 0.011885894536294498
748. x = [0.891148750979211, 0.7941461004706414], f([0.891148750979211, 0.7941461004706414]) = 0.011848594413387502
749. x = [0.8914901483295746, 0.7941460991851058], f([0.8914901483295746, 0.7941460991851058]) = 0.011811425526448573
750. x = [0.8914901510985638, 0.7947546943940937], f([0.8914901510985638, 0.7947546943940937]) = 0.01177438730861491
751. x = [0.8918302189046571, 0.7947546928621053], f([0.8918302189046571, 0.7947546928621053]) = 0.01173747927666778
752. x = [0.8918302221048363, 0.7953611503936819], f([0.8918302221048363, 0.7953611503936819]) = 0.011700700849891887
753. x = [0.8921689675216768, 0.7953611487232589], f([0.8921689675216768, 0.7953611487232589]) = 0.011664051576006956
754. x = [0.8921689705187048, 0.7959654773278787], f([0.8921689705187048, 0.7959654773278787]) = 0.011627530918998838
755. x = [0.8925064004735392, 0.7959654756470269], f([0.8925064004735392, 0.7959654756470269]) = 0.011591138331525235
756. x = [0.8925064031181408, 0.7965676843152202], f([0.8925064031181408, 0.7965676843152202]) = 0.011554873370601872
757. x = [0.8928425242716942, 0.7965676828429837], f([0.8928425242716942, 0.7965676828429837]) = 0.011518735441861994
758. x = [0.8928425267438377, 0.7971677822251699], f([0.8928425267438377, 0.7971677822251699]) = 0.011482724074647316
759. x = [0.8931773462585945, 0.7971677807682479], f([0.8931773462585945, 0.7971677807682479]) = 0.011446838688079289
760. x = [0.8931773485861545, 0.7977657800250736], f([0.8931773485861545, 0.7977657800250736]) = 0.011411078855085547
761. x = [0.8935108730640926, 0.7977657787769157], f([0.8935108730640926, 0.7977657787769157]) = 0.01137544401615737
762. x = [0.893510875382208, 0.798361688564], f([0.893510875382208, 0.798361688564]) = 0.011339933661865352
763. x = [0.8938431119548647, 0.7983616872730771], f([0.8938431119548647, 0.7983616872730771]) = 0.011304547278723303
764. x = [0.893843114291593, 0.7989555173297349], f([0.893843114291593, 0.7989555173297349]) = 0.011269284383309685
765. x = [0.8941740697804507, 0.7989555159694577], f([0.8941740697804507, 0.7989555159694577]) = 0.01123414444306408
766. x = [0.8941740721069932, 0.7995472754684413], f([0.8941740721069932, 0.7995472754684413]) = 0.011199127014417677
767. x = [0.8945037529926642, 0.7995472741475459], f([0.8945037529926642, 0.7995472741475459]) = 0.011164231558753644
768. x = [0.8945037556795047, 0.8001369738158226], f([0.8945037556795047, 0.8001369738158226]) = 0.011129457565732031
769. x = [0.8948321689345924, 0.800136972293225], f([0.8948321689345924, 0.800136972293225]) = 0.011094804564281906
770. x = [0.8948321719953534, 0.800724621259881], f([0.8948321719953534, 0.800724621259881]) = 0.011060272047217663
771. x = [0.8951593243513157, 0.8007246196354668], f([0.8951593243513157, 0.8007246196354668]) = 0.011025859577538032
772. x = [0.8951593270639655, 0.8013102260651566], f([0.8951593270639655, 0.8013102260651566]) = 0.010991566701683296
773. x = [0.8954852247442848, 0.8013102244376997], f([0.8954852247442848, 0.8013102244376997]) = 0.010957392858985863
774. x = [0.8954852278754525, 0.8018937986450604], f([0.8954852278754525, 0.8018937986450604]) = 0.010923337592248904
775. x = [0.8958098775053918, 0.8018937969981667], f([0.8958098775053918, 0.8018937969981667]) = 0.010889400460504767
776. x = [0.895809880826539, 0.8024753485742839], f([0.895809880826539, 0.8024753485742839]) = 0.01085558093338359
777. x = [0.896133289248645, 0.8024753467156688], f([0.896133289248645, 0.8024753467156688]) = 0.010821878569367196
778. x = [0.8961332923792171, 0.8030548834572097], f([0.8961332923792171, 0.8030548834572097]) = 0.010788292951984498
779. x = [0.8964554654105995, 0.8030548816746907], f([0.8964554654105995, 0.8030548816746907]) = 0.010754823554101674
780. x = [0.8964554692126081, 0.803632415289153], f([0.8964554692126081, 0.803632415289153]) = 0.010721469855986059
781. x = [0.8967764140839288, 0.8036324131170053], f([0.8967764140839288, 0.8036324131170053]) = 0.010688231446928766
782. x = [0.8967764177112137, 0.804207949900167], f([0.8967764177112137, 0.804207949900167]) = 0.0106551079405341
783. x = [0.8970961400198625, 0.80420794787537], f([0.8970961400198625, 0.80420794787537]) = 0.010622098817740656
784. x = [0.8970961437457969, 0.8047814978728799], f([0.8970961437457969, 0.8047814978728799]) = 0.010589203631990242
785. x = [0.897414650155842, 0.8047814957838716], f([0.897414650155842, 0.8047814957838716]) = 0.010556421918022524
786. x = [0.8974146536570466, 0.8053530668671618], f([0.8974146536570466, 0.8053530668671618]) = 0.010523753284307623
787. x = [0.8977319502135429, 0.8053530649282536], f([0.8977319502135429, 0.8053530649282536]) = 0.010491197227654948
788. x = [0.8977319533154593, 0.8059226655316071], f([0.8977319533154593, 0.8059226655316071]) = 0.010458753372674453
789. x = [0.89804804594902, 0.8059226638230104], f([0.89804804594902, 0.8059226638230104]) = 0.010426421204094646
790. x = [0.8980480492433724, 0.8064903047464215], f([0.8980480492433724, 0.8064903047464215]) = 0.010394200263085405
791. x = [0.8983629446867958, 0.8064903028942937], f([0.8983629446867958, 0.8064903028942937]) = 0.01036209011523908
792. x = [0.8983629478450131, 0.8070559919183675], f([0.8983629478450131, 0.8070559919183675]) = 0.010330090370758951
793. x = [0.8986766518519782, 0.8070559901104353], f([0.8986766518519782, 0.8070559901104353]) = 0.010298200535580417
794. x = [0.8986766553152763, 0.8076197373596417], f([0.8986766553152763, 0.8076197373596417]) = 0.010266420178103619
795. x = [0.8989891742706771, 0.8076197353390958], f([0.8989891742706771, 0.8076197353390958]) = 0.010234748851640819
796. x = [0.8989891780818884, 0.8081815491625872], f([0.8989891780818884, 0.8081815491625872]) = 0.010203186144577155
797. x = [0.8993005179415113, 0.8081815470499706], f([0.8993005179415113, 0.8081815470499706]) = 0.010171731634651198
798. x = [0.8993005218707387, 0.8087414356708454], f([0.8993005218707387, 0.8087414356708454]) = 0.010140384895510517
799. x = [0.8996106886330236, 0.8087414335043567], f([0.8996106886330236, 0.8087414335043567]) = 0.010109145504899891
800. x = [0.8996106925080952, 0.8092994052592849], f([0.8996106925080952, 0.8092994052592849]) = 0.01007801305870937
801. x = [0.8999196920495277, 0.8092994030479491], f([0.8999196920495277, 0.8092994030479491]) = 0.010046987098573474
802. x = [0.8999196960764428, 0.8098554668371177], f([0.8999196960764428, 0.8098554668371177]) = 0.01001606723343712
803. x = [0.900227534281196, 0.8098554645453478], f([0.900227534281196, 0.8098554645453478]) = 0.009985253019566077
804. x = [0.9002275386839768, 0.8104096295790407], f([0.9002275386839768, 0.8104096295790407]) = 0.009954544037064037
805. x = [0.9005342214857989, 0.8104096270665264], f([0.9005342214857989, 0.8104096270665264]) = 0.00992393987489706
806. x = [0.9005342266150909, 0.8109619028030244], f([0.9005342266150909, 0.8109619028030244]) = 0.00989344007506712
807. x = [0.900839760080223, 0.8109618998855976], f([0.900839760080223, 0.8109618998855976]) = 0.009863044275032224
808. x = [0.9008397658958955, 0.8115122943962776], f([0.9008397658958955, 0.8115122943962776]) = 0.009832752027591988
809. x = [0.9011441558002086, 0.8115122911495715], f([0.9011441558002086, 0.8115122911495715]) = 0.009802562980101607
810. x = [0.9011441620173092, 0.8120608119687649], f([0.9011441620173092, 0.8120608119687649]) = 0.00977247670327263
811. x = [0.9014474140627992, 0.8120608085236274], f([0.9014474140627992, 0.8120608085236274]) = 0.009742492827045415
812. x = [0.9014474202829411, 0.8126074626800508], f([0.9014474202829411, 0.8126074626800508]) = 0.009712610968899669
813. x = [0.9017495399474437, 0.8126074592634583], f([0.9017495399474437, 0.8126074592634583]) = 0.009682830720652248
814. x = [0.9017495459845515, 0.8131522542202768], f([0.9017495459845515, 0.8131522542202768]) = 0.009653151714252866
815. x = [0.9020505386723308, 0.8131522509923241], f([0.9020505386723308, 0.8131522509923241]) = 0.009623573548250016
816. x = [0.9020505447272013, 0.8136951959355738], f([0.9020505447272013, 0.8136951959355738]) = 0.009594095788249437
817. x = [0.9023504163398006, 0.8136951926620039], f([0.9023504163398006, 0.8136951926620039]) = 0.00956471807622468
818. x = [0.9023504224725396, 0.8142362958473071], f([0.9023504224725396, 0.8142362958473071]) = 0.009535439991303404
819. x = [0.9026491787240603, 0.8142362925092028], f([0.9026491787240603, 0.8142362925092028]) = 0.00950626117268727
820. x = [0.902649184596248, 0.814775561058737], f([0.902649184596248, 0.814775561058737]) = 0.00947718125978665
821. x = [0.9029468306379125, 0.8147755578159184], f([0.9029468306379125, 0.8147755578159184]) = 0.009448199831734639
822. x = [0.9029468368959767, 0.8153130014653716], f([0.9029468368959767, 0.8153130014653716]) = 0.009419316468508711
823. x = [0.9032433788445753, 0.8153129980418251], f([0.9032433788445753, 0.8153129980418251]) = 0.009390530835988854
824. x = [0.9032433846344485, 0.8158486222298913], f([0.9032433846344485, 0.8158486222298913]) = 0.00936184261700797
825. x = [0.9035388272873219, 0.8158486190714521], f([0.9035388272873219, 0.8158486190714521]) = 0.009333251374546665
826. x = [0.9035388329900308, 0.8163824331487718], f([0.9035388329900308, 0.8163824331487718]) = 0.009304756740936044
827. x = [0.9038331821709918, 0.8163824299668178], f([0.9038331821709918, 0.8163824299668178]) = 0.00927635831786745
828. x = [0.9038331877031786, 0.8169144412247099], f([0.9038331877031786, 0.8169144412247099]) = 0.00924805578734215
829. x = [0.9041264485754081, 0.816914438165806], f([0.9041264485754081, 0.816914438165806]) = 0.009219848732502822
830. x = [0.9041264541038138, 0.8174446549075255], f([0.9041264541038138, 0.8174446549075255]) = 0.009191736802717926
831. x = [0.9044186321832537, 0.8174446518913776], f([0.9044186321832537, 0.8174446518913776]) = 0.009163719623397312
832. x = [0.9044186375317413, 0.817973081673903], f([0.9044186375317413, 0.817973081673903]) = 0.009135796851298169
833. x = [0.904709738088231, 0.8179730787017376], f([0.904709738088231, 0.8179730787017376]) = 0.009107968087832952
834. x = [0.9047097434328836, 0.8184997295225044], f([0.9047097434328836, 0.8184997295225044]) = 0.009080232996636206
835. x = [0.9049997716778948, 0.8184997265823786], f([0.9049997716778948, 0.8184997265823786]) = 0.009052591199447419
836. x = [0.9049997773210736, 0.8190246075367381], f([0.9049997773210736, 0.8190246075367381]) = 0.009025042309056803
837. x = [0.9052887389208047, 0.8190246043170042], f([0.9052887389208047, 0.8190246043170042]) = 0.00899758597002354
838. x = [0.9052887447905262, 0.8195477218014142], f([0.9052887447905262, 0.8195477218014142]) = 0.008970221863364799
839. x = [0.9055766447363368, 0.8195477186531898], f([0.9055766447363368, 0.8195477186531898]) = 0.008942949646260906
840. x = [0.90557665011417, 0.8200690790764706], f([0.90557665011417, 0.8200690790764706]) = 0.008915769003671565
841. x = [0.905863493407962, 0.8200690760859323], f([0.905863493407962, 0.8200690760859323]) = 0.008888679520697848
842. x = [0.9058634985324351, 0.820588687136079], f([0.9058634985324351, 0.820588687136079]) = 0.008861680908561247
843. x = [0.9061492903729347, 0.8205886843544098], f([0.9061492903729347, 0.8205886843544098]) = 0.008834772776108092
844. x = [0.9061492948634821, 0.8211065527141628], f([0.9061492948634821, 0.8211065527141628]) = 0.00880795485462825
845. x = [0.9064340401176707, 0.8211065502467585], f([0.9064340401176707, 0.8211065502467585]) = 0.008781226714121649
846. x = [0.9064340443508978, 0.8216226843314911], f([0.9064340443508978, 0.8216226843314911]) = 0.008754588056535494
847. x = [0.9067177481561679, 0.8216226820352452], f([0.9067177481561679, 0.8216226820352452]) = 0.008728038502900085
848. x = [0.9067177525372958, 0.822137090651203], f([0.9067177525372958, 0.822137090651203]) = 0.0087015776916994
849. x = [0.9070004202933467, 0.8221370882619189], f([0.9070004202933467, 0.8221370882619189]) = 0.008675205304061837
850. x = [0.9070004247508037, 0.8226497788065525], f([0.9070004247508037, 0.8226497788065525]) = 0.008648920996537834
851. x = [0.9072820615509639, 0.822649776290501], f([0.9072820615509639, 0.822649776290501]) = 0.008622724420970998
852. x = [0.9072820659497041, 0.8231607555153796], f([0.9072820659497041, 0.8231607555153796]) = 0.008596615294561951
853. x = [0.9075626764750929, 0.8231607529969467], f([0.9075626764750929, 0.8231607529969467]) = 0.008570593226232034
854. x = [0.9075626812717787, 0.8236700291611587], f([0.9075626812717787, 0.8236700291611587]) = 0.008544657893670373
855. x = [0.9078422708024901, 0.8236700265225274], f([0.9078422708024901, 0.8236700265225274]) = 0.008518808982756998
856. x = [0.9078422753752874, 0.8241776051698868], f([0.9078422753752874, 0.8241776051698868]) = 0.008493046208011104
857. x = [0.9081208483374607, 0.8241776026878255], f([0.9081208483374607, 0.8241776026878255]) = 0.00846736920858276
858. x = [0.9081208531314103, 0.8246834925579393], f([0.9081208531314103, 0.8246834925579393]) = 0.00844177762930738
859. x = [0.9083984148855664, 0.8246834899400889], f([0.9083984148855664, 0.8246834899400889]) = 0.008416271173928727
860. x = [0.9083984195317242, 0.8251876972940203], f([0.9083984195317242, 0.8251876972940203]) = 0.008390849544293555
861. x = [0.9086749746515697, 0.8251876946715815], f([0.9086749746515697, 0.8251876946715815]) = 0.008365512376001756
862. x = [0.9086749795018112, 0.8256902271537685], f([0.9086749795018112, 0.8256902271537685]) = 0.008340259369002316
863. x = [0.9089505329887486, 0.8256902245042924], f([0.9089505329887486, 0.8256902245042924]) = 0.00831509020638344
864. x = [0.9089505375160916, 0.8261910880752383], f([0.9089505375160916, 0.8261910880752383]) = 0.008290004618615747
865. x = [0.9092250937665732, 0.8261910855349207], f([0.9092250937665732, 0.8261910855349207]) = 0.008265002228003485
866. x = [0.9092250986813076, 0.8266902890074079], f([0.9092250986813076, 0.8266902890074079]) = 0.008240082709426323
867. x = [0.9094986628530292, 0.8266902863146433], f([0.9094986628530292, 0.8266902863146433]) = 0.008215245776460458
868. x = [0.9094986679080622, 0.8271878360294699], f([0.9094986679080622, 0.8271878360294699]) = 0.008190491110423494
869. x = [0.9097712445877604, 0.8271878332878516], f([0.9097712445877604, 0.8271878332878516]) = 0.008165818416321292
870. x = [0.9097712497870095, 0.8276837364978247], f([0.9097712497870095, 0.8276837364978247]) = 0.008141227365007367
871. x = [0.9100428438566934, 0.8276837336206205], f([0.9100428438566934, 0.8276837336206205]) = 0.008116717657921272
872. x = [0.91004284892551, 0.8281779963133686], f([0.91004284892551, 0.8281779963133686]) = 0.008092289029447511
873. x = [0.9103134647680999, 0.8281779934757442], f([0.9103134647680999, 0.8281779934757442]) = 0.00806794112836978
874. x = [0.910313469882947, 0.8286706228833216], f([0.910313469882947, 0.8286706228833216]) = 0.008043673684445946
875. x = [0.9105831121607867, 0.8286706200473503], f([0.9105831121607867, 0.8286706200473503]) = 0.00801948636999394
876. x = [0.9105831173705384, 0.8291616228357476], f([0.9105831173705384, 0.8291616228357476]) = 0.00799537889917936
877. x = [0.9108517906242414, 0.8291616200728034], f([0.9108517906242414, 0.8291616200728034]) = 0.007971350987538667
878. x = [0.9108517958189032, 0.8296510032871665], f([0.9108517958189032, 0.8296510032871665]) = 0.007947402308723251
879. x = [0.9111195047071454, 0.8296510004822574], f([0.9111195047071454, 0.8296510004822574]) = 0.007923532583936929
880. x = [0.9111195100768912, 0.8301387714244787], f([0.9111195100768912, 0.8301387714244787]) = 0.007899741488981416
881. x = [0.9113862592787664, 0.8301387684888346], f([0.9113862592787664, 0.8301387684888346]) = 0.007876028751729356
882. x = [0.9113862647336358, 0.8306249337588636], f([0.9113862647336358, 0.8306249337588636]) = 0.007852394077867707
883. x = [0.9116520587123387, 0.8306249306953519], f([0.9116520587123387, 0.8306249306953519]) = 0.007828837159960864
884. x = [0.9116520643948138, 0.8311094968840079], f([0.9116520643948138, 0.8311094968840079]) = 0.007805357725708873
885. x = [0.9119169075919082, 0.8311094937758242], f([0.9119169075919082, 0.8311094937758242]) = 0.007781955487254845
886. x = [0.9119169132766969, 0.8315924673384932], f([0.9119169132766969, 0.8315924673384932]) = 0.007758630166716213
887. x = [0.9121808101427094, 0.8315924641572929], f([0.9121808101427094, 0.8315924641572929]) = 0.007735381452441146
888. x = [0.9121808159565267, 0.832073851689549], f([0.9121808159565267, 0.832073851689549]) = 0.00771220908607287
889. x = [0.9124437708130272, 0.8320738484886092], f([0.9124437708130272, 0.8320738484886092]) = 0.007689112769065048
890. x = [0.9124437768686042, 0.8325536568105966], f([0.9124437768686042, 0.8325536568105966]) = 0.007666092209046567
891. x = [0.9127057942517091, 0.8325536535594457], f([0.9127057942517091, 0.8325536535594457]) = 0.007643147153369158
892. x = [0.9127058002076828, 0.8330318887718564], f([0.9127058002076828, 0.8330318887718564]) = 0.007620277317393184
893. x = [0.9129668844173093, 0.833031885470296], f([0.9129668844173093, 0.833031885470296]) = 0.007597482403523539
894. x = [0.9129668905011636, 0.8335085543882728], f([0.9129668905011636, 0.8335085543882728]) = 0.007574762149049067
895. x = [0.9132270458999889, 0.8335085510294664], f([0.9132270458999889, 0.8335085510294664]) = 0.007552116265694612
896. x = [0.9132270520630396, 0.8339836600101189], f([0.9132270520630396, 0.8339836600101189]) = 0.007529544493683421
897. x = [0.9134862829935595, 0.8339836566073704], f([0.9134862829935595, 0.8339836566073704]) = 0.007507046543545617
898. x = [0.9134862890763066, 0.8344572116140245], f([0.9134862890763066, 0.8344572116140245]) = 0.007484622177801123
899. x = [0.9137445996906631, 0.8344572082450671], f([0.9137445996906631, 0.8344572082450671]) = 0.0074622710871989255
900. x = [0.9137446058044518, 0.8349292157793805], f([0.9137446058044518, 0.8349292157793805]) = 0.0074399930278418215
901. x = [0.9140020003927565, 0.8349292124543833], f([0.9140020003927565, 0.8349292124543833]) = 0.007417787717337067
902. x = [0.914002006385832, 0.8353996787354913], f([0.914002006385832, 0.8353996787354913]) = 0.0073956549056747155
903. x = [0.9142584891388748, 0.8353996754375517], f([0.9142584891388748, 0.8353996754375517]) = 0.007373594299006993
904. x = [0.914258495220132, 0.8358686070453697], f([0.914258495220132, 0.8358686070453697]) = 0.0073516056419281415
905. x = [0.9145140705309339, 0.8358686037775765], f([0.9145140705309339, 0.8358686037775765]) = 0.007329688676504737
906. x = [0.9145140760533683, 0.8363360057365753], f([0.9145140760533683, 0.8363360057365753]) = 0.007307843193020188
907. x = [0.9147687477301139, 0.836336002627402], f([0.9147687477301139, 0.836336002627402]) = 0.0072860688425724325
908. x = [0.9147687533857966, 0.8368018827150628], f([0.9147687533857966, 0.8368018827150628]) = 0.007264365399422284
909. x = [0.9150225259267767, 0.8368018795756837], f([0.9150225259267767, 0.8368018795756837]) = 0.007242732577109969
910. x = [0.9150225313669604, 0.8372662431186638], f([0.9150225313669604, 0.8372662431186638]) = 0.007221170175289646
911. x = [0.9152754085447808, 0.8372662400805837], f([0.9152754085447808, 0.8372662400805837]) = 0.007199677873446205
912. x = [0.915275414389651, 0.8377290950126481], f([0.915275414389651, 0.8377290950126481]) = 0.007178255406857081
913. x = [0.9155274006907984, 0.8377290917927256], f([0.9155274006907984, 0.8377290917927256]) = 0.007156902536151656
914. x = [0.9155274068631155, 0.8381904438234026], f([0.9155274068631155, 0.8381904438234026]) = 0.007135618991281958
915. x = [0.915778506304491, 0.8381904405221915], f([0.915778506304491, 0.8381904405221915]) = 0.007114404555134706
916. x = [0.9157785125580186, 0.8386502954374062], f([0.9157785125580186, 0.8386502954374062]) = 0.007093258946952774
917. x = [0.9160287292297135, 0.8386502920582194], f([0.9160287292297135, 0.8386502920582194]) = 0.007072181935969677
918. x = [0.9160287354104886, 0.839108655528287], f([0.9160287354104886, 0.839108655528287]) = 0.007051173276774802
919. x = [0.916278073132419, 0.8391086521342739], f([0.916278073132419, 0.8391086521342739]) = 0.007030232702963382
920. x = [0.9162780796535626, 0.8395655313712682], f([0.9162780796535626, 0.8395655313712682]) = 0.007009359946509899
921. x = [0.9165265426202812, 0.8395655277751887], f([0.9165265426202812, 0.8395655277751887]) = 0.00698855477628675
922. x = [0.9165265496333913, 0.8400209289672528], f([0.9165265496333913, 0.8400209289672528]) = 0.006967816916123029
923. x = [0.9167741419379509, 0.8400209251753631], f([0.9167741419379509, 0.8400209251753631]) = 0.006947146166405627
924. x = [0.9167741490095042, 0.8404748531238945], f([0.9167741490095042, 0.8404748531238945]) = 0.006926542273108683
925. x = [0.917020874415322, 0.8404748493199802], f([0.917020874415322, 0.8404748493199802]) = 0.006906005007031227
926. x = [0.9170208813717319, 0.8409273098155909], f([0.9170208813717319, 0.8409273098155909]) = 0.006885534128340948
927. x = [0.9172667438437851, 0.8409273059805245], f([0.9172667438437851, 0.8409273059805245]) = 0.0068651293732699785
928. x = [0.917266750635751, 0.8413783041220785], f([0.917266750635751, 0.8413783041220785]) = 0.006844790550382132
929. x = [0.9175117538126417, 0.8413783004796395], f([0.9175117538126417, 0.8413783004796395]) = 0.006824517393731729
930. x = [0.9175117603526254, 0.8418278425554058], f([0.9175117603526254, 0.8418278425554058]) = 0.006804309680137517
931. x = [0.9177559081397783, 0.8418278389534305], f([0.9177559081397783, 0.8418278389534305]) = 0.006784167136669268
932. x = [0.9177559150015917, 0.8422759320264194], f([0.9177559150015917, 0.8422759320264194]) = 0.006764089517241049
933. x = [0.9179992115060938, 0.8422759283269634], f([0.9179992115060938, 0.8422759283269634]) = 0.0067440766132569035
934. x = [0.9179992184338683, 0.8427225779153972], f([0.9179992184338683, 0.8427225779153972]) = 0.006724128177473003
935. x = [0.9182416674325147, 0.8427225741102162], f([0.9182416674325147, 0.8427225741102162]) = 0.0067042439748774925
936. x = [0.9182416746414315, 0.8431677862545262], f([0.9182416746414315, 0.8431677862545262]) = 0.006684423765454989
937. x = [0.9184832799596017, 0.8431677823520494], f([0.9184832799596017, 0.8431677823520494]) = 0.006664667337575963
938. x = [0.9184832873467706, 0.8436115626685672], f([0.9184832873467706, 0.8436115626685672]) = 0.006644974441807477
939. x = [0.918724052731792, 0.8436115586715518], f([0.918724052731792, 0.8436115586715518]) = 0.006625344868437687
940. x = [0.918724060405946, 0.84405391336468], f([0.918724060405946, 0.84405391336468]) = 0.006605778356916466
941. x = [0.9189639897522063, 0.8440539091741389], f([0.9189639897522063, 0.8440539091741389]) = 0.0065862747041045755
942. x = [0.9189639976916356, 0.8444948435261537], f([0.9189639976916356, 0.8444948435261537]) = 0.006566833670142184
943. x = [0.919203094609338, 0.8444948392561022], f([0.919203094609338, 0.8444948392561022]) = 0.0065474550564582484
944. x = [0.9192031027422741, 0.8449343590177372], f([0.9192031027422741, 0.8449343590177372]) = 0.006528138606497791
945. x = [0.9194413709736919, 0.8449343546160325], f([0.9194413709736919, 0.8449343546160325]) = 0.006508884122913786
946. x = [0.9194413794358242, 0.8453724658215078], f([0.9194413794358242, 0.8453724658215078]) = 0.006489691347227199
947. x = [0.9196788229822598, 0.8453724612228465], f([0.9196788229822598, 0.8453724612228465]) = 0.006470560089555609
948. x = [0.9196788310104074, 0.8458091670788931], f([0.9196788310104074, 0.8458091670788931]) = 0.006451490187876809
949. x = [0.9199154528963219, 0.8458091626983536], f([0.9199154528963219, 0.8458091626983536]) = 0.006432481359298312
950. x = [0.9199154608573182, 0.8462444698264956], f([0.9199154608573182, 0.8462444698264956]) = 0.006413533409717343
951. x = [0.9201512648021568, 0.8462444654976813], f([0.9201512648021568, 0.8462444654976813]) = 0.006394646098984187
952. x = [0.9201512731922253, 0.846678380889586], f([0.9201512731922253, 0.846678380889586]) = 0.00637581917284614
953. x = [0.9203862633203891, 0.8466783763775356], f([0.9203862633203891, 0.8466783763775356]) = 0.0063570524622514404
954. x = [0.9203862714823873, 0.8471109036633543], f([0.9203862714823873, 0.8471109036633543]) = 0.006338345768498433
955. x = [0.9206204509428326, 0.847110899271897], f([0.9206204509428326, 0.847110899271897]) = 0.006319698859252652
956. x = [0.9206204590850198, 0.8475420446025311], f([0.9206204590850198, 0.8475420446025311]) = 0.006301111515895271
957. x = [0.9208538315847477, 0.84754204021726], f([0.9208538315847477, 0.84754204021726]) = 0.006282583529357765
958. x = [0.9208538397943645, 0.847971809295845], f([0.9208538397943645, 0.847971809295845]) = 0.006264114675318712
959. x = [0.9210864089759685, 0.8479718048789336], f([0.9210864089759685, 0.8479718048789336]) = 0.00624570475590897
960. x = [0.9210864171460581, 0.8484002027758896], f([0.9210864171460581, 0.8484002027758896]) = 0.006227353558868228
961. x = [0.9213181864532358, 0.848400198392589], f([0.9213181864532358, 0.848400198392589]) = 0.006209060879162732
962. x = [0.9213181946257178, 0.8488272309551849], f([0.9213181946257178, 0.8488272309551849]) = 0.006190826496979541
963. x = [0.9215491677075497, 0.8488272264913388], f([0.9215491677075497, 0.8488272264913388]) = 0.006172650199542785
964. x = [0.9215491759488464, 0.8492528987020144], f([0.9215491759488464, 0.8492528987020144]) = 0.006154531794327583
965. x = [0.9217793560787022, 0.8492528942981273], f([0.9217793560787022, 0.8492528942981273]) = 0.006136471080852969
966. x = [0.9217793645329273, 0.8496772123692661], f([0.9217793645329273, 0.8496772123692661]) = 0.0061184678128966665
967. x = [0.9220087554719467, 0.8496772078266547], f([0.9220087554719467, 0.8496772078266547]) = 0.006100521822414349
968. x = [0.9220087640563741, 0.8501001768411702], f([0.9220087640563741, 0.8501001768411702]) = 0.006082632884039428
969. x = [0.9222373692451884, 0.8501001721970868], f([0.9222373692451884, 0.8501001721970868]) = 0.006064800810642016
970. x = [0.9222373778500381, 0.8505217970781929], f([0.9222373778500381, 0.8505217970781929]) = 0.006047025403663261
971. x = [0.9224652006801186, 0.8505217923982927], f([0.9224652006801186, 0.8505217923982927]) = 0.006029306453700887
972. x = [0.9224652091684857, 0.8509420776078945], f([0.9224652091684857, 0.8509420776078945]) = 0.0060116437893106365
973. x = [0.9226922528370642, 0.8509420730746031], f([0.9226922528370642, 0.8509420730746031]) = 0.005994037199126726
974. x = [0.9226922611476706, 0.8513610241586341], f([0.9226922611476706, 0.8513610241586341]) = 0.005976486486483612
975. x = [0.9229185292187964, 0.8513610196582326], f([0.9229185292187964, 0.8513610196582326]) = 0.0059589914387207545
976. x = [0.9229185372911985, 0.8517786413888238], f([0.9229185372911985, 0.8517786413888238]) = 0.005941551893350589
977. x = [0.9231440329260162, 0.8517786370262723], f([0.9231440329260162, 0.8517786370262723]) = 0.0059241676213395685
978. x = [0.9231440410324243, 0.8521949355739284], f([0.9231440410324243, 0.8521949355739284]) = 0.005906838428848419
979. x = [0.9233687677902817, 0.8521949311646232], f([0.9233687677902817, 0.8521949311646232]) = 0.005889564113999466
980. x = [0.923368776066187, 0.8526099118002777], f([0.923368776066187, 0.8526099118002777]) = 0.005872344481617265
981. x = [0.9235927374346581, 0.8526099073621101], f([0.9235927374346581, 0.8526099073621101]) = 0.005855179352664315
982. x = [0.9235927452854975, 0.8530235734442081], f([0.9235927452854975, 0.8530235734442081]) = 0.005838068573027313
983. x = [0.9238159440873416, 0.8530235692670151], f([0.9238159440873416, 0.8530235692670151]) = 0.005821011919062619
984. x = [0.9238159519153692, 0.8534359273558936], f([0.9238159519153692, 0.8534359273558936]) = 0.005804009182581902
985. x = [0.9240383917379903, 0.8534359231683332], f([0.9240383917379903, 0.8534359231683332]) = 0.005787060186534011
986. x = [0.9240383997744553, 0.8538469790924065], f([0.9240383997744553, 0.8538469790924065]) = 0.005770164708847472
987. x = [0.9242600841462311, 0.8538469747632509], f([0.9242600841462311, 0.8538469747632509]) = 0.005753322588298864
988. x = [0.9242600921263099, 0.8542567324742576], f([0.9242600921263099, 0.8542567324742576]) = 0.005736533644736315
989. x = [0.9244810240911069, 0.8542567282223464], f([0.9244810240911069, 0.8542567282223464]) = 0.005719797692977011
990. x = [0.9244810317752236, 0.8546651920875198], f([0.9244810317752236, 0.8546651920875198]) = 0.005703114561754325
991. x = [0.9247012143802424, 0.8546651880130189], f([0.9247012143802424, 0.8546651880130189]) = 0.005686484054067238
992. x = [0.9247012219897596, 0.8550723640750929], f([0.9247012219897596, 0.8550723640750929]) = 0.005669905969855421
993. x = [0.9249206586581258, 0.8550723599586949], f([0.9249206586581258, 0.8550723599586949]) = 0.005653380124291675
994. x = [0.9249206664961406, 0.8554782538821156], f([0.9249206664961406, 0.8554782538821156]) = 0.005636906319404978
995. x = [0.9251393605452825, 0.8554782496381296], f([0.9251393605452825, 0.8554782496381296]) = 0.0056204843867956635
996. x = [0.9251393686083441, 0.8558828662716627], f([0.9251393686083441, 0.8558828662716627]) = 0.005604114132379643
997. x = [0.9253573233284182, 0.855882861927143], f([0.9253573233284182, 0.855882861927143]) = 0.005587795391729842
998. x = [0.9253573311345317, 0.8562862047707357], f([0.9253573311345317, 0.8562862047707357]) = 0.0055715280153809405
999. x = [0.9255745493698055, 0.8562862005552137], f([0.9255745493698055, 0.8562862005552137]) = 0.005555311790944824
1000. x = [0.9255745569972949, 0.8566882745000424], f([0.9255745569972949, 0.8566882745000424]) = 0.005539146566168343
WARNING: maximum number of iterations reached
Out[26]:
([0.9255745569972949, 0.8566882745000424], [1.0 0.0 0.0; 0.7711096853441531 0.1612620227407261 0.0; … ; 0.005555311790944824 0.9255745493698055 0.8562862005552137; 0.005539146566168343 0.9255745569972949 0.8566882745000424])

The minimizer is located at $(1,1)$. Indeed, $$ \nabla f(1,1) = \begin{pmatrix} 0 \\ 0 \end{pmatrix} $$ and $$ \nabla^2 f(1,1) = \begin{pmatrix} 802 & -400 \\ -400 & 200 \end{pmatrix} $$ The determinants of the principal minors are positive as they are respectively 802 and $802\times200-400^2= 400$, so the Hessian is positive definite.

However the steepest descent method converges very slowly.

In [ ]:
plot!(iter[:,2], iter[:,3])

Exact minimization of approximate minimization?

The exact minimization of the function along the search direction requires assumptions as unimodality or convexity, that are not necessarily satisfied. It is more practical to approximately minimize the function along the search direction using backtracking. This will be done more explicitely in the linesearch notebook.

For nonconvex functions, a first approach is to fix the step length.

In [ ]:
function batchdescent(f::Function, fprime::Function, x0, α::Float64, verbose::Bool = true,
                      record::Bool = false, tol::Float64 = 1e-7, maxiter::Int64 = 1000)

    function fsearch(α::Float64)
        return(f(x-α*grad))
    end

    x = x0
    k = 0

    grad = fprime(x)

    if (verbose || record)
        fx = f(x)
    end
    if (verbose)
        println("$k. x = $x, f($x) = $fx")
    end
    if (record)
        iterates = [ fx x' ]
    end
    
    while ((k < maxiter) && (norm(grad) > tol))
        x = x-α*grad
        k += 1
        grad = fprime(x)       
        if (verbose || record)
            fx = f(x)
        end
        if (verbose)
            println("$k. x = $x, f($x) = $fx")
        end
        if (record)
            iterates = [ iterates; fx x' ]
        end
    end

    if (k == maxiter)
        println("WARNING: maximum number of iterations reached")
    end

    if (record)
        return x, iterates
    else
        return x
    end
end

We can get close too the solution if $\alpha$ is small enough.

In [ ]:
sol, iter = batchdescent(f1, f1grad, [2.0,3.0], 0.1, true, true)

But if $\alpha$ is too large, it does not work at all!

In [ ]:
ol, iter = batchdescent(f1, f1grad, [2.0,3.0], 2.0, true, true)

If $f \in C^1$, $f$ convex, and $\nabla f(\cdot)$ is Lipschitz continuous, i.e. $\exists L >0$ such that $$ \forall x, y,\ \| \nabla f(x) - \nabla f(y) \|_2 \leq L \| x - y\|_2, $$ we can recover the convergence by considering a decreasing sequence of step lengths $\alpha_k > 0$ staisfying $$ \sum_{k = 1}^{+\infty} \alpha_k = +\infty,\qquad \sum_{k = 1}^{+\infty} \alpha_k^2 < +\infty. $$ Example: $\alpha_k = \frac{\kappa}{k}$.

In [ ]:
function rbdescent(f::Function, fprime::Function, x0, α0::Float64, verbose::Bool = true,
                   record::Bool = false, tol::Float64 = 1e-7, maxiter::Int64 = 1000)

    function fsearch(α::Float64)
        return(f(x-α*grad))
    end

    x = x0
    k = 0
    α = α0

    grad = fprime(x)

    if (verbose || record)
        fx = f(x)
    end
    if (verbose)
        println("$k. x = $x, f($x) = $fx")
    end
    if (record)
        iterates = [ fx x' ]
    end
    
    while ((k < maxiter) && (norm(grad) > tol))
        k += 1
        α = α0/k 
        x = x-α*grad
        grad = fprime(x)       
        if (verbose || record)
            fx = f(x)
        end
        if (verbose)
            println("$k. x = $x, f($x) = $fx", ", α = ", α)
        end
        if (record)
            iterates = [ iterates; fx x' ]
        end
    end

    if (k == maxiter)
        println("WARNING: maximum number of iterations reached")
    end

    if (record)
        return x, iterates
    else
        return x
    end
end
In [ ]:
ol, iter = rbdescent(f1, f1grad, [2.0,3.0], 2.0, true, true)
In [ ]:
ol, iter = rbdescent(f1, f1grad, [10.0,10.0], 2.0, true, true)
In [ ]:
ol, iter = rbdescent(f1, f1grad, [100.0,100.0], 2.0, true, true)
In [ ]:
ol, iter = rbdescent(f1, f1grad, [100.0,100.0], 0.1, true, true)

This technique has been proposed by Robbins and Monro in 1951 in the context of stochastic approximation, where the objective is $$ f(x) = E[g(x,\xi)] $$ and at each iteration, the next iterate is computed as $$ x_{k+1} = x_k - \alpha_k \nabla g(x_k,\xi_k) $$ where $\xi_k$ is drawn from the distribution of $\xi$.

This technique, as well as some extensions (mini-batch, stochastic average gradient,...) is still very popular in machine learning.