ułamki łańcuchowe - jednorodne

1

Ułamki łańcuchowe pozwalają niekiedy zapisywać liczby niewymierne, czyli takie które mają nieskończoną liczbę cyfr.
https://en.wikipedia.org/wiki/Continued_fraction

Przykładowo:
phi = [1,1,1, ...], co daje słynne golden ratio: phi = (sqrt5 - 1)/2 = 0.6180339887498948482...;

phi + 1 = 1/phi = 1.6180339887498948482... co jest dość zabawne (cyfry są identyczne, jedynie 1 dochodzi z przodu).

zatem nasuwa się pytanie - co reprezentuje ułamek typu:
[2,2,2, ...]

i dalsze takie:
[3,3,3, ...]

no i w ogóle:
x = [n,n,n, ...] -> co to za liczby?

3

Można policzyć :-)

Zacznijmy od tego złotego podziału:
\varphi = 1 + \frac{1}{1 + \frac{1}{1+\frac{1}{...}}}

Można zauważyć, że jest to:
\varphi = 1 + \frac{1}{\varphi}

Mnożąc przez phi mamy:
\varphi^2 = 1 + \varphi

Otrzymaliśmy zwyczajne równanie kwadratowe:
\varphi^2 - \varphi - 1 = 0

Zatem rozwiązaniami są:
\varphi = \frac{1 \pm \sqrt{5}}{2}

Te same kroki można powtórzyć dla dowolnego stałego n.

0

x = 1/(n+x), takie coś masz na myśli?

Może i dobrze... no to oblicz teraz taki zabawny przypadek:

[1,2,3,4, ...]

co to za liczba?

1

exp7, jak Ty coś Zapodasz:), ale cóż, tu Masz notebook, napisałem kilka ciekawych funkcji, Możesz się pobawić:)
https://github.com/lion137/test/blob/master/Continued%20Fractions.ipynb
Zapis [1, 2, 3, 4] to po prostu inny zapis ułamka dziesiętnego skończonego, w tym wypadku 1.43333333.
Natomiast nieskończony ułamek, jak [3, 7, 15, 1, 292, ... i tak dalej] to też inny rodzaj zapisu liczby niewymiernej, tu PI. Zamiast 3.141592..., lista jak wyżej.

0
lion137 napisał(a):

Zapis [1, 2, 3, 4] to po prostu inny zapis ułamka dziesiętnego skończonego, w tym wypadku 1.43333333.

Przecież to zawsze jest mniejsze od 1, więc coś ci się pomyliło.

