Non-integer base of numeration

From testwiki
Jump to navigation Jump to search

Template:Short description Template:More footnotes needed Template:Numeral systems A non-integer representation uses non-integer numbers as the radix, or base, of a positional numeral system. For a non-integer radix β > 1, the value of

x=dnd2d1d0.d1d2dm

is

x=βndn++β2d2+βd1+d0+β1d1+β2d2++βmdm.

The numbers di are non-negative integers less than β. This is also known as a β-expansion, a notion introduced by Template:Harvtxt and first studied in detail by Template:Harvtxt. Every real number has at least one (possibly infinite) β-expansion. The set of all β-expansions that have a finite representation is a subset of the ring Z[β, β−1].

There are applications of β-expansions in coding theory[1] and models of quasicrystals.[2]

Construction

β-expansions are a generalization of decimal expansions. While infinite decimal expansions are not unique (for example, 1.000... = 0.999...), all finite decimal expansions are unique. However, even finite β-expansions are not necessarily unique, for example φ + 1 = φ2 for β = φ, the golden ratio. A canonical choice for the β-expansion of a given real number can be determined by the following greedy algorithm, essentially due to Template:Harvtxt and formulated as given here by Template:Harvtxt.

Let Template:Math be the base and x a non-negative real number. Denote by Template:Math the floor function of x (that is, the greatest integer less than or equal to x) and let Template:Math be the fractional part of x. There exists an integer k such that Template:Math. Set

dk=x/βk

and

rk={x/βk}.

For Template:Math, put

dj=βrj+1,rj={βrj+1}.

In other words, the canonical β-expansion of x is defined by choosing the largest dk such that Template:Math, then choosing the largest dk−1 such that Template:Math, and so on. Thus it chooses the lexicographically largest string representing x.

With an integer base, this defines the usual radix expansion for the number x. This construction extends the usual algorithm to possibly non-integer values of β.

Conversion

Following the steps above, we can create a β-expansion for a real number n0 (the steps are identical for an n<0, although Template:Mvar must first be multiplied by Template:Val to make it positive, then the result must be multiplied by Template:Val to make it negative again).

First, we must define our Template:Mvar value (the exponent of the nearest power of Template:Mvar greater than Template:Mvar, as well as the amount of digits in nβ, where nβ is Template:Mvar written in base Template:Mvar). The Template:Mvar value for Template:Mvar and Template:Mvar can be written as:

k=logβ(n)+1

After a Template:Mvar value is found, nβ can be written as Template:Mvar, where

dj=(n/βj)modβ,n=ndj*βj

for Template:Math. The first Template:Mvar values of Template:Mvar appear to the left of the decimal place.

This can also be written in the following pseudocode:[3]

function toBase(n, b) {
	k = floor(log(b, n)) + 1
	precision = 8
	result = ""

	for (i = k - 1, i > -precision-1, i--) {
		if (result.length == k) result += "."
		
		digit = floor((n / b^i) mod b)
		n -= digit * b^i
		result += digit
	}

	return result
}

Note that the above code is only valid for 1<β10 and n0, as it does not convert each digits to their correct symbols or correct negative numbers. For example, if a digit's value is Template:Val, it will be represented as Template:Val instead of Template:Mvar.

Example implementation code

To base Template:Pi

  • JavaScript:[3]
    function toBasePI(num, precision = 8) {    
        let k = Math.floor(Math.log(num)/Math.log(Math.PI)) + 1;
        if (k < 0) k = 0;
    
        let digits = [];
    
        for (let i = k-1; i > (-1*precision)-1; i--) {
            let digit = Math.floor((num / Math.pow(Math.PI, i)) % Math.PI);
            num -= digit * Math.pow(Math.PI, i);
            digits.push(digit);
    
            if (num < 0.1**(precision+1) && i <= 0)
                break;
        }
    
        if (digits.length > k)
            digits.splice(k, 0, ".");
    
        return digits.join("");
    }
    

From base Template:Pi

  • JavaScript:[3]
    function fromBasePI(num) {
        let numberSplit = num.split(/\./g);
        let numberLength = numberSplit[0].length;
    
        let output = 0;
        let digits = numberSplit.join("");
    
        for (let i = 0; i < digits.length; i++) {
            output += digits[i] * Math.pow(Math.PI, numberLength-i-1);
        }
    
        return output;
    }
    

Examples

Base [[Square root of 2|Template:Radic]] behaves in a very similar way to base 2 as all one has to do to convert a number from binary into base Template:Radic is put a zero digit in between every binary digit; for example, 191110 = 111011101112 becomes 101010001010100010101Template:Radic and 511810 = 10011111111102 becomes 1000001010101010101010100Template:Radic. This means that every integer can be expressed in base Template:Radic without the need of a decimal point. The base can also be used to show the relationship between the side of a square to its diagonal as a square with a side length of 1Template:Radic will have a diagonal of 10Template:Radic and a square with a side length of 10Template:Radic will have a diagonal of 100Template:Radic. Another use of the base is to show the silver ratio as its representation in base Template:Radic is simply 11Template:Radic. In addition, the area of a regular octagon with side length 1Template:Radic is 1100Template:Radic, the area of a regular octagon with side length 10Template:Radic is 110000Template:Radic, the area of a regular octagon with side length 100Template:Radic is 11000000Template:Radic, etc…

Golden base

Template:Main In the golden base, some numbers have more than one decimal base equivalent: they are ambiguous. For example: 11φ = 100φ.

Base ψ

There are some numbers in base ψ that are also ambiguous. For example, 101ψ = 1000ψ.

Base e

With base e the natural logarithm behaves like the common logarithm in base 10, as ln(1e) = 0, ln(10e) = 1, ln(100e) = 2 and ln(1000e) = 3 (or more precisely the representation in base e of 3, which is of course a non-terminating number). This means that the integer part of the natural logarithm of a number in base e counts the number of digits before the separating point in that number, minus one.

The base e is the most economical choice of radix β > 1,[4] where the radix economy is measured as the product of the radix and the length of the string of symbols needed to express a given range of values. A binary number uses only two different digits, but it needs a lot of digits for representing a number; base 10 writes shorter numbers, but it needs 10 different digits to write them. The balance between those is base e, which therefore would store numbers optimally.

Base π

Base π can be used to more easily show the relationship between the diameter of a circle to its circumference, which corresponds to its perimeter; since circumference = diameter × π, a circle with a diameter 1π will have a circumference of 10π, a circle with a diameter 10π will have a circumference of 100π, etc. Furthermore, since the area = π × radius2, a circle with a radius of 1π will have an area of 10π, a circle with a radius of 10π will have an area of 1000π and a circle with a radius of 100π will have an area of 100000π.[5]

Properties

In no positional number system can every number be expressed uniquely. For example, in base ten, the number 1 has two representations: 1.000... and 0.999.... The set of numbers with two different representations is dense in the reals,[6] but the question of classifying real numbers with unique β-expansions is considerably more subtle than that of integer bases.[7]

Another problem is to classify the real numbers whose β-expansions are periodic. Let β > 1, and Q(β) be the smallest field extension of the rationals containing β. Then any real number in [0,1) having a periodic β-expansion must lie in Q(β). On the other hand, the converse need not be true. The converse does hold if β is a Pisot number,[8] although necessary and sufficient conditions are not known.

See also

References

Footnotes

Template:Reflist

Sources

Template:Refbegin

Template:Refend

Further reading