[math-fun] The wandering sun --- gear-train polynomials
I have been developing a procedure for computing the polynomial associated with a given eccentric planetary gear train. In outline, it generates sunsets by solving inverse trigonometric equations of form belt-length = integer , numerically to high precision; then deduces an integer relation between successive powers of some chosen sunset, via LLL lattice basis reduction. The process is not currently fully automated: the user remains obliged to estimate suitable precision and polynomial degree, and to select a sunset (often but not always the minimum) not subsumed by some smaller train. As an example, consider the (symmetric) train [r, s; p, t, q] = [28, -12; 12, 8, 4] = 4*[7, -3; 3, 2, 1] . Computing possible sunsets h , then processing h -> h^2 * 2/(r-s) = h^2/20 (to reduce eventual polynomial degree and coefficient size) yields values to 6 decimal digits [0.164185, 0.177674, 0.203751, 0.250000, 0.334135, 0.504112, 0.937348, 4.00000] . (Maximum value 4 represents sun and ring touching externally: an overlapping, numerically pathological case best excluded!) Because this train is (concentric with a multiple of) 4x a smaller train, alternate values merely yield polynomials associated with 2x or 1x multiples. But applying LLL to powers of (say) the first value yields polynomial 400*X^6 + 768*X^5 + 22425*X^4 - 38960*X^3 + 19680*X^2 - 3840*X + 256 , with just 4 positive real roots, corresponding to the 4 remaining values. Its coefficients are highly composite: [2^4 5^2, 2^8 3, 3 5^2 13 23, -2^4 5 487, 2^5 3 5 41, -2^8 3 5, 2^8] . Substituting all 8 values into the polynomial yields syndrome [2.5 E-179, -1.0, -3.6 E-179, 5.7, -1.3 E-179, -1.9 E2, 2.5 E-177, 6.0 E6] . Working single precision was 180 digits, double that for solving equations and accumulating inner products; degree assumed was m = 12 ; polynomial factors of degrees 1,5 were dropped from the raw result. A remarkable feature: the smaller multiple [21, -9; 9, 6, 3] = 3*[7, -3; 3, 2, 1] yields processed values h^2/15 = [0.167544, 0.193318, 0.250000, 0.377104, 0.736875, 4.00000] (4 relevant), and polynomial 400*X^6 + 3684*X^5 + 22425*X^4 - 38960*X^3 + 19680*X^2 - 3840*X + 256 --- identical to that above except for a single coefficient! QUERY: Given dimension (ie. presumed polynomial degree) m , what precision is necessary to ensure successful lattice basis reduction? Fred Lunnon
While for train [42, -18, 18, 12, 6] = 6*[7, -3, 3, 2, 1] the polynomial is 400*X^6 - 2148*X^5 + 22425*X^4 - 38960*X^3 + 19680*X^2 - 3840*X + 256 --- so 3x, 4x, 6x yield polynomials identical except for X^5 coefficient. Weird! WFL On 8/25/15, Fred Lunnon <fred.lunnon@gmail.com> wrote:
I have been developing a procedure for computing the polynomial associated with a given eccentric planetary gear train. In outline, it generates sunsets by solving inverse trigonometric equations of form belt-length = integer , numerically to high precision; then deduces an integer relation between successive powers of some chosen sunset, via LLL lattice basis reduction.
The process is not currently fully automated: the user remains obliged to estimate suitable precision and polynomial degree, and to select a sunset (often but not always the minimum) not subsumed by some smaller train.
As an example, consider the (symmetric) train [r, s; p, t, q] = [28, -12; 12, 8, 4] = 4*[7, -3; 3, 2, 1] .
Computing possible sunsets h , then processing h -> h^2 * 2/(r-s) = h^2/20 (to reduce eventual polynomial degree and coefficient size) yields values to 6 decimal digits [0.164185, 0.177674, 0.203751, 0.250000, 0.334135, 0.504112, 0.937348, 4.00000] . (Maximum value 4 represents sun and ring touching externally: an overlapping, numerically pathological case best excluded!)
Because this train is (concentric with a multiple of) 4x a smaller train, alternate values merely yield polynomials associated with 2x or 1x multiples. But applying LLL to powers of (say) the first value yields polynomial 400*X^6 + 768*X^5 + 22425*X^4 - 38960*X^3 + 19680*X^2 - 3840*X + 256 , with just 4 positive real roots, corresponding to the 4 remaining values. Its coefficients are highly composite: [2^4 5^2, 2^8 3, 3 5^2 13 23, -2^4 5 487, 2^5 3 5 41, -2^8 3 5, 2^8] .
Substituting all 8 values into the polynomial yields syndrome [2.5 E-179, -1.0, -3.6 E-179, 5.7, -1.3 E-179, -1.9 E2, 2.5 E-177, 6.0 E6] .
Working single precision was 180 digits, double that for solving equations and accumulating inner products; degree assumed was m = 12 ; polynomial factors of degrees 1,5 were dropped from the raw result.
A remarkable feature: the smaller multiple [21, -9; 9, 6, 3] = 3*[7, -3; 3, 2, 1] yields processed values h^2/15 = [0.167544, 0.193318, 0.250000, 0.377104, 0.736875, 4.00000] (4 relevant), and polynomial 400*X^6 + 3684*X^5 + 22425*X^4 - 38960*X^3 + 19680*X^2 - 3840*X + 256 --- identical to that above except for a single coefficient!
QUERY: Given dimension (ie. presumed polynomial degree) m , what precision is necessary to ensure successful lattice basis reduction?
Fred Lunnon
* Fred Lunnon <fred.lunnon@gmail.com> [Aug 26. 2015 07:49]:
[...]
QUERY: Given dimension (ie. presumed polynomial degree) m , what precision is necessary to ensure successful lattice basis reduction?
Pari/GP's help on algdep() points to http://www.sciencedirect.com/science/article/pii/S0012365X99002563 Since that paper appeared the performance of the function (which is LLL in it's core) is said to have been sped up by a factor of 200. I'd be surprised if _practical_ bounds for either precision or run-time are known. Observationally a good implementation of LLL works "surprisingly often and surprisingly fast". There is a paper about hard instances, search for hard instances for LLL Pari/GP's help on lindep() says that by default "the accuracy is chosen internally using a crude heuristic". This appears to back up what I said above. Best regards, jj
Fred Lunnon
_______________________________________________ math-fun mailing list math-fun@mailman.xmission.com https://mailman.xmission.com/cgi-bin/mailman/listinfo/math-fun
So I have this algebraic number x , a root of the polynomial, irreducible over the integers, F(X) = \sum_{0 <= i <= m} c_i X^{m-i} . If it happens that some b divides each coefficient, I can divide c_i -> c_i/b , and the root remains unchanged: x -> x . Or if c_i is divisible by b^i , I can divide c_i -> c_i/2^i , and the root is halved: x -> x/2 . But suppose c_i divisible by b^|i-k| for some 0 < k < m : I wish to dispose of these superfluous factors as well, but what appropriate transformation should apply to x ? This behaviour is displayed by sunset polynomials of dilations of train [7, -3; 3, 2, 1] , for which b = 4 and k = m/3 . For example, the 8 novel sunsets of [r, s, p, t, q] = [84, -36; 36, 24, 12] = 12*[7, -3; 3, 2, 1] , after reduction h -> h' = (h/50)^2 [note typo in my earlier post!] , are the positive real roots, approximately 0.160458, 0.172003, 0.184713, 0.231571, 0.272437, 0.432110, 0.601110, 1.85694, of F(X) = 160000*X^12 + 614400*X^11 - 6979344*X^10 + 3276800*X^9 + 458782065*X^8 - 1720199520*X^7 + 2394836160*X^6 - 1705296384*X^5 + 697996800*X^4 - 171089920*X^3 + 24821760*X^2 - 1966080*X + 65536 --- note c_4 is odd. Fred Lunnon
Correction: Or if c_i is divisible by b^i , I can divide c_i -> c_i/b^i , and the root is halved: x -> x/b . WFL On 8/27/15, Fred Lunnon <fred.lunnon@gmail.com> wrote:
So I have this algebraic number x , a root of the polynomial, irreducible over the integers, F(X) = \sum_{0 <= i <= m} c_i X^{m-i} .
If it happens that some b divides each coefficient, I can divide c_i -> c_i/b , and the root remains unchanged: x -> x .
Or if c_i is divisible by b^i , I can divide c_i -> c_i/2^i , and the root is halved: x -> x/2 .
But suppose c_i divisible by b^|i-k| for some 0 < k < m : I wish to dispose of these superfluous factors as well, but what appropriate transformation should apply to x ?
This behaviour is displayed by sunset polynomials of dilations of train [7, -3; 3, 2, 1] , for which b = 4 and k = m/3 . For example, the 8 novel sunsets of [r, s, p, t, q] = [84, -36; 36, 24, 12] = 12*[7, -3; 3, 2, 1] , after reduction h -> h' = (h/50)^2 [note typo in my earlier post!] , are the positive real roots, approximately 0.160458, 0.172003, 0.184713, 0.231571, 0.272437, 0.432110, 0.601110, 1.85694, of F(X) = 160000*X^12 + 614400*X^11 - 6979344*X^10 + 3276800*X^9 + 458782065*X^8 - 1720199520*X^7 + 2394836160*X^6 - 1705296384*X^5 + 697996800*X^4 - 171089920*X^3 + 24821760*X^2 - 1966080*X + 65536 --- note c_4 is odd.
Fred Lunnon
* Fred Lunnon <fred.lunnon@gmail.com> [Aug 27. 2015 08:16]:
So I have this algebraic number x , a root of the polynomial, irreducible over the integers, F(X) = \sum_{0 <= i <= m} c_i X^{m-i} .
If it happens that some b divides each coefficient, I can divide c_i -> c_i/b , and the root remains unchanged: x -> x .
Or if c_i is divisible by b^i , I can divide c_i -> c_i/2^i , and the root is halved: x -> x/2 .
But suppose c_i divisible by b^|i-k| for some 0 < k < m : I wish to dispose of these superfluous factors as well, but what appropriate transformation should apply to x ?
I do not know of any "general" way to do this. Wouldn't post-processing the coefficients be the most simple way? After that one may observe an educated guess (when lucky). Best regards, jj
This behaviour is displayed by sunset polynomials of dilations of train [7, -3; 3, 2, 1] , for which b = 4 and k = m/3 . For example, the 8 novel sunsets of [r, s, p, t, q] = [84, -36; 36, 24, 12] = 12*[7, -3; 3, 2, 1] , after reduction h -> h' = (h/50)^2 [note typo in my earlier post!] , are the positive real roots, approximately 0.160458, 0.172003, 0.184713, 0.231571, 0.272437, 0.432110, 0.601110, 1.85694, of F(X) = 160000*X^12 + 614400*X^11 - 6979344*X^10 + 3276800*X^9 + 458782065*X^8 - 1720199520*X^7 + 2394836160*X^6 - 1705296384*X^5 + 697996800*X^4 - 171089920*X^3 + 24821760*X^2 - 1966080*X + 65536 --- note c_4 is odd.
Fred Lunnon
_______________________________________________ math-fun mailing list math-fun@mailman.xmission.com https://mailman.xmission.com/cgi-bin/mailman/listinfo/math-fun
"Post-processing" hadn't occurred to me to try, since the whole point was to pre-process the root in order to economise finding the polynomial! But comparing original and post-processed polynomials for an actual train, only to discover that they have respectively 20 and 2 real positive roots, I now realise that the idea was a total dud. And this divisibility just presents another tantalising property. WFL On 8/27/15, Joerg Arndt <arndt@jjj.de> wrote:
* Fred Lunnon <fred.lunnon@gmail.com> [Aug 27. 2015 08:16]:
So I have this algebraic number x , a root of the polynomial, irreducible over the integers, F(X) = \sum_{0 <= i <= m} c_i X^{m-i} .
If it happens that some b divides each coefficient, I can divide c_i -> c_i/b , and the root remains unchanged: x -> x .
Or if c_i is divisible by b^i , I can divide c_i -> c_i/2^i , and the root is halved: x -> x/2 .
But suppose c_i divisible by b^|i-k| for some 0 < k < m : I wish to dispose of these superfluous factors as well, but what appropriate transformation should apply to x ?
I do not know of any "general" way to do this. Wouldn't post-processing the coefficients be the most simple way?
After that one may observe an educated guess (when lucky).
Best regards, jj
This behaviour is displayed by sunset polynomials of dilations of train [7, -3; 3, 2, 1] , for which b = 4 and k = m/3 . For example, the 8 novel sunsets of [r, s, p, t, q] = [84, -36; 36, 24, 12] = 12*[7, -3; 3, 2, 1] , after reduction h -> h' = (h/50)^2 [note typo in my earlier post!] , are the positive real roots, approximately 0.160458, 0.172003, 0.184713, 0.231571, 0.272437, 0.432110, 0.601110, 1.85694, of F(X) = 160000*X^12 + 614400*X^11 - 6979344*X^10 + 3276800*X^9 + 458782065*X^8 - 1720199520*X^7 + 2394836160*X^6 - 1705296384*X^5 + 697996800*X^4 - 171089920*X^3 + 24821760*X^2 - 1966080*X + 65536 --- note c_4 is odd.
Fred Lunnon
_______________________________________________ math-fun mailing list math-fun@mailman.xmission.com https://mailman.xmission.com/cgi-bin/mailman/listinfo/math-fun
_______________________________________________ math-fun mailing list math-fun@mailman.xmission.com https://mailman.xmission.com/cgi-bin/mailman/listinfo/math-fun
participants (2)
-
Fred Lunnon -
Joerg Arndt