[1,2,3,4,5, ... oo] = 1/(1 + 1/(2 + 1/(3 + ...

0
exp7 napisał(a):
lion137 napisał(a):

Zapis [1, 2, 3, 4] to po prostu inny zapis ułamka dziesiętnego skończonego, w tym wypadku 1.43333333.

Przecież to zawsze jest mniejsze od 1, więc coś ci się pomyliło.

[1,2,3,4,5, ... oo] = 1/(1 + 1/(2 + 1/(3 + ...

Ano nie pomyliło mi się, to jest 1 + 1/(.... Możesz sprawdzić, dodałem przykłady w linkowanym wyżej notebooku.

Pytałeś co to [2, 2, 2, ...], przypadkiem to jest pierwiastek z dwóch:)

0
lion137 napisał(a):
exp7 napisał(a):
lion137 napisał(a):

Zapis [1, 2, 3, 4] to po prostu inny zapis ułamka dziesiętnego skończonego, w tym wypadku 1.43333333.

Przecież to zawsze jest mniejsze od 1, więc coś ci się pomyliło.

[1,2,3,4,5, ... oo] = 1/(1 + 1/(2 + 1/(3 + ...

Ano nie pomyliło mi się, to jest 1 + 1/(.... Możesz sprawdzić, dodałem przykłady w linkowanym wyżej notebooku.

Pytałeś co to [2, 2, 2, ...], przypadkiem to jest pierwiastek z dwóch:)

Pomyliło ci się.
Z tym 1 tak to wygląda: [1; 1,1,1, ...] = Phi = phi+1

natomiast:
[2,2,2, ...] = sqrt2 - 1 = 0.414213...

czyli: sqrt2 = [1; 2,2,2, ...] = 1 + [2,2,2, ...]

zatem to zadanie pozostaje otwarte:
[1,2,3,4, ... ] = ?

dla ułatwienia podam wynik dla [1,2,3,4,5,6,7,8,9] = 0.69777465796254437423508429583959;
co jak widać nie specjalnie pasuje do 0.4333333333.

0

Oczywiście, czeski błąd, pierwiastek z dwóch = [1, 2, 2, 2, ...]
Natomiast w przypadku [1, 2, 3, 4, ...] nie ma tajemnicy, to po prostu jakaś liczba niewymierna, z nieokresowym rozwinięciem w ułamek łańcuchowy, jak Pi.
[1, 2, 3, 4, 5, 6, 7, 8, 9] = 1.433127426721945
Zresztą zgadza się to z wikipedią: https://en.wikipedia.org/wiki/Continued_fraction#Motivation_and_notation

Proszę niech ktoś z zewnątrz potwierdzi, bo może mam omamy?:)

0
lion137 napisał(a):

Oczywiście, czeski błąd, pierwiastek z dwóch = [1, 2, 2, 2, ...]
Natomiast w przypadku [1, 2, 3, 4, ...] nie ma tajemnicy, to po prostu jakaś liczba niewymierna, z nieokresowym rozwinięciem w ułamek łańcuchowy, jak Pi.
[1, 2, 3, 4, 5, 6, 7, 8, 9] = 1.433127426721945
Zresztą zgadza się to z wikipedią: https://en.wikipedia.org/wiki/Continued_fraction#Motivation_and_notation

Proszę niech ktoś z zewnątrz potwierdzi, bo może mam omamy?:)

znowu źle:
[1, 2, 2, 2, ...] = 1 / (1 + 1 / 2 + ... = 1/sqrt2 = sqrt2/2 = 0.70710678118654752440084436210485...

1
exp7 napisał(a):
lion137 napisał(a):

Oczywiście, czeski błąd, pierwiastek z dwóch = [1, 2, 2, 2, ...]
Natomiast w przypadku [1, 2, 3, 4, ...] nie ma tajemnicy, to po prostu jakaś liczba niewymierna, z nieokresowym rozwinięciem w ułamek łańcuchowy, jak Pi.
[1, 2, 3, 4, 5, 6, 7, 8, 9] = 1.433127426721945
Zresztą zgadza się to z wikipedią: https://en.wikipedia.org/wiki/Continued_fraction#Motivation_and_notation

Proszę niech ktoś z zewnątrz potwierdzi, bo może mam omamy?:)

znowu źle:
[1; 2, 2, 2, ...] = 1 / (1 + 1 / 2 + ... = 1/sqrt2 = sqrt2/2 = 0.70710678118654752440084436210485...

https://www.wolframalpha.com/input/?i=continued+fraction+sqrt(2)&lk=3

0
lion137 napisał(a):
exp7 napisał(a):
lion137 napisał(a):

Oczywiście, czeski błąd, pierwiastek z dwóch = [1, 2, 2, 2, ...]
Natomiast w przypadku [1, 2, 3, 4, ...] nie ma tajemnicy, to po prostu jakaś liczba niewymierna, z nieokresowym rozwinięciem w ułamek łańcuchowy, jak Pi.
[1, 2, 3, 4, 5, 6, 7, 8, 9] = 1.433127426721945
Zresztą zgadza się to z wikipedią: https://en.wikipedia.org/wiki/Continued_fraction#Motivation_and_notation

Proszę niech ktoś z zewnątrz potwierdzi, bo może mam omamy?:)

znowu źle:
[1, 2, 2, 2, ...] = 1 / (1 + 1 / 2 + ... = 1/sqrt2 = sqrt2/2 = 0.70710678118654752440084436210485...

https://www.wolframalpha.com/input/?i=continued+fraction+sqrt(2)&lk=3

Ty chyba niedowidzisz - tam jest średnik, gdy występuje cała z przodu.

[12,12,12, ...] = sqrt(37) - 6
liczba Chrystusowa wedle astrologów to 37, no a 12 to chyba wiadomo - 12 apostołów, itd... no i minus 6, też chyba wiadomo. :)

No to może sprawdźmy taki skecz:
[6, 6, 6, ... ] = ?

chyba to będzie sqrt(10) - 3;

0

Tak jest tam średnik, poprawiłem. A co do reszty, to zaczynamy sobie jaja robić? To w takim razie szkoda czasu, naszego i moderatorów:)

0
lion137 napisał(a):

Tak jest tam średnik, poprawiłem. A co do reszty, to zaczynamy sobie jaja robić? To w takim razie szkoda czasu, naszego i moderatorów:)

Nadal nie wyliczyłeś: [1,2,3, ...] = ?

Moderatorzy nie istnieją - to tylko taka iluzja, podobnie jak i czas zresztą.

0

Obiektywna przestrzeń nie istnieje, więc i my i ta rozmowa też nie istnieją:) Ale do rzeczy, w jakim sensie obliczyć [1, 2, 3, 4, ...]? To liczba rzeczywista, taka jak Pi czy e; nie da się ich obliczyć (mam na myśli dokładnie), mamy na nie przepis. i, na tyle ile mamy zasobów, czasu, pamięci, procesorów, możemy je przybliżyć.
Moja funkcja cf_to_real, dająca poprawne wyniki dla wielu liczb rzeczywistych, możemy jej zaufać, na podstawie skończonego rozwinięcia zwraca float, np.:

>>>cf_to_real([3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1])
>>>3.1415926535898153 # Pi

Dla [1, 2, 3, 4...] podaje przybliżenie:

>>>cf_to_real(list(range(1, 43))) # : [1, 2, 3, 4, ..., 42]
>>>1.4331274267223117

Albo dla pierwiastka z trzech:

>>>cf_to_real([1, 1, 2, 1, 2, 1, 2])
>>>1.7317073170731707

Tyle możemy obliczać, jeśli chodzi o liczby rzeczywiste.

0
lion137 napisał(a):

i znowu mylisz średnik z przecinkiem...

1.4331274267223117 = [1; 1,2,3,4,5,6,7,8,9,10,10, 1, 7... ];

czyli do d**y są te twoje wyliczenia. :)

0

1.4331274267223117 = [1; 1,2,3,4,5,6,7,8,9,10,10, 1, 7... ];

Korekta - to co wyliczasz jest równe:
1.4331274267223117 = [1; 2,3,4,5,6,7,8,9,10,10, 1, 7... ] = 1 + 1/x;

gdzie: x = [1,2,3,4,...];

0

Korekta:
1.4331274267223117 = [1; 2,3,4,5,6,7,8,9,10,10, 1, 7... ] = 1/x;
gdzie: x = [1,2,3,4,...];

0

Nie wyliczam rozwinięcia okresowego, jak, np. pierwiastek z dwóch: [1; 2, 2, ...], tylko skończony: [1, 2, 3, 4], [1, 2, 3, .., 42], czy whatever, gdyż, Twój ułamek jest nieskończony i nieokresowy, jak Pi: [3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, ...]. więc mozna podać tylko listę współczynników (bez średnika oznaczającego okresowość). Moje cf_to_real liczy poprawnie, do rozwinięć okresowych jest funkcja cf_inf_to_real, która bierze pod uwagę okres. Przestudiuj sobie dokładnie algorytmy na wiki, to Ci się rozjaśni.

0

Jako pomoc masz taki - całkiem podobny ułameczek:

[1,3,5,7,9, ...] = 0.76159415595576488811945828260479

no a to jest: tanh(1), czyli: (e - 1/e) / (e + 1/e);

Jak widać można to obliczyć - dokładnie!

0

To co Podałeś w nawiasie nie może być mniejsze od jeden, bo nie zaczyna się od zera, również nie jest to tanh(1). Tak naprawdę jest:

>>>math.tanh(1)
>>>0.7615941559557649
>>>cf_to_real(list(range(1, 21, 2))) # [1, 3, 5, ...19]
>>>1.2414957195792706
>>>inf_cf(math.tanh(1))
>>>[0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 3, 5, 2, 2, 1, 4, 1, 4, 19, 1, 2, 3, 3, 2] # I tak dalej, wygląda, że bez okresu (póki co:))

Jest to mylące, bo do 17, rzeczywiście wygląda, że jest wzór:). Mówiłem, Pobaw się moim notebookiem, tam, można sporo ułamków łańcuchowych znaleźć:)

EDIT: I jeszcze na dowód:

>>>cf_to_real([0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 3, 5, 2, 2, 1, 4, 1, 4, 19, 1, 2, 3, 3, 2])
>>>0.7615941559557649
1

Jak widać można to obliczyć - dokładnie!

Nie można - chyba że znasz dokładną wartość e (protip: nie znasz).

Analogicznie ja mógłbym napisać, że liczba [1, 2, 3, 4, ..., +inf] jest równa 1 + 2 / u.
A to, że moje wymyślone u ma nieskończone rozwinięcie dziesiętne... who cares ;-)

