Zapętlone kwadraty: rozwiązanie zagadki

https://xpil.eu/ylf

Naszym celem było znalezienie takich trzech liczb a, b, c, gdzie:

\[ a^2=b, b^2 = c, c^2 = a \]

Coś tu zdecydowanie nie gra. Przecież podnoszenie do kwadratu liczby większej od 1 daje w wyniku większą liczbę, a mniejszej od 1 - mniejszą. Jakim więc cudem mamy znaleźć taką pętlę?

Jeżeli \( a^2=b, b^2=c, c^2=a \), to oznacza ni mniej ni więcej, że \( a^8=a \), czyli (dla niezerowego \(a\)) \( a^7=1 \)

Otóż trzeba sięgnąć po liczby zespolone.

Jak powszechnie wiadomo[citation needed] liczba zespolona \(a+bi\) składa się z dwóch kawałków: części urojonej \(b\) i części rzeczywistej \(a\). Część urojona mnoży się przez \(i\) czyli pierwiastek z minus jedynki. Wszystko jasne? Nie jasne? Nie bardzo jasne? No to trudno, lecimy dalej.

Moduł z liczby zespolonej Z, oznaczany zwyczajowo przez |Z|, mówi nam jak daleko od punktu (0,0) znajduje się dana liczba, jeżeli narysować ją jako punkt (a, b) w kartezjańskim układzie współrzędnych. Można myśleć o module jako o "wielkości bezwzględnej" liczby zespolonej. Liczba z większym modułem jest na swój sposób "większa" od liczby z mniejszym modułem. Policzenie tego modułu jest proste, identycznie liczymy długość przeciwprostokątnej w trójkącie prostokątnym: podnosimy obydwie przyprostokątne do kwadratu, kwadraty sumujemy, z wyniku sumowania wyciągamy pierwiosnek pierwiastek. Proste? No pewnie, że proste.

No i teraz najważniejsze: podnosząc liczbę zespoloną Z do kwadratu dostaniemy w wyniku liczbę zespoloną, której moduł będzie kwadratem modułu liczby Z. Reguła ta działa zresztą nie tylko dla kwadratów, ale dla dowolnych potęg.

Skoro więc mamy nasze trzy liczby a, b, c "zapętlić" przez podnoszenie ich do kwadratu, musimy wystartować od liczby, której moduł wynosi 1. W przeciwnym razie kolejne potęgowania będą nam zwiększać (bądź zmniejszać) moduł i do niczego nie dojdziemy.

Argument liczby zespolonej, oznaczany na ogół literką φ, a oficjalnie Arg(Z) to kąt, jaki tworzy wektorowa reprezentacja tej liczby z osią rzeczywistą (po naszemu: z osią "X").

Podnoszenie liczby zespolonej do potęgi n oznacza przemnożenie argumentu tej liczby przez n. A więc obrócenie wektora tej liczby w lewo tak, żeby nowy kąt był n-krotnie większy od starego. W szczególności podniesienie do kwadratu kąt ów podwaja, a do ósmej potęgi - uośmiokrotnia (nie ma takiego słowa, ale zapytany o poradę Paweł Pomianek powiedział, że można go śmiało użyć).

Jeżeli więc wystartujemy od liczby zespolonej, której kąt do osi R jest jedną siódmą kąta pełnego (a więc \( 2\pi/7\)), podniesienie takiej liczby do ósmej potęgi "obróci" nam tę liczbę do 8/7, czyli \(1 \frac{1}{7} \) obrotu, czyli "wylądujemy" dokładnie tam, gdzie zaczęliśmy.

A więc jednym z rozwiązań jest liczba zespolona, której moduł wynosi 1, a argument - \(2\pi/7\). Jak to zamienić na postać "normalną" tj. prostokątną? Jak powszechnie wiadomo, część rzeczywista to kosinus kąta a urojona - sinus.

Tak więc nasza liczba to \( cos(2\pi/7) + i sin(2\pi/7)\).

Nie wygląda to za ciekawie...

