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

Reply via email to