0
Patryk27 napisał(a):

Jak widać można to obliczyć - dokładnie!

Nie można - chyba że znasz dokładną wartość e (protip: nie znasz).
Analogicznie ja mógłbym napisać, że liczba [1, 2, 3, 4, ..., +inf] jest równa 1 + 2 / u.
A to, że moje wymyślone u ma nieskończone rozwinięcie dziesiętne... who cares ;-)

Tak, tak... - 1.5 też nie jest znane, bo nigdy nie widziałeś takiej liczby - jedynie symbole.
e = 1 + 1 + 1/2 + 1/6 + 1/24 + ...

A jeszcze taka ciekawostka:
[4,4,4, ... ] = phi^3
a wiele innych tu podobnie wychodzi, np.:
[11, 11, 11, ...] = phi^5

pewnie każda nieparzysta potęga phi;
phi^7 = [29,29,29, ...]
phi^9 = [76,76,76, ...]

ciekawe co to za szereg tu wychodzi: 1, 4, 11, 29, 76, ...

0

-1.5 też nie jest znane, bo nigdy nie widziałeś takiej liczby - jedynie symbole.

-1.5 nie jest niewymierna czy nieprzestępna.

Tak czy siak - jeśli tak Cię interesują liczby, poczytaj sobie o https://en.wikipedia.org/wiki/FRACTRAN ;-)
Jest nawet ciekawe zadanie na Project Euler dotyczące właśnie tego języka.