Spróbujmy inaczej. Skorzystamy ze wzoru de Moivre'a:

\[ (|z| (cos \phi + i sin\phi))^n = |z|^n (cos(n \phi) + i sin(n \phi)) \] \( |z| \) można pominąć, bo to jedynka, zostaje więc:

\[ (cos \phi + i sin\phi)^n = cos(n \phi) + i sin(n \phi) \]

Za n podstawiamy 2/7 i dostajemy:

\[ (cos \pi + i sin \pi)^{\frac{2}{7}} = cos(2 \pi/7) + i sin (2 \pi/7) \]

Lewa strona to nic innego jak \( (-1)^{\frac{2}{7}} \) - i faktycznie \( (-1)^{\frac{2}{7}})^8 = ((-1)^{\frac{16}{7}} = (-1)^{\frac{2}{7}} \)

Dalej mi się nie chce babrać w LaTeX-u, pełna lista rozwiązań to:

\[ -(-1)^{\frac{1}{7}}, (-1)^{\frac{2}{7}}, -(-1)^{\frac{3}{7}}, (-1)^{\frac{4}{7}}, -(-1)^{\frac{5}{7}}, (-1)^{\frac{6}{7}} \]

Nieco prościej to "ogarnąć" kiedy się spojrzy na postać graficzną rozwiązań:

Z siedmiu kropek, sześć leży poza osią X.

A jak Wam poszło?

1Pierwszy odezwał się Rzast, który nie tylko podał poprawne rozwiązanie, ale też opisał pokrótce co i jak:

Skoro nie w liczbach rzeczywistych, to trzeba szukać liczby urojone, spełniające równanie: a^8-a=0 => a(a^7-1)=0

Rzast, 2021

Tak więc tym razem WMZKDWWIP (Wielki Medal Z Kartofla Do Własnego Wykonania I Powieszenia) trafia do Rzasta, o ile rzecz jasna będzie mu się chciało go sobie zrobić i powiesić 😉

2Nazajutrz swoje rozwiązanie nadesłał Butter, który jednak wystartował z błędnego założenia, że x^4 = x, co nie tylko dało mu dwa rozwiązania zamiast sześciu, ale w dodatku błędne. Zresztą kartofla za drugie miejsce i tak by nie było. Plus za nadesłanie rozwiązania w PNG:

(C) Butter 2021

Minus - za używanie ściągawki (Wolfram). Ale na to przymykam oko, bo sam korzystam z Wolframa co chwilę 🙂

3Dziesięć godzin po Butterze przyszło zgłoszenie od Roziego, który był blisko, ale zamiast podnosić do kwadratu kolejne liczby, zbudował następujące równanie: \(x=x^{2^{2^2}}\). Rzecz jasna daje to efekcie x=x16 zamiast x=x8, więc i rozwiązanie (znalezione za pomocą Wolframa) też błędne. Nawiasem mówiąc w tej wersji rozwiązań (różnych od 0 i 1) jest 14:

4Chwilę potem odezwał się Waldek, który jak zwykle pozamiatał temat udzielając najpierw odpowiedzi ogólnej, a zaraz potem udowadniając, że jest ona poprawna:

z = (-1)^k * (-1)^(k/7) k in 1..6
z^2 = (-1)^(2k/7)
z^4 = (-1)^(4k/7)
z^8 = (-1)^(8k/7) = (-1)^(7k/7+k/7) = (-1)^(7k/7) * (-1)^(k/7) = (-1)^k * (-1)^(k/7) = z

(C) Waldek 2021

Odpowiedź Waldka podoba mi się najbardziej ze wszystkich - jest zwięzła, konkretna i treściwa.

Reasumując: Waldek tym razem był drugi, a Rzast - przedostatni...

P.S. W ostatniej chwili (dosłownie na dwie godziny przed zamknięciem formularza) Waldek dosłał alternatywną formę swojej odpowiedzi - nieco bardziej zwartą (nie wymaga naprzemiennego potęgowania minus jedynki): z=i^(16/7 k) k in 1..6

