# Is NonlinearSolve.jl the right package?

**URL:** <https://discourse.julialang.org/t/is-nonlinearsolve-jl-the-right-package/132931>\
**Category:** General Usage\
**Created:** [October 6, 2025, 10:25pm UTC](https://discourse.julialang.org/t/is-nonlinearsolve-jl-the-right-package/132931 "2025-10-06T22:25:20Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![co1emi11er](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/co1emi11er/32/206849_2.png) [@co1emi11er](https://discourse.julialang.org/u/co1emi11er)\
**Post date:** [October 6, 2025, 10:25pm UTC](https://discourse.julialang.org/t/is-nonlinearsolve-jl-the-right-package/132931/1 "2025-10-06T22:25:20Z")

</div>

What is the equivalent way to do this in julia?

 ![image](https://global.discourse-cdn.com/julialang/original/3X/9/4/94b9229236cce804dda1b7af8eb40d51c48e832e.png)

I wasn’t able to figure it out.

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [October 6, 2025, 10:36pm UTC](https://discourse.julialang.org/t/is-nonlinearsolve-jl-the-right-package/132931/2 "2025-10-06T22:36:28Z")

</div>

Here you go:

```Julia
julia> using NonlinearSolve

julia> function equations(vars, params)
           h, k = vars
           d_c = 18.0
           y_0 = 0.0
           length = 135.0
           height = 180.0
           eq1 = (d_c - h)^2 + (y_0 - k)^2 - 480^2
           eq2 = (length - h)^2 + (height - k)^2 - 480^2
           return [eq1, eq2]
       end
equations (generic function with 1 method)

julia> initial_guess = [400.0, -400.0]
2-element Vector{Float64}:
  400.0
 -400.0

julia> prob = NonlinearSolve.NonlinearProblem(equations, initial_guess)
NonlinearProblem with uType Vector{Float64}. In-place: false
u0: 2-element Vector{Float64}:
  400.0
 -400.0

julia> sol = NonlinearSolve.solve(prob)
sretcode: Success
u: 2-element Vector{Float64}:
  468.7605837368863
 -164.96937942897614

julia> sol.u
2-element Vector{Float64}:
  468.7605837368863
 -164.96937942897614

```

---

<div class="post-metadata">

**Author:** ![WalterMadelim](https://avatars.discourse-cdn.com/v4/letter/w/3e96dc/32.png) [@WalterMadelim](https://discourse.julialang.org/u/WalterMadelim)\
**Post date:** [October 6, 2025, 11:09pm UTC](https://discourse.julialang.org/t/is-nonlinearsolve-jl-the-right-package/132931/3 "2025-10-06T23:09:15Z")

</div>

Solving a (linear/nonlinear) equation system is nothing other than an optimization without an objective. I guess IPOPT can also do this work (possibly even automatically grab an initial guess for you).

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [October 7, 2025, 12:01am UTC](https://discourse.julialang.org/t/is-nonlinearsolve-jl-the-right-package/132931/4 "2025-10-07T00:01:49Z")

</div>

generally optimizers are much less efficient than linear/nonlinear solvers.
