# How to invert variables in the objective of an optimization model

**URL:** <https://discourse.julialang.org/t/how-to-invert-variables-in-the-objective-of-an-optimization-model/60154>\
**Category:** Optimization (Mathematical)\
**Tags:** question\
**Created:** [April 28, 2021, 9:34am UTC](https://discourse.julialang.org/t/how-to-invert-variables-in-the-objective-of-an-optimization-model/60154 "2021-04-28T09:34:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![zlq178](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zlq178/32/17952_2.png) [@zlq178](https://discourse.julialang.org/u/zlq178)\
**Post date:** [April 28, 2021, 9:34am UTC](https://discourse.julialang.org/t/how-to-invert-variables-in-the-objective-of-an-optimization-model/60154/1 "2021-04-28T09:34:27Z")

</div>

The optimization problem is：  
minimize log detP^−1  
subject to ||Pu+ buro||\2≤ 1,  
where P is a semidefinite matrix, buro is Variable, u is known.  
The code is:

```julia
using Convex, SCS, LinearAlgebra
if VERSION < v"1.2.0-DEV.0"
     LinearAlgebra.diagm(v::AbstractVector) = diagm(0 => v)
end

    u=rand(3,1)
    buro=Variable(3,1)
    P = Semidefinite(3)#定义一个半正定矩阵
    objective = logdet(inv(P))
    problem = minimize(objective,norm(P*u+buro)<=1)
    solve!(problem, () -> SCS.Optimizer())
    computed_fidelity = evaluate(objective)
    value_P = evaluate(P)

```

But error happen in `objective = logdet(inv(P))`:  
ERROR: LoadError: MethodError: no method matching inv(::Variable)  
Closest candidates are:  
inv(::Missing) at missing.jl:100  
inv(::Complex{Float64}) at complex.jl:439  
inv(::BigFloat) at mpfr.jl:464  
…  
Stacktrace:  
[1] top-level scope at untitled-36f70f3d81c9a751a6967ac32d0812fd:9  
[2] include\_string(::Function, ::Module, ::String, ::String) at .\loading.jl:1088  
in expression starting at untitled-36f70f3d81c9a751a6967ac32d0812fd:9

How could I modify it?  
Thank you very much in advance!

---

<div class="post-metadata">

**Author:** ![cvanaret](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cvanaret/32/11594_2.png) [@cvanaret](https://discourse.julialang.org/u/cvanaret)\
**Post date:** [April 28, 2021, 9:40am UTC](https://discourse.julialang.org/t/how-to-invert-variables-in-the-objective-of-an-optimization-model/60154/2 "2021-04-28T09:40:24Z")

</div>

\log(\det(A^{-1})) = \log(\frac{1}{\det(A)}) = -\log(\det(A)) 🙂

---

<div class="post-metadata">

**Author:** ![zlq178](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zlq178/32/17952_2.png) [@zlq178](https://discourse.julialang.org/u/zlq178)\
**Post date:** [April 28, 2021, 10:16am UTC](https://discourse.julialang.org/t/how-to-invert-variables-in-the-objective-of-an-optimization-model/60154/3 "2021-04-28T10:16:38Z")

</div>

thank you~