https://xpil.eu/ylf

13 komentarzy

  1. No cóż – są dwie sprzeczności na świecie- matematyka i ja. Cud, że potrafię cenę odczytać i jeszcze wyjąć z portfela określoną sumę pieniedzy ale pewnie i ta sztuka mi zaniknie, bo wszystko płacę kartą. I dlatego jestem bliska padnięcia z podziwu, że mój 12-letni wnuczek, który właśnie kończy 8 klasę podstawówki od dwóch lat ma dodatkowe zajęcia z matematyki na tut. Uniwersytecie..Ciekawa jestem co będzie studiował- uwielbia matematykę i chemię, a maturę zrobi mając lat 16.
    Miłego;)

  2. Zastanawiałem się, czy naprawdę zbudowałem coś takiego, jak ładnie podane przez Ciebie w tekście piętrowe potęgowanie i… hmm! Z jednej strony nie da się ukryć, że wpisałem https://www.wolframalpha.com/input/?i=x%5E2%5E2%5E2%3Dx i tak to właśnie interpretuje. Z drugiej strony opierałem się na

    Wszystkie te trzy liczby są różne (a więc odpada 1 = 1^2 = 1^2^2 = 1 oraz 0 = 0^2 = 0^2^2 = 0).

    Gdyby zapisać z nawiasami, jawnie deklarując kolejność, to policzy prawidłowo:
    https://www.wolframalpha.com/input/?i=%28%28x%5E2%29%5E2%29%5E2%3Dx

    I teraz zastanawiam się, czy WolframAlpha przypadkiem nie ma błędu. Przy braku obecności nawiasów potęgowanie powinno przecież być wykonywane od lewej do prawej, czyli zapis bez nawiasów powinien być równoważny ww. z nawiasami? A jeśli ktoś chce najpierw wyliczać wykładnik, to powinien użyć wersji z nawiasami, ale dla wykładnika: https://www.wolframalpha.com/input/?i=x%5E%28%282%5E2%29%5E2%29%3Dx
    Czy jak to jest z tą kolejnością przy potęgowaniu?

    1. Po pierwsze, przykłady z zerem i jedynką działają, bo mają w podstawie zero i jedynkę, więc kolejność działań *w tych konkretnych dwóch przypadkach* nie ma znaczenia. Jeżeli zamiast zera lub jedynki byłoby tam cokolwiek innego, to mój przykład byłby błędny bez nawiasów, chociaż gdybyś go policzył w Excelu lub Matlabie, to by zadziałało, bo Excel i Matlab traktują (błędnie!) x^y^z jako (x^y)^z a powinny x^(y^z).

      Po drugie, treść zadania mówi konkretnie, krok po kroku, co trzeba zrobić. Podnieść pierwszą liczbę do kwadratu, wynik podnieść do kwadratu, wynik podnieść do kwadratu. A więc z treści zadania wynika jasno, że chodzi o ((a^2)^2)^2 a nie a^(2^(2^2)).

      Po trzecie wreszcie, nie, Wolfram nie ma tu błędu. Proponuję lekturę sekcji “Serial exponentiation” tego artykułu: https://en.wikipedia.org/wiki/Order_of_operations#Serial_exponentiation

      1. Wyjątkowa wartość podstawy nie ma nic do poprawności zapisu. Albo zapis jest poprawny, albo nie jest. Do tego, czy Matlab i Excel traktują błędnie, jeszcze wrócę.

        Treść oczywiście mówi konkretnie. Przykład też! 😉

        No i wreszcie kwestia zapisu. Faktycznie kwestia kolejności działań przy użyciu ^ nie jest uregulowana. I tego bym się trzymał na Twoim miejscu, bo jeśli twierdzisz, że Excel i Matlab traktują zapis błędnie, to także w przykładzie jest błąd.
        Swoją drogą jestem zaskoczony, że akurat przy zapisie “komputerowym”, nie jest to uregulowane.

        Dla jasności, nie mam pretensji o przykład. Bardziej zaskoczyło mnie, że WA tak dziwnie traktuje i zastanawiałem się, skąd się to wzięło. Interpretacja WA wydaje mi się mniej logiczna, niż matlabowa.

        1. @rozie
          @xpil

          Jak obliczyć x^y^z skoro nie jest to jednoznaczny zapis? Logicznym byłoby nie akceptować tego „czegoś” i wypluć komunikat błędu. Jednak miliardy użytkowników oczekują wyniku, więc łamiąc zasady – trzeba im go dać. Rzucamy monetą i wybieramy losowo jedną z metod…

          Za każdą z nich można przytoczyć całkiem solidne argumenty. Nie są one jednak decydujące. Można na przykład próbować zapisu potęgowania za pomocą symboli pierwiastkowania, których kolejność wykonywania jest zawsze jednoznaczna.
          (x^y)^z = root(root(x, 1/y), 1/z)
          x^(y^z) = root(x, 1/root(y, 1/z))
          Albo zapis x^y zastąpić bardziej formalnym i uporządkowanym power(x, y)
          (x^y)^z = power(power(x, y), z)
          x^(y^z) = power(x, power(y, z))
          Jednak za każdym razem, po zagłębieniu się w którąś z tych metod, rozpisaniu wszystkich wariantów – dojdziemy do nieusuwalnej niejednoznaczności. Można nawet przy pomocy zmiany sposobu zapisu wykazać, że (x^y)^z = x^(y^z). Kicha…

          Krótko mówiąc, trzeba przeczytać helpa danego programu liczącego, aby poznać lokalną zasadę. To tak, jak z ruchem lewo- lub prawostronnym w jakimś kraju – czytaj jego kodeks drogowy.

          1. Ja by się po prostu trzymał tego, co mówi Wiki:

            “If exponentiation is indicated by stacked symbols using superscript notation, the usual rule is to work from the top down.”

            Końcem końców będzie pewnie tak jak przy ewolucji języka: wygra metoda, której używa najwięcej ludzi.

            1. Tylko tu mamy nie typowe “stacked”, co do których nie mam zastrzeżeń i których obecnością byłem zaskoczony, tylko dokładnie przypadek opisywany zdanie później.

              However, when using operator notation with a caret (^) or arrow (↑), there is no common standard.[19] For example, Microsoft Excel and computation programming language MATLAB evaluate a^b^c as (ab)c, but Google Search and Wolfram Alpha as a(bc). Thus 4^3^2 is evaluated to 4,096 in the first case and to 262,144 in the second case.

              1. No wiem, wiem.

                W moim małym rozumku 2^2^2 to to samo co 2^(2^2) – aczkolwiek taki LaTeX na przykład wymaga ujednoznacznienia – jak mu się wpisze 2^2^2 bez nawiasów, to rzuci błędem (czyli robi dokładnie to, co sugeruje Waldek 3 piętra wyżej).

                1. Ale czemu x^x^x (2 jako podstawa to niezbyt szczęśliwy pomysł w tym przykładzie) chcesz traktować jako x^(x^x), a nie jako (x^x)^x? Co prawda palnąłem wcześniej bzdurę o wykonywaniu potęgowania od lewej do prawej (tyczy się dowolnego działania), ale od prawej do lewej to taki sam błąd. Zresztą wersja od lewej do prawej ma uzasadnienie o tyle, że tak czytamy, a skoro kolejność wykonywania danego działania nie ma znaczenia, to tak też jest OK.

                  Rzucenie błędem wydaje mi się naturalne i sensowne, dlatego nie rozumiem czemu dopuszczono tak niejednoznaczny zapis.

                  W każdym razie sprawa z zapisem chyba ciekawsza od samej zagadki.

                  1. Ja kombinuję tak: skoro zapis “piętrowy” (czyli $x^{y^z}$) jest wedle definicji liczony w kierunku z góry na dół, to x^y^z podlega temu samemu prawidłu.

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.