Plotting all numbers from a set
Mostrar comentarios más antiguos
Is it possible to plot all of the floating point numbers from a given set [1,2] to see the interval between consecutive numbers? How do I do this?
Respuesta aceptada
Más respuestas (2)
Jan
el 25 de Oct. de 2013
1 voto
The question is not clear. "all floating point numbers from a given set [1,2]" are the two numbers 1.0 and 2.0, and it is easy to "plot" them. But what does "see the interval" mean then?
Do you mean all floating point numbers of a given interval?
Please explain, what you actually want to achieve.
3 comentarios
Beaya
el 25 de Oct. de 2013
Matt Kindig
el 25 de Oct. de 2013
This question is still not clear. Given that the floating point values are defined as (by definition) on a discrete interval, of course they can be presented as 1 + k*epsilon, as floating point numbers are defined that way. The resulting will indeed be uniformly distributed, but only because you are defining them to be so (by defining them as double floating-point numbers, which have a finite set of 64-bit binary representations). In other words, you are not really proving anything.
Jan
el 25 de Oct. de 2013
What do you mean by "prove"? What kind of "plot" do you want? A diagram with 2^52 values would not reveal anything. Reading the IEEE-754 definitions should clear all corresponding questions.
Azzi Abdelmalek
el 25 de Oct. de 2013
0 votos
There is an infinity of floating numbers in your interval. You can't plot all the numbers
8 comentarios
Walter Roberson
el 25 de Oct. de 2013
There is not an infinity of floating point numbers in the interval: there are only 2^53 or so of them. Too large to manage is not the same as infinite ;-)
Azzi Abdelmalek
el 26 de Oct. de 2013
Instead of checking the whole interval, which needs a huge amount of memory and time, we can check the beginning and the end of the interval.
a=1
n=1e+6 % number of samples
pas=1e-21; % step
t=a:pas:a+n*pas;
y=unique(t);
v=unique((diff(y)))
%Result
2.2204e-16
Check it again with
a=2-n*pas
% the result is the same
Walter Roberson
el 26 de Oct. de 2013
1 + 1e+6 * 1e-21 does not reach 2, "the end of the interval" ?
Azzi Abdelmalek
el 26 de Oct. de 2013
It's not what I meant, I said the first part of the interval [1,2] which is [1,1+1e+6*1e-21] and the last part of the interval [2-1e+6*1e-21,2]
Beaya
el 28 de Oct. de 2013
Azzi Abdelmalek
el 28 de Oct. de 2013
Editada: Azzi Abdelmalek
el 28 de Oct. de 2013
From Walter's answer we can see the the smallest step is 2.2204e-16. I could choose pas=1e-22 but the number of samples must be greater, for example n=1e+7. I tried to choose pas as small as possible, at the same time I have to handle the problem of memory
You wrotte 1e-21 = -18.2817181715, It's not possible
Walter Roberson
el 28 de Oct. de 2013
-18.2817181715 would be exp(1) - 21, and exp(1) is often given the letter "e" as its symbol.
1e-21 on the other hand means 1 * 10^(-21), and is a syntax known to MATLAB. It can also be written 1.0E-21
Beaya
el 1 de Nov. de 2013
Categorías
Más información sobre Axis Labels en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!