Problems with Solving inequalities in matlab

6 views (last 30 days)
Hello, I have a question on how to solve in matlab.
I have tried the following code:
syms x;
f = (sqrt(x+1)-1)/x;
sol = solve(f<(sqrt(2)-1)/2,x);
but I only get the following error:
sol =
Empty sym: 0-by-1
Warning: Unable to find explicit solution. For options, see help.
Is there someone out there who could help?

Answers (2)

John D'Errico
John D'Errico on 1 Jan 2021
Edited: John D'Errico on 1 Jan 2021
That is not an error. It is a warning message, telling you there is a problem with what you have posed to solve.
There is no explicit solution found, because there are infinitely many solutions.
syms x;
f = (sqrt(x+1)-1)/x;
fplot(f,[-5,100])
yline((sqrt(2)-1)/2);
A solution exists for ALL x, such that the curve is less than the horizontal line drawn. That is to say, whenever x strictly exceeds
xmin = solve(f == (sqrt(2)-1)/2)
xmin = 
vpa(xmin)
ans = 
13.65685424949237156668015607393
  3 Comments
Matthew Cassini
Matthew Cassini on 8 Dec 2022
I don't get why it doesn't give the minimum or maximum value that is a solution, as that is normally how you would solve an inequality. If given 2x > 1 and asked to find x you would say x > 1/2, not theres infinitely many solutions.
Torsten
Torsten on 8 Dec 2022
You get the "cut points" of your inequality if you solve it as an equation as John D'Errico did.
syms x
f = 2*x==1;
solve(f)
ans = 

Sign in to comment.


Walter Roberson
Walter Roberson on 2 Jan 2021
solve() is pretty inconsistent as to whether it can handle inequalities. When it succeeds and you do not use returnconditions then it picks a representative solution instead of showing the inequality boundaries. For example if the range of solution was 3 to 15 it might say 9, but if it were -1 to 15 it might say 0

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!