# Initial condition underdefined in NonlinearProblem

**URL:** <https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619>\
**Category:** Modelling & Simulations\
**Created:** [November 14, 2024, 6:59am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619 "2024-11-14T06:59:09Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bart\_van\_de\_Lint](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bart_van_de_lint/32/212161_2.png) [@Bart\_van\_de\_Lint](https://discourse.julialang.org/u/Bart_van_de_Lint)\
**Post date:** [November 14, 2024, 6:59am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619/1 "2024-11-14T06:59:09Z")

</div>

The following works:

```julia
using ModelingToolkit, NonlinearSolve

# Define a nonlinear system
@variables x y z
@parameters σ ρ β
eqs = [0 ~ σ * (y - x)
       0 ~ x * (ρ - z) - y
       0 ~ x * y - β * z]
@mtkbuild ns = NonlinearSystem(eqs)

guesses = [x => y, y => 1.0, z => 0.0]
ps = [σ => 10.0, ρ => 26.0, β => 8 / 3]

prob = NonlinearProblem(ns, guesses, ps)
sol = solve(prob, NewtonRaphson())

output:
retcode: Success
u: 2-element Vector{Float64}:
 -2.129924444096732e-29
 -2.398137151871876e-28

```

While this doesn’t work:

```julia
using ModelingToolkit, NonlinearSolve

# Define a nonlinear system
@variables x y z
@parameters σ ρ β
eqs = [0 ~ σ * (y - x)
       0 ~ x * (ρ - z) - y
       0 ~ x * y - β * z]
@mtkbuild ns = NonlinearSystem(eqs)

guesses = [y => 1.0, z => 0.0]
ps = [σ => 10.0, ρ => 26.0, β => 8 / 3]

prob = NonlinearProblem(ns, guesses, ps)
sol = solve(prob, NewtonRaphson())

output:
ERROR: Initial condition underdefined. Some are missing from the variable map.
Please provide a default (`u0`), initialization equation, or guess
for the following variables:

Set(Any[x])

```

Is there a good reason for this? I would think that if the initial guess for `σ` and `y` are known, the program should be able to automatically calculate the initial guess for `x` using the equation `0 ~ σ * (y - x)`

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [November 15, 2024, 9:21am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619/2 "2024-11-15T09:21:12Z")

</div>

> [@Bart\_van\_de\_Lint](#):
>
> I would think that if the initial guess for `σ` and `y` are known, the program should be able to automatically calculate the initial guess for `x` using the equation `0 ~ σ * (y - x)`

What version are you using? @cryptic.ax recently added guess propagation but it must just not hit this case.

---

<div class="post-metadata">

**Author:** ![Bart\_van\_de\_Lint](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bart_van_de_lint/32/212161_2.png) [@Bart\_van\_de\_Lint](https://discourse.julialang.org/u/Bart_van_de_Lint)\
**Post date:** [November 15, 2024, 9:24am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619/3 "2024-11-15T09:24:06Z")

</div>

ModelingToolkit v9.50.0  
NonlinearSolve v4.1.0

---

<div class="post-metadata">

**Author:** ![cryptic.ax](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cryptic.ax/32/220540_2.png) [@cryptic.ax](https://discourse.julialang.org/u/cryptic.ax)\
**Post date:** [November 15, 2024, 9:29am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619/4 "2024-11-15T09:29:26Z")

</div>

We don’t build initialization systems for `NonlinearProblem` yet. The unknowns of the simplfied system are `x` and `z`, so it complains if you give it `y` instead of `x` because it doesn’t know how to solve for the latter from the former.

---

<div class="post-metadata">

**Author:** ![Bart\_van\_de\_Lint](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bart_van_de_lint/32/212161_2.png) [@Bart\_van\_de\_Lint](https://discourse.julialang.org/u/Bart_van_de_Lint)\
**Post date:** [November 15, 2024, 9:30am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619/5 "2024-11-15T09:30:54Z")

</div>

Are you planning to add initialization systems for `NonlinearProblem`?

---

<div class="post-metadata">

**Author:** ![cryptic.ax](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cryptic.ax/32/220540_2.png) [@cryptic.ax](https://discourse.julialang.org/u/cryptic.ax)\
**Post date:** [November 15, 2024, 9:32am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619/6 "2024-11-15T09:32:16Z")

</div>

Yes, it’s in the works

---

<div class="post-metadata">

**Author:** ![Bart\_van\_de\_Lint](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bart_van_de_lint/32/212161_2.png) [@Bart\_van\_de\_Lint](https://discourse.julialang.org/u/Bart_van_de_Lint)\
**Post date:** [November 15, 2024, 9:32am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619/7 "2024-11-15T09:32:37Z")

</div>

Nice!

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [November 15, 2024, 9:36am UTC](https://discourse.julialang.org/t/initial-condition-underdefined-in-nonlinearproblem/122619/8 "2024-11-15T09:36:24Z")

</div>

Ahh I see why it’s doing this here. Yeah… okay I’ll do my morning reviews 😅 . Should come soon.
