Calculating the width of the interval defined by an inequality












3














I am looking for a Mathematica function that takes an inequality as the input and gives back the width defined by upper bound - lower bound:



Example:



Fn[1 <= x <= 2.5]



1.5




If the inequality is evaluated to False (e.g., 2 <= x <= 1), then I need the function to return 0.



I truly appreciate your help.










share|improve this question









New contributor




Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    3














    I am looking for a Mathematica function that takes an inequality as the input and gives back the width defined by upper bound - lower bound:



    Example:



    Fn[1 <= x <= 2.5]



    1.5




    If the inequality is evaluated to False (e.g., 2 <= x <= 1), then I need the function to return 0.



    I truly appreciate your help.










    share|improve this question









    New contributor




    Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      3












      3








      3







      I am looking for a Mathematica function that takes an inequality as the input and gives back the width defined by upper bound - lower bound:



      Example:



      Fn[1 <= x <= 2.5]



      1.5




      If the inequality is evaluated to False (e.g., 2 <= x <= 1), then I need the function to return 0.



      I truly appreciate your help.










      share|improve this question









      New contributor




      Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      I am looking for a Mathematica function that takes an inequality as the input and gives back the width defined by upper bound - lower bound:



      Example:



      Fn[1 <= x <= 2.5]



      1.5




      If the inequality is evaluated to False (e.g., 2 <= x <= 1), then I need the function to return 0.



      I truly appreciate your help.







      function-construction inequalities






      share|improve this question









      New contributor




      Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 2 hours ago









      m_goldberg

      84.3k872195




      84.3k872195






      New contributor




      Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 6 hours ago









      Monire Jalili

      161




      161




      New contributor




      Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Monire Jalili is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          3 Answers
          3






          active

          oldest

          votes


















          3














          f[ineq_, var_] := RegionMeasure[ImplicitRegion[ineq, var]]

          f[1 <= x <= 2.5, x]



          1.5




          This works also for some systems of inequality in several variables:



          f[{1 <= x <= 2.5, 0 <= y <= x}, {x, y}]



          2.625







          share|improve this answer





























            2














            fn[expr_] := Module[{},
            If[! expr, Return [0]];
            Return[Abs[expr[[3]] - expr[[1]]]]
            ]

            fn[2 <= x <= 1]
            (*0*)

            fn[1 <= x <= 2.5]
            (*1.5*)

            fn[2.5 > x > 1]
            (*1.5*)


            Don't know if this works in all cases, but works in the simple cases you provide.






            share|improve this answer





























              0














              To get a function that would handle the all the kinds of arguments I want it to handle turned out to be more of a challenge than I anticipated, but here is what I came up with.



              ClearAll[fn, helper]
              SetAttributes[fn, HoldFirst]
              fn[expr_] :=
              If[expr, helper[expr], 0, helper[expr]]
              SetAttributes[helper, HoldFirst]
              helper[expr : _Inequality | _Less | _LessEqual | _Greater | _GreaterEqual] :=
              Module[{args = List @@ Unevaluated[expr], a, b},
              {a, b} = MinMax[Select[args, NumericQ]];
              b - a]
              helper[___] = $Failed;


              Tests



              fn[1 < x <= 2.5]



              1.5




              fn[1 < x <= π]



              -1 + π




              fn[1 >= x > π]



              0




              fn[1 >= x > -1]



              2




              fn[-1 < 1 <= 2.5]



              3.5




              fn[1 < x < 3 < y < 5]



              4




              fn[1.5 < 2]



              0.5




              fn["garbage"]



              $Failed







              share|improve this answer























                Your Answer





                StackExchange.ifUsing("editor", function () {
                return StackExchange.using("mathjaxEditing", function () {
                StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
                StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
                });
                });
                }, "mathjax-editing");

                StackExchange.ready(function() {
                var channelOptions = {
                tags: "".split(" "),
                id: "387"
                };
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function() {
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled) {
                StackExchange.using("snippets", function() {
                createEditor();
                });
                }
                else {
                createEditor();
                }
                });

                function createEditor() {
                StackExchange.prepareEditor({
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: false,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                imageUploader: {
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                },
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                });


                }
                });






                Monire Jalili is a new contributor. Be nice, and check out our Code of Conduct.










                draft saved

                draft discarded


















                StackExchange.ready(
                function () {
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f188960%2fcalculating-the-width-of-the-interval-defined-by-an-inequality%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                3














                f[ineq_, var_] := RegionMeasure[ImplicitRegion[ineq, var]]

                f[1 <= x <= 2.5, x]



                1.5




                This works also for some systems of inequality in several variables:



                f[{1 <= x <= 2.5, 0 <= y <= x}, {x, y}]



                2.625







                share|improve this answer


























                  3














                  f[ineq_, var_] := RegionMeasure[ImplicitRegion[ineq, var]]

                  f[1 <= x <= 2.5, x]



                  1.5




                  This works also for some systems of inequality in several variables:



                  f[{1 <= x <= 2.5, 0 <= y <= x}, {x, y}]



                  2.625







                  share|improve this answer
























                    3












                    3








                    3






                    f[ineq_, var_] := RegionMeasure[ImplicitRegion[ineq, var]]

                    f[1 <= x <= 2.5, x]



                    1.5




                    This works also for some systems of inequality in several variables:



                    f[{1 <= x <= 2.5, 0 <= y <= x}, {x, y}]



                    2.625







                    share|improve this answer












                    f[ineq_, var_] := RegionMeasure[ImplicitRegion[ineq, var]]

                    f[1 <= x <= 2.5, x]



                    1.5




                    This works also for some systems of inequality in several variables:



                    f[{1 <= x <= 2.5, 0 <= y <= x}, {x, y}]



                    2.625








                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 5 hours ago









                    Henrik Schumacher

                    49.6k468140




                    49.6k468140























                        2














                        fn[expr_] := Module[{},
                        If[! expr, Return [0]];
                        Return[Abs[expr[[3]] - expr[[1]]]]
                        ]

                        fn[2 <= x <= 1]
                        (*0*)

                        fn[1 <= x <= 2.5]
                        (*1.5*)

                        fn[2.5 > x > 1]
                        (*1.5*)


                        Don't know if this works in all cases, but works in the simple cases you provide.






                        share|improve this answer


























                          2














                          fn[expr_] := Module[{},
                          If[! expr, Return [0]];
                          Return[Abs[expr[[3]] - expr[[1]]]]
                          ]

                          fn[2 <= x <= 1]
                          (*0*)

                          fn[1 <= x <= 2.5]
                          (*1.5*)

                          fn[2.5 > x > 1]
                          (*1.5*)


                          Don't know if this works in all cases, but works in the simple cases you provide.






                          share|improve this answer
























                            2












                            2








                            2






                            fn[expr_] := Module[{},
                            If[! expr, Return [0]];
                            Return[Abs[expr[[3]] - expr[[1]]]]
                            ]

                            fn[2 <= x <= 1]
                            (*0*)

                            fn[1 <= x <= 2.5]
                            (*1.5*)

                            fn[2.5 > x > 1]
                            (*1.5*)


                            Don't know if this works in all cases, but works in the simple cases you provide.






                            share|improve this answer












                            fn[expr_] := Module[{},
                            If[! expr, Return [0]];
                            Return[Abs[expr[[3]] - expr[[1]]]]
                            ]

                            fn[2 <= x <= 1]
                            (*0*)

                            fn[1 <= x <= 2.5]
                            (*1.5*)

                            fn[2.5 > x > 1]
                            (*1.5*)


                            Don't know if this works in all cases, but works in the simple cases you provide.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 5 hours ago









                            Bill Watts

                            2,8231516




                            2,8231516























                                0














                                To get a function that would handle the all the kinds of arguments I want it to handle turned out to be more of a challenge than I anticipated, but here is what I came up with.



                                ClearAll[fn, helper]
                                SetAttributes[fn, HoldFirst]
                                fn[expr_] :=
                                If[expr, helper[expr], 0, helper[expr]]
                                SetAttributes[helper, HoldFirst]
                                helper[expr : _Inequality | _Less | _LessEqual | _Greater | _GreaterEqual] :=
                                Module[{args = List @@ Unevaluated[expr], a, b},
                                {a, b} = MinMax[Select[args, NumericQ]];
                                b - a]
                                helper[___] = $Failed;


                                Tests



                                fn[1 < x <= 2.5]



                                1.5




                                fn[1 < x <= π]



                                -1 + π




                                fn[1 >= x > π]



                                0




                                fn[1 >= x > -1]



                                2




                                fn[-1 < 1 <= 2.5]



                                3.5




                                fn[1 < x < 3 < y < 5]



                                4




                                fn[1.5 < 2]



                                0.5




                                fn["garbage"]



                                $Failed







                                share|improve this answer




























                                  0














                                  To get a function that would handle the all the kinds of arguments I want it to handle turned out to be more of a challenge than I anticipated, but here is what I came up with.



                                  ClearAll[fn, helper]
                                  SetAttributes[fn, HoldFirst]
                                  fn[expr_] :=
                                  If[expr, helper[expr], 0, helper[expr]]
                                  SetAttributes[helper, HoldFirst]
                                  helper[expr : _Inequality | _Less | _LessEqual | _Greater | _GreaterEqual] :=
                                  Module[{args = List @@ Unevaluated[expr], a, b},
                                  {a, b} = MinMax[Select[args, NumericQ]];
                                  b - a]
                                  helper[___] = $Failed;


                                  Tests



                                  fn[1 < x <= 2.5]



                                  1.5




                                  fn[1 < x <= π]



                                  -1 + π




                                  fn[1 >= x > π]



                                  0




                                  fn[1 >= x > -1]



                                  2




                                  fn[-1 < 1 <= 2.5]



                                  3.5




                                  fn[1 < x < 3 < y < 5]



                                  4




                                  fn[1.5 < 2]



                                  0.5




                                  fn["garbage"]



                                  $Failed







                                  share|improve this answer


























                                    0












                                    0








                                    0






                                    To get a function that would handle the all the kinds of arguments I want it to handle turned out to be more of a challenge than I anticipated, but here is what I came up with.



                                    ClearAll[fn, helper]
                                    SetAttributes[fn, HoldFirst]
                                    fn[expr_] :=
                                    If[expr, helper[expr], 0, helper[expr]]
                                    SetAttributes[helper, HoldFirst]
                                    helper[expr : _Inequality | _Less | _LessEqual | _Greater | _GreaterEqual] :=
                                    Module[{args = List @@ Unevaluated[expr], a, b},
                                    {a, b} = MinMax[Select[args, NumericQ]];
                                    b - a]
                                    helper[___] = $Failed;


                                    Tests



                                    fn[1 < x <= 2.5]



                                    1.5




                                    fn[1 < x <= π]



                                    -1 + π




                                    fn[1 >= x > π]



                                    0




                                    fn[1 >= x > -1]



                                    2




                                    fn[-1 < 1 <= 2.5]



                                    3.5




                                    fn[1 < x < 3 < y < 5]



                                    4




                                    fn[1.5 < 2]



                                    0.5




                                    fn["garbage"]



                                    $Failed







                                    share|improve this answer














                                    To get a function that would handle the all the kinds of arguments I want it to handle turned out to be more of a challenge than I anticipated, but here is what I came up with.



                                    ClearAll[fn, helper]
                                    SetAttributes[fn, HoldFirst]
                                    fn[expr_] :=
                                    If[expr, helper[expr], 0, helper[expr]]
                                    SetAttributes[helper, HoldFirst]
                                    helper[expr : _Inequality | _Less | _LessEqual | _Greater | _GreaterEqual] :=
                                    Module[{args = List @@ Unevaluated[expr], a, b},
                                    {a, b} = MinMax[Select[args, NumericQ]];
                                    b - a]
                                    helper[___] = $Failed;


                                    Tests



                                    fn[1 < x <= 2.5]



                                    1.5




                                    fn[1 < x <= π]



                                    -1 + π




                                    fn[1 >= x > π]



                                    0




                                    fn[1 >= x > -1]



                                    2




                                    fn[-1 < 1 <= 2.5]



                                    3.5




                                    fn[1 < x < 3 < y < 5]



                                    4




                                    fn[1.5 < 2]



                                    0.5




                                    fn["garbage"]



                                    $Failed








                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited 55 mins ago

























                                    answered 1 hour ago









                                    m_goldberg

                                    84.3k872195




                                    84.3k872195






















                                        Monire Jalili is a new contributor. Be nice, and check out our Code of Conduct.










                                        draft saved

                                        draft discarded


















                                        Monire Jalili is a new contributor. Be nice, and check out our Code of Conduct.













                                        Monire Jalili is a new contributor. Be nice, and check out our Code of Conduct.












                                        Monire Jalili is a new contributor. Be nice, and check out our Code of Conduct.
















                                        Thanks for contributing an answer to Mathematica Stack Exchange!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid



                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.


                                        Use MathJax to format equations. MathJax reference.


                                        To learn more, see our tips on writing great answers.





                                        Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                                        Please pay close attention to the following guidance:


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid



                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.


                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function () {
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f188960%2fcalculating-the-width-of-the-interval-defined-by-an-inequality%23new-answer', 'question_page');
                                        }
                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        flock() on closed filehandle LOCK_FILE at /usr/bin/apt-mirror

                                        Mangá

                                        Eduardo VII do Reino Unido