User:Thebigh/mysandbox: Difference between revisions

more
(expand)
(more)
Line 1:
The '''Minkowski question-mark function''' converts the continued fraction representation {{math|[a<sub>0</sub>; a<sub>1</sub>, a<sub>2</sub>, a<sub>3</sub>, ...]}} of a number into a binary decimal representation in which the integer part {{math|a<sub>0</sub>}} is unchanged and the {{math|a<sub>1</sub>, a<sub>2</sub>, ...}} become alternating runs of binary zeroes and ones of those lengths. The decimal point takes the place of the first zero.
 
Thus, {{math|?}}(31/7) = 71/16 because 31/17 has the continued fraction representation {{math|[4;2,3]}} giving the binary expansion {{math|4 + 0.0111<sub>2</sub>}}.
 
Among its interesting properties is that it maps roots of quadratic equations, which have repeating continued fractions, to rational numbers, which have repeating binary digits.
 
The question-mark function is continuous and monotonically increasing, so it has an inverse.
 
* Produce a function for {{math|?(x)}}. Be careful: rational numbers have two possible continued fraction representations- choose the one that will give a binary expansion ending with a 1.
* Produce the inverse function {{math|?<sup>-1</sup>(x)}}
* Verify that {{math|?(φ)}} = 5/3, where {{math|φ}} is the Greek golden ratio.
* Verify that {{math|?<sup>-1</sup>(-5/9)}} = (√13 - 7)/6
* Verify that the two functions are inverses of each other by showing that {{math|?<sup>-1</sup>(?(x))}}={{math|x}} and {{math|?(?<sup>-1</sup>(y))}}={{math|y}} for {{math|x, y}} of your choice
 
Don't worry about precision error in the last few digits.
 
==header|FreeBASIC==
 
<lang freebasic>#define MAXITER 151
 
#define MAXITER 151
 
function minkowski( x as double ) as double
Line 73 ⟶ 89:
print minkowski( 0.5*(1+sqr(5)) ), 5./3
print minkowski_inv( -5./9 ), (sqr(13)-7)/6
print minkowski(minkowski_inv(0.718281828)), minkowski_inv(minkowski(0.7182818281213141516171819))
</lang>
781

edits