Plotting all numbers from a set
古いコメントを表示
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?
採用された回答
その他の回答 (2 件)
Jan
2013 年 10 月 25 日
1 投票
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 件のコメント
Beaya
2013 年 10 月 25 日
Matt Kindig
2013 年 10 月 25 日
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
2013 年 10 月 25 日
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
2013 年 10 月 25 日
0 投票
There is an infinity of floating numbers in your interval. You can't plot all the numbers
8 件のコメント
Walter Roberson
2013 年 10 月 25 日
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
2013 年 10 月 26 日
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
2013 年 10 月 26 日
1 + 1e+6 * 1e-21 does not reach 2, "the end of the interval" ?
Azzi Abdelmalek
2013 年 10 月 26 日
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
2013 年 10 月 28 日
Azzi Abdelmalek
2013 年 10 月 28 日
編集済み: Azzi Abdelmalek
2013 年 10 月 28 日
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
2013 年 10 月 28 日
-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
2013 年 11 月 1 日
カテゴリ
ヘルプ センター および File Exchange で Axis Labels についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!