Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.
Ah, this makes more sense. How do you know that 0.999... is irrational?Originally Posted by Mario F.
Look up a C++ Reference and learn How To Ask Questions The Smart WayOriginally Posted by Bjarne Stroustrup (2000-10-14)
Actually you are right. I didn't understand the true idea of irrational numbers. Looking it up (because you asked, I knew there was something going on) 0.999 is not irrational because there's a repeating sequence of just a single 9. It can be expressed as a fraction.
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.
And what is that fraction?
lim[x -> infinity] (10^x - 1)/(10^x)
;-)
And yes:
= 1
@Mario F:
I'm impressed that you say you've been patient with "me", as it's you claiming that all the mathematicians are wrong.
You say lim[x -> infinity] 1/x APPROACHES 0. As Sipher stated as well. There are other ways to denote that, such as:
1/x -> 0 (when x -> infinity)
That's a correct statement read as: 1 over x approaches 0 as x approaches infinity. That's fine.
However, that's not what the limit "operator" does. Because it basically is somewhat of an operator. Not exactly, because it doesn't operate on a just a number like most operators but it operates on a formula.
Indeed, the following statements are exactly the same:
lim[x -> infinity] 1/x = 0
1/x -> 0 (when x -> infinity)
They are two ways of writing exactly the same things. This, however, is WRONG:
lim[x -> infinity] 1/x -> infinity
That's strange... I'm saying they are right. I must say, you excel as a spin doctor.
What I am saying however is that your interpretation of the results is wrong.
Well, we agree then. Because that's what I said. That the equal sign in limits does not mean "equals", but "approaches". Did you read?Indeed, the following statements are exactly the same:
lim[x -> infinity] 1/x = 0
1/x -> 0 (when x -> infinity)
So, being that the case how do you explain the last part of your proof where you transport that 0 obtained through approaches into algebra and use that to make a claim of identity in which 0.999... equals 1, instead of a proof that it approaches 1?
I'm asking. Indulge me.
EDIT: Here's your "proof" as it should have been written:
Of course, your "proof" only served to show what we all already know.Code:0.9999... is, per definition: 0.9999... = lim(x -> inf) ( 9*10^-1 + 9*10^-2 + 9*10^-3 + ... + 9*10^-x ) (that's the definition of ..., agreed?) If so: 1 - lim(x -> inf) ( 9*10^-1 + 9*10^-2 + 9*10^-3 + ... + 9*10^-x ) = lim(x -> inf) ( 1 - 9*10^-1 + 9*10^-2 + 9*10^-3 + ... + 9*10^-x ) = lim(x -> inf) ( 1*10^-1 + 9*10^-2 + 9*10^-3 + ... + 9*10^-x ) = lim(x -> inf) ( 1*10^-2 + 9*10^-3 + ... + 9*10^-x ) ... = lim(x -> inf) ( 1*10^-x ) = 0 So: 1 - 0.9999... -> 0 0.9999... -> 1
Last edited by Mario F.; 03-03-2011 at 01:46 PM.
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.
Here's another way to look at it, going back to the rational number definition:
3 / 3 = 1. Written out in long division:
But what if we do this:Code:1 ___ 3 ) 3 - 3 __ 0
So 3 / 3 = 1 = 0.999....Code:0.999... _______ 3 ) 3.000 - 0 __ 3 0 -2 7 ___ 30 -27 __ 30 -27 __ 3 ...
No, the equals sign doesn't mean "goes towards". Because lim itself asks the question "where does this go to?" It doesn't go to "nearly 1". No, it goes to 1.
It's like saying ceil(0.9) is nearly 1. It's not nearly one, it's one! Because ceil itself makes it one.
It's:
lim[x -> inf] 1/x = (lim[x -> inf] 1/x) = 0
equals still means equals, the question before the equals is just changed to become "the value the function goes to."
See, in my proof:
Equals! Not goes towards, as the "limit" itself means where it goes towards, and it goes towards 1 exactly. I agree that it never actually becomes one.Code:1 - lim(x -> inf) ( 9*10^-1 + 9*10^-2 + 9*10^-3 + ... + 9*10^-x ) = 1 - 1 = 0
Hence my proof is still right, assuming this is true, but that's the definition of "..." I believe:
Code:0.9999... = lim(x -> inf) ( 9*10^-1 + 9*10^-2 + 9*10^-3 + ... + 9*10^-x )
Last edited by EVOEx; 03-03-2011 at 02:06 PM.
Maybe the point of contention would be resolved if we looked at a source. On the limit of a sequence:
Limit (mathematics) - Wikipedia, the free encyclopediaFor every real number ε > 0, there exists a natural number n0 such that for all n > n0, |xn − L| < ε.
Intuitively, this means that eventually all elements of the sequence get as close as we want to the limit, since the absolute value |xn − L| is the distance between xn and L. Not every sequence has a limit; if it does, we call it convergent, otherwise divergent. One can show that a convergent sequence has only one limit.
The limit of a sequence and the limit of a function are closely related. On one hand, the limit of a sequence is simply the limit at infinity of a function defined on natural numbers. On the other hand, a limit of a function f at x, if it exists, is the same as the limit of the sequence xn = f(x + 1/n).
If a limit is one, it converges at one... which, by induction means here, there is no distance between 1 and 0.999... there would have to be no limit in order for the proof to be wrong.
I'd accept that 0.999... can't be 1 in other number sets, but it should be true enough for the reals.
Last edited by whiteflags; 03-03-2011 at 04:02 PM.
There's a distance between 0.999... and 1. It's another problem-number; an infinitesimal. For that distance to not exist we must agree that an infinitesimal is 0.
So with that in mind,
if 0.999... is 1,
it follows that 1 + infinitesimal = 1.
However, infinitesimals have been proven to exist for real numbers, with the help of models such as Hyperreals and the Internal Set Theory. In them it becomes established that, for reals, an infinitesimal is a non standard number whose modulus is less than any non zero standard real number.
So an infinitesimal must not be 0. In fact it has strange properties. One of them being that it is a number (0¯) such that 0¯^2 = 0, but 0¯ isn't necessarily 0 (**).
The whole of the hyperreals and internal set theory models are way over my head and I cannot possibly comprehend them above what lies at the surface. But what is made clear is that an infinitesimal is not 0. So 1 + infinitesimal is not 1. And if an infinitesimal is not 0, there is a distance between 0.999... and 1.
(**)Yes, it denies the principle of excluded middle. And another reason for why when we are dealing with these quantities, we are better off departing from conventional mathematics and extend the language. Because with the conventional tools, one cannot possibly handle these numbers. Or can, but in a certain comfort zone and making certain concessions to rigor that can eventually be challenged... as I've been trying to do here, without much success.
Last edited by Mario F.; 03-03-2011 at 08:25 PM.
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.
It is irrelevant, while considering the reals, to mention the hyperreals. I'm assuming we are talking about real numbers. That said, I can't say whether or not .999... = 1 in the hyperreals, because I haven't studied them myself. Specifically, I haven't done much research on the hyperreal metric. The metric of the reals is what allows me, I claim, to be able to say .999... = 1. So, for that reason, the hyperreals are pretty foreign to me.
You assume 1 - .999... = infinitesimal. Regardless of whether it does or not, you can't use that fact to prove itself, that's circular logic.Originally Posted by Mario
When considering the reals, this means they are equal. When one says infinitesimal, they mean a limit tending to 0. Like lim(x->3) x-3 would result in an infinitesimal because the expression inside the limit would never actually equal 0, and would only be said to equal 0 when the limit is evaluated. More concisely: lim(x->3) x-3 is an infinitesimal, 3 - 3 is 0. Now, following this same logic, we can see that the limit lim(x->.999...) 1 - x would be an infinitesimal as a limit, which allows us, assuming 1 - x is continuous on an open interval around x=.999..., to say .999... = 1.Originally Posted by Mario
Also, from my limited knowledge of hyperreals, infinitesimals only result from
Note that while hyperreals do extend the real number system, the internal set theory does not. It extends the axioms. Both were created independently to deal with exactly the limitations of conventional mathematics when dealing with these quantities.
You can ignore hyperreals if they bother you (I would agree, although they work just like ZFC reals). But the internal set theory is simply an extension to the axioms. There's no new number system. And it alone can explain infinitesimals and their properties. I suppose, you can ignore the internal set theory too, if that is what it takes to keep making 0.999... equal to 1. I choose not to, because conventional mathematics expresses an infinitesimal as 0, or 0.999... as 1. These are, to me, a clear evidence of its limitations when it comes to dealing with these quantities.
Actually no. I assume that infinitesimal equals 0. That's at the genesis of EVOEx proof. He needs to demonstrate that an infinitesimal is zero, in order to establish that 0.999... is 1. It's ironic that you make the accusation of circular logic. Indeed it is. That was my argument #1.You assume 1 - .999... = infinitesimal.
Last edited by Mario F.; 03-03-2011 at 10:28 PM.
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.
What's 1 / 9? 0.111...
What's 2 / 9? 0.222...
What's 3 / 9? 0.333...
...
What's 8 / 9? 0.888...
What's 9 / 9? In keeping with the obvious pattern, shouldn't it be 0.999... ? But 9 / 9 = 1. So doesn't 0.999... = 1?
Code://try //{ if (a) do { f( b); } while(1); else do { f(!b); } while(1); //}
I did not assume that infinitesimal equals 0, as I said before. I said the LIMIT of something going to infinitesimal is 0. There's a big difference.
As whiteflags so kindly provided us with the quote of what a limit is:
So let's look at that: "For every real number ε > 0, there exists a natural number n0 such that for all n > n0, |xn − L| < ε."For every real number ε > 0, there exists a natural number n0 such that for all n > n0, |xn − L| < ε.
Intuitively, this means that eventually all elements of the sequence get as close as we want to the limit, since the absolute value |xn − L| is the distance between xn and L. Not every sequence has a limit; if it does, we call it convergent, otherwise divergent. One can show that a convergent sequence has only one limit.
The limit of a sequence and the limit of a function are closely related. On one hand, the limit of a sequence is simply the limit at infinity of a function defined on natural numbers. On the other hand, a limit of a function f at x, if it exists, is the same as the limit of the sequence xn = f(x + 1/n).
If we take 1/x for x -> infinity, then "| 1/x - 0 | < ε" for every real number ε. Hence the limit, again, is 0 and not nearly 0.
I think the same holds for hyperreals as the definition asks specifically for a REAL number ε.
No, I'm not taking into account hyperreals. But then again, if we DO use hyperreals, don't we have to state it? By "default" hyperreals aren't used, are they?
So I agree that it may not be true for hyperreals. But the problem never was posed as a problem about hyperreals.
Ah, fractions. I must confess they are elegant "proofs". Just as the 0.333... proof whiteflags shown some pages back, they represent however what I most dislike about these proofs of 0.999... is 1. And that is, they take advantage of the target audience knowledge. We were basically indoctrinated into accepting 1/9 = 0.111... or 1/3 = 0.333... without questioning the nature of the right side of the equality.
However it's easy to understand once you think about it, that we don't really have an exact representation for 1/9 or 1/3. 0.333... is merely a representation of that fraction, but itself a number that cannot be precisely expressed. Any attempts will always result in an approximation, much the same way we can never divide a segment of line in 3 equal parts; we will always be close to it, but never actually reaching it.
So we are left with the same problem. We are treating the representations 0.111..., 0.222..., etc. as if some precise numbers they were. We even perform arithmetics on these representations that aren't actual numbers and expect to come with a solution.
With all due respect that you deserve brewbuck (and that you do), it's no different than magic. A carefully planned trick to fool the mind. The most obvious way to find this trick is to simply lose the non-number representation and use real numbers instead. As soon as you do that, for every level of precision, your equalities will all fail. And if a proof fails all the way towards infinity, isn't it safe to assume it isn't a good enough proof?
Indeed there is. A huge difference. An infinitesimal-sized difference. That is being treated as 0 by the last part of your proof. And to that I object.
Good, I'm not either. As I said one post above, an infinitesimal was proved to be a quantity greater than 0 in the Real number system by other methods.
Last edited by Mario F.; 03-04-2011 at 08:28 AM.
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.