# Solving inequations

**URL:** <https://discourse.julialang.org/t/solving-inequations/58410>\
**Category:** Numerics\
**Created:** [April 2, 2021, 2:57am UTC](https://discourse.julialang.org/t/solving-inequations/58410 "2021-04-02T02:57:18Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![statspy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/statspy/32/26630_2.png) [@statspy](https://discourse.julialang.org/u/statspy)\
**Post date:** [April 2, 2021, 2:57am UTC](https://discourse.julialang.org/t/solving-inequations/58410/1 "2021-04-02T02:57:18Z")

</div>

is there a package to solve inequations in Julia?  
2x + 3 \<= x + 7  
answer: x\<= 4

Thanks

---

<div class="post-metadata">

**Author:** ![jonniedie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jonniedie/32/12842_2.png) [@jonniedie](https://discourse.julialang.org/u/jonniedie)\
**Post date:** [April 2, 2021, 3:21am UTC](https://discourse.julialang.org/t/solving-inequations/58410/2 "2021-04-02T03:21:24Z")

</div>

I’m not sure if there is a package for it. You can do it with Symbolics, though.

```julia
julia> using Symbolics

julia> function solve_inequality(g, x)
           f = ~(g.val.arguments...)
           xeq = Symbolics.solve_for(f, x)
           if substitute(g, x=>xeq+1).val
               return g.val.f(xeq, x)
           else
               return g.val.f(x, xeq)
           end
       end

julia> @variables x
(x,)

julia> g = 2x + 3 <= x + 7
3 + 2x <= 7 + x

julia> solve_inequality(g, x)
x <= 4.0

```

Note: You’ll probably want to put some kind of check to make sure it even is an inequality if you want to be serious about this. This is just a quick and dirty solution.

---

<div class="post-metadata">

**Author:** ![statspy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/statspy/32/26630_2.png) [@statspy](https://discourse.julialang.org/u/statspy)\
**Post date:** [April 2, 2021, 3:49am UTC](https://discourse.julialang.org/t/solving-inequations/58410/3 "2021-04-02T03:49:31Z")

</div>

Thanks for the solution. I am a matlab user and its more easy to solve this kind of problem with matlab. I thought that would be some package to do it in a more clean way in julia, guess not. Thanks for solution tho.  
xD

---

<div class="post-metadata">

**Author:** ![jonniedie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jonniedie/32/12842_2.png) [@jonniedie](https://discourse.julialang.org/u/jonniedie)\
**Post date:** [April 2, 2021, 3:59am UTC](https://discourse.julialang.org/t/solving-inequations/58410/4 "2021-04-02T03:59:50Z")

</div>

One of the other symbolics packages might have this already implemented, I’m just not familiar with most of them. SymPy.jl might be a good place to check.

---

<div class="post-metadata">

**Author:** ![jonniedie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jonniedie/32/12842_2.png) [@jonniedie](https://discourse.julialang.org/u/jonniedie)\
**Post date:** [April 2, 2021, 4:05am UTC](https://discourse.julialang.org/t/solving-inequations/58410/5 "2021-04-02T04:05:12Z")

</div>

It looks like this is how you’d do it in SymPy:

```julia
julia> using SymPy

julia> @syms x
(x,)

julia> g = LessThan(2x + 3, x + 7)
2⋅x + 3 ≤ x + 7

julia> solve(g, x)
x ≤ 4 ∧ -∞ < x

```

---

<div class="post-metadata">

**Author:** ![statspy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/statspy/32/26630_2.png) [@statspy](https://discourse.julialang.org/u/statspy)\
**Post date:** [April 2, 2021, 4:07am UTC](https://discourse.julialang.org/t/solving-inequations/58410/6 "2021-04-02T04:07:30Z")

</div>

wow. Now its much better. Thank for all you help Jonniedie. I am already reading SymPy documentation. Thanks mate, you made my day.

---

<div class="post-metadata">

**Author:** ![amrods](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amrods/32/2543_2.png) [@amrods](https://discourse.julialang.org/u/amrods)\
**Post date:** [April 2, 2021, 4:12am UTC](https://discourse.julialang.org/t/solving-inequations/58410/7 "2021-04-02T04:12:31Z")

</div>

I think you can also do “easy” inequalities with `JuMP.jl`:

```julia
using JuMP

model = Model()

@variable(model, x)
@constraint(model, 2x + 3 <= x + 7)
# x ≤ 4.0

```

---

<div class="post-metadata">

**Author:** ![statspy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/statspy/32/26630_2.png) [@statspy](https://discourse.julialang.org/u/statspy)\
**Post date:** [April 2, 2021, 4:36am UTC](https://discourse.julialang.org/t/solving-inequations/58410/8 "2021-04-02T04:36:37Z")

</div>

this is also a good answer. Thanks man.

---

<div class="post-metadata">

**Author:** ![EvoArt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/evoart/32/25357_2.png) [@EvoArt](https://discourse.julialang.org/u/EvoArt)\
**Post date:** [August 11, 2021, 9:42am UTC](https://discourse.julialang.org/t/solving-inequations/58410/9 "2021-08-11T09:42:20Z")

</div>

@YingboMa  
Is this something that can be done easily in Symbolics at this point, or is it on the roadmap?
