The standard approach to get rational approximations to irrational numbers is that of continued fractions.
Den 0:23 torsdag den 10. marts 2016 skrev Mike Day <mike_liz....@tiscali.co.uk>: I'm not at all sure that you'll find this relevant, but here goes, anyway: I recently solved Euler problem 541 which concerns harmonic numbers: https://projecteuler.net/problem=541 I started out, in J of course, with rationals, but the size of the problem is against at least my naive application of them. I _did_ manage to solve it using Pari GP, and it helped a lot that Pari GP has a "p-adic" type, For example, a p-adic representation of 22r7 in base 7 is 3*7^-1 + 1 + O(7) So I toyed around with p-adic arithmetic in J, but maintaining a consistent level of precision has somewhat escaped me. Nevertheless, I've managed to set up verbs to add, subtract, multiply, divide p-adics, and even raise them to integer powers. So, for example, to express 3r5 1r15 22r7 in base 7 to within O(7^6) (7 6&rat2padic)"0] 3r5 1r15 22r7 7 6 0 2 4 5 2 1 4 7 6 0 1 5 3 6 0 5 7 6 _1 1 3 0 0 0 0 The leading digit is the base, the next one is the precision, and the next is a scaling power, 0 by default. The remaining values are coefficients of powers of the base. So 3r5 is approx (7 #.|.2 4 5 2 1 4)%7^6 0.600005 And it can do: padicadd/7 6 0 2 4 5 2 1 4,:7 6 _1 1 3 NB. "add" 3r5 and 22r7 7 6 _1 1 5 4 5 2 1 which agrees with (7 6&rat2padic)3r5+22r7 NB. represent 3r5 + 22r7 7 6 _1 1 5 4 5 2 1 NB. Loses the coefficient for 7^5 (!) In Pari GP: (22:49) gp > 3/5+O(7^6) \\ express 3r5 as p-adic base 7 %1 = 2 + 4*7 + 5*7^2 + 2*7^3 + 7^4 + 4*7^5 + O(7^6) (22:49) gp > 22/7+O(7^6) \\ express 22r7 as p-adic base 7 %2 = 7^-1 + 3 + O(7^6) (22:50) gp > 3/5+22/7+O(7^6) \\ add them... %3 = 7^-1 + 5 + 4*7 + 5*7^2 + 2*7^3 + 7^4 + 4*7^5 + O(7^6) (22:52) gp > \\ coefficients of 1 5 4 5 2 1 (4) match my J ones I don't remember studying p-adics at ("high") school or university... They seem pretty powerful in some circumstances. I tried using my J version of p-adics to solve the Euler problem, but (a) my implementation is far too slow, and (b) precision remains a problem way before reaching the target base, namely 137. I suspect the precision difficulty is to do with the way I chose to handle multiplication and division rather than inability of a 64-bit machine to handle rationals! (Also addition (subtraction) of p-adics with different scaling powers, as for 3r5 + 22r7 above.) Currently padicdivide/7 6 0 2 4 5 2 1 4,:7 6 _1 1 3 NB. "divide" 3r5 by 22r7 7 6 0 0 2 5 3 5 5 Pari GP has:(23:12) gp > (3/5+O(7^6)) / (22/7+O(7^6)) %8 = 2*7 + 5*7^2 + 3*7^3 + 5*7^4 + 5*7^5 + O(7^7) The coefficients are the same, but Pari GP has shifted the precision to O(7^7) .... So it's unfinished business. Any interest? Mike On 09/03/2016 21:44, Don Guinn wrote: > Rational numbers have always fascinated me. I wanted to build a gear train > for a science fair where the gears form a loop where the gear train does > not mesh. But only after many thousands of revolutions. Then a sign on the > front asking people to break the gears by turning the crank. > > Long ago the Hammond organ used a gear train to approximate the twelfth > root of two and powers of it to build the notes in the octave. Now > electronics do that more effectively. > > The ratio Roger showed in a previous post are too large to be pleasing. > Smaller numbers in the ratio could still be useful and still be accurate > enough for some purposes. > > I realize that this request is a little vague, but this is just an > extention to the original challenge. > On Mar 9, 2016 9:38 AM, "Raul Miller" <rauldmil...@gmail.com> wrote: > >> That seems a bit underspecified, or open-ended, at the moment. >> >> For example, pi could be 1p1 (or o.1) or pi could be any of a number >> of algorithms: https://en.wikipedia.org/wiki/Category:Pi_algorithms >> >> Meanwhile, there's also the precision aspect - that could also be >> specified in a variety of ways. >> >> In other words, you might be asking for something like this: >> 7%~x:<.0.5+7*1p1 >> 22r7 >> >> Or you might have something different in mind, like perhaps this: >> ~.@(#~ (= <./)@:|@:-&1p1),%/~i.100x >> 22r7 >> >> Or, significantly slower, but almost tolerable: >> ~.@(#~ (= <./)@:|@:-&1p1),%/~i.1000x >> 355r113 >> >> Or, ... any of a variety of other mechanisms... (and even brute force >> search techniques could be made to be significantly more efficient - a >> moment's thought would show that incorporating the rounding technique, >> for example, could have increased the speed of that last search by >> something near a factor of 1000). >> >> Anyways, if you can say a bit more about what you were aiming for, >> maybe we could do a better job of getting there? >> >> Thanks, >> >> -- >> Raul >> >> On Wed, Mar 9, 2016 at 11:18 AM, Don Guinn <dongu...@gmail.com> wrote: >>> How about rounding to a rational of some precision like pi rounded to >> 22r7 ? >>> On Mar 9, 2016 8:52 AM, "Kip Murray" <thekipmur...@gmail.com> wrote: >>> >>>> Thanks, Roger and Raul. Not understanding GCD +. I had a Rube >> Goldberg >>>> solution involving Format ": and Do ". --Kip >>>> >>>> On Wednesday, March 9, 2016, Roger Hui <rogerhui.can...@gmail.com> >> wrote: >>>>> den and num illustrate different ways of computing the same thing, >>>>> hopefully in so doing improves understanding. If you want speed 2&x: >> is >>>>> going to be faster. >>>>> >>>>> Also, watch this: >>>>> >>>>> 2 x: o. 1 >>>>> 1285290289249 409120605684 >>>>> x: o. 1 >>>>> 1285290289249r409120605684 >>>>> >>>>> 2 x:!.0 o. 1 >>>>> 884279719003555 281474976710656 >>>>> x:!.0 o. 1 >>>>> 884279719003555r281474976710656 >>>>> >>>>> >>>>> >>>>> >>>>> On Wed, Mar 9, 2016 at 7:20 AM, Mike Day <mike_liz....@tiscali.co.uk >>>>> <javascript:;>> wrote: >>>>> >>>>>> Roger, are these (among) recommended and preferred methods for >>>>>> recovering num & den, or do they just show an elegant way of >>>>>> avoiding 2 x: ? >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Mike >>>>>> >>>>>> >>>>>> On 09/03/2016 04:32, Roger Hui wrote: >>>>>> >>>>>>> x=: %/?2$10^8x >>>>>>> x >>>>>>> 69904549r40669028 >>>>>>> >>>>>>> den=: [: % 1 +. ] >>>>>>> num=: * den >>>>>>> >>>>>>> den x >>>>>>> 40669028 >>>>>>> num x >>>>>>> 69904549 >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Mar 8, 2016 at 7:28 PM, Kip Murray <thekipmur...@gmail.com >>>>> <javascript:;>> >>>>>>> wrote: >>>>>>> >>>>>>> That's great! It's still a nice puzzle to write your own. --Kip >>>>>>>> On Tuesday, March 8, 2016, Raul Miller <rauldmil...@gmail.com >>>>> <javascript:;>> wrote: >>>>>>>> 2 x: 6r4 >>>>>>>>> 3 2 >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Raul >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Mar 8, 2016 at 10:04 PM, Kip Murray < >> thekipmur...@gmail.com >>>>> <javascript:;> >>>>>>>>> <javascript:;>> wrote: >>>>>>>>> >>>>>>>>>> How do you find the numerator and denominator in lowest terms >> of a >>>>>>>>> rational >>>>>>>>> >>>>>>>>>> fraction? For example, >>>>>>>>>> >>>>>>>>>> nd 6r4 >>>>>>>>>> 3 2 >>>>>>>>>> >>>>>>>>>> --Kip Murray >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Sent from Gmail Mobile >>>>>>>>>> >>>>> ---------------------------------------------------------------------- >>>>>>>>>> For information about J forums see >>>>> http://www.jsoftware.com/forums.htm >>>> ---------------------------------------------------------------------- >>>>>>>>> For information about J forums see >>>>> http://www.jsoftware.com/forums.htm >>>>>>>> >>>>>>>> -- >>>>>>>> Sent from Gmail Mobile >>>>>>>> >>>> ---------------------------------------------------------------------- >>>>>>>> For information about J forums see >>>> http://www.jsoftware.com/forums.htm >>>>>>>> >>>> ---------------------------------------------------------------------- >>>>>>> For information about J forums see >>>> http://www.jsoftware.com/forums.htm >>>>>> >>>>>> --- >>>>>> This email has been checked for viruses by Avast antivirus software. >>>>>> https://www.avast.com/antivirus >>>>>> >>>>>> >> ---------------------------------------------------------------------- >>>>>> For information about J forums see >> http://www.jsoftware.com/forums.htm >>>>> ---------------------------------------------------------------------- >>>>> For information about J forums see >> http://www.jsoftware.com/forums.htm >>>> >>>> >>>> -- >>>> Sent from Gmail Mobile >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm