In the following example, the information in which range fsolve should search for a solution and the range in which a function is defined is somehow redundant. (This example has been adopted from here where fsolve without assumptions does not throw an error but evaluates forever.)
Why can’t fsolve not always assume that the range equals the domain of interest? This would make life easier and provide more solutions to inexperienced users who have not yet learned the need for assumptions.
If there are good reasons (and there probably are) that such an implicit assumption (i.e. range equals domain) would be too restrictive: can’t fsolve give a hint or provide an new option to use ranges as assumptions?
Example with incomplete elliptic integral of the first kind


|
(1) |
![Range := 0 .. 1; plot(f(x__0), x__0 = Range, labels = [x__0, 'f(x__0)'])](/view.aspx?sf=235964_question/3a31c5cac2470456e6df9f5eee1ac271.gif)
=  
Defining the inverse of 
![g := proc (y) options operator, arrow; fsolve(`assuming`([f(x__0) = y, x__0 = Range], [lhs(Range) <= x__0 and x__0 <= rhs(Range)])) end proc](/view.aspx?sf=235964_question/30d2514dcc077b34991100dadd77dbce.gif)
![proc (y) options operator, arrow; fsolve(`assuming`([f(x__0) = y, x__0 = Range], [lhs(Range) <= x__0 and x__0 <= rhs(Range)])) end proc](/view.aspx?sf=235964_question/d70b90b0e78c484b345c14ab8f0b5430.gif)
|
(2) |
→  
Now without assumptions


|
(3) |


|
Download ranges_as_assumptions.mw