0
exp7 napisał(a):
Patryk27 napisał(a):

Jak widać można to obliczyć - dokładnie!

Nie można - chyba że znasz dokładną wartość e (protip: nie znasz).
Analogicznie ja mógłbym napisać, że liczba [1, 2, 3, 4, ..., +inf] jest równa 1 + 2 / u.
A to, że moje wymyślone u ma nieskończone rozwinięcie dziesiętne... who cares ;-)

Tak, tak... - 1.5 też nie jest znane, bo nigdy nie widziałeś takiej liczby - jedynie symbole.
e = 1 + 1 + 1/2 + 1/6 + 1/24 + ...

A jeszcze taka ciekawostka:
[4,4,4, ... ] = phi^3
a wiele innych tu podobnie wychodzi, np.:
[11, 11, 11, ...] = phi^5

pewnie każda nieparzysta potęga phi;
phi^7 = [29,29,29, ...]
phi^9 = [76,76,76, ...]

ciekawe co to za szereg tu wychodzi: 1, 4, 11, 29, 76, ...

Co za peś, phi^3 to nie ``[4, 4, 4, ...]```:

>>>phi_pow_3 = ((1 + math.sqrt(5)) / 2)**3
>>>phi_pow_3
>>>4.23606797749979
>>>inf_cf(phi_pow_3)
>>>[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 1, 10, 2, 1, 7, 8, 1, ...]   

Może w końcu coś Trafisz, chociaż prawdopodobieństwo tego (jako, że liczby rzeczywiste są nieprzeliczalne) wynosi 0:)

0

phi^3 = 0.23606797749978969640917366873128, dla poczwórnej precyzji, czyli do 30 cyfr.

Twoje algorytmy produkują tylko z 15 cyfr poprawnych, bo używasz double, co ma limit 15-16 cyfr, konkretnie: 53 bity.
phi^3 = 0.23606797749979

co daje: [4,4,4,4... -> 12 sztuk, potem jest 1, 1, ...], zamiast nieskończenie wielu 4.

Zatem zrób te obliczenia np. na 500 bitach, zamiast pierdoły tu serwować.

0

O jakim phi mówimy? Chyba nie (1 + sqrt(5)) / 2?

1

Przepraszam, exp7, jak to mówią, you're fucking with us. Jeśli masz zamiar upierać się że średnik po pierwszej liczbie jest wymagany, proszę bardzo, ale to nie jest matematyka. Jakie to ma znaczenie. Czekam aż wreszcie dasz temu jakiś problem matematyczny, który nie zostanie według Ciebie nierozwiązany, tylko ze względu na przyjęte przez Ciebie konwencje, np tę wspomnianą u góry. Jeśli ktoś mówi Tobie że odpowiedź jest x, a Ty uważasz że jest x-1, bo stwierdzasz że pierwsza liczba nie wchodzi w skład, to gdzie tutaj jest błąd? Nie ma błędu, jesteś po prostu pedantem notacji, która i tak nie jest jedyną funkcjonującą.

Natomiast, grając tutaj adwokata diabła, masz całkowitą rację w kwestii: wiemy że wartością pewnego ułamka łańcuchowego jest dokładnie e, którego tak samo nie da się wyznaczyć dokładnie jak każdej innej liczby rzeczywistej.

0

Ja bym jeszcze dodał zasadnicze pytanie, jaka jest myśl przewodnia tego wątku? Jeśli masz za łatwo liczyć ułamki łańcuchowe, to może podbij poprzeczkę i przejdź do wersji stochastycznej ;-)

0

Już nie ma myśli przewodniej, Monsieur exp7 wrzuca jakieś swoje tezy, przypuszczenia? A ja mam kilka funkcji w notebooku i szybciutko je debunkuję:-D

0

@lion137: brawo za wytrwałość :) Mr Exp przywołuje wspomnienia z pl.sci.fizyka, gdzie udzielał się niejaki pinopa, który zalewał grupę swoimi pomysłami i też nie wiadomo o co autorowi chodziło ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1