# How to make Optim's optimize work for scalars

**URL:** <https://discourse.julialang.org/t/how-to-make-optims-optimize-work-for-scalars/34343>\
**Category:** Optimization (Mathematical)\
**Tags:** question\
**Created:** [February 8, 2020, 12:22pm UTC](https://discourse.julialang.org/t/how-to-make-optims-optimize-work-for-scalars/34343 "2020-02-08T12:22:01Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [February 8, 2020, 1:08pm UTC](https://discourse.julialang.org/t/how-to-make-optims-optimize-work-for-scalars/34343/2 "2020-02-08T13:08:14Z")

</div>

> [@compleat](#):
>
> let’s assume I am willing to undertake any ‘risks’ […] I don’t mean the ‘Brent’s’ solution which apparently works - I want something fast

I am not sure you are aware of the possible pitfalls. Curiously, multivariate methods can break down in surprising ways in 1D, and can easily yield suboptimal performance. Optim also has `GoldenSection()`, see

> **[Optim.jl](https://julianlsolvers.github.io/Optim.jl/stable/#user/minimization/%23minimizing-a-univariate-function-on-a-bounded-interval)**
>
> Pure Julia implementations of optimization algorithms.

That said, you can always write a wrapper like

```julia
using Optim

function univariate_optimize(f, x0, args...; kwargs...)
    opt = Optim.optimize(x -> f(x[1]), [x0], args...; kwargs...)
    @assert Optim.converged(opt)
    Optim.minimizer(opt)[1]
end

univariate_optimize(x -> abs2(x), 1.0, BFGS(); autodiff = :forward)

```

You just have to make a decision about what to extract from `Optim.MultivariateOptimizationResults`, or write a conversion routine to `Optim.UnivariateOptimizationResults`.

---

_[View the full topic](https://discourse.julialang.org/t/how-to-make-optims-optimize-work-for-scalars/34343)._
