finding a number that satisfies given conditions
Show older comments
I need to find a floating point number x from the interval 1 < x < 2 such that: x ∗ (1/x) isn't equal to 1. I'ma beginner at Matlab and don't know how this can be done. I was given a clue that using integrals could help in solving this. Could anyone help me?
3 Comments
Cedric
on 25 Oct 2013
What is the symbol/operator between the x and 1/x ?
Walter Roberson
on 25 Oct 2013
Edited: Walter Roberson
on 25 Oct 2013
Multiplication, I would say. Looks like an exercise in exploring the limits of binary floating point representation.
Beaya
on 1 Nov 2013
Answers (2)
Mike Hosea
on 4 Nov 2013
1 vote
Integrals? Not sure about that. A random search will finish faster. There are LOTS. You can use LINSPACE to generate evenly spaced trial numbers, or you can us 1 + rand(1,n) to generate n random numbers between 1 and 2. Then you can check the condition using MATLAB's elementwise array operators: bool = x.*(1./x) ~= 1. Notice the .* instead of *, since * without the . is matrix multiplication. Same thing for division. Actually if you generate a boolean array that way from a set of trial numbers, you can also extract the results from your trial vector x using MATLAB's logical indexing, e.g. x(bool). Try it!
Walter Roberson
on 4 Nov 2013
1 vote
Do a binary search over the interval realmin() to 1, to find the boundary point.
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!