Rzecz o przybliżeniach

https://xpil.eu/bkk

Dzisiaj każdy ma w kieszeni podręczny kalkulator w postaci smartfona, więc jeżeli chce policzyć logarytm czy tangens, po prostu puka w ekran we właściwych miejscach i już. Ale nie zawsze tak było. Dawnymi czasy, kiedy istniały tylko prymitywne kalkulatory z czterema działaniami, trzeba było sobie radzić na piechotę.

Dziś pokażę kilka sprytnych sposobów na liczenie dość dokładnych przybliżeń rozmaitych rozmaitości przy użyciu prostych operacji arytmetycznych, a na deser pobawimy się w trójkącik oraz opędzlujemy czworonoga Elżbiety.

Zaczniemy od trygonometrii.

Sinus kąta można zdefiniować na wiele sposobów, każdy wymaga dość zawiłych obliczeń.

Moja ulubiona definicja sinusa z x to: \(x-\frac{x^3}{3!}+\frac{x^5}{5!}-\frac{x^7}{7!}+\frac{x^9}{9!}\ldots\)

A jak policzyć sinus kąta jeżeli mamy pod ręką tylko prościutki kalkulator z czterema działaniami?

Najpierw upewniamy się, że znamy wartość kąta w stopniach (nie w radianach!), oraz że kąt jest między 0° a 45°, następnie liczymy:

\({\sin(x)} \approx \frac{x}{100} (2-\frac{x}{100})\)

A tak możemy policzyć przybliżony kosinus z kąta:

\({\cos(x)} \approx 1-\frac{x^2}{7000}\)

Jest też przybliżony wzór na tangens:

\({\tan(x)} \approx \frac{10-x}{100-x}\)

Ten ostatni wzór działa niezbyt dokładnie dla kątów mniejszych od 20°, dlatego jeżeli zależy nam na większej dokładności (kosztem nieco dłuższego klepania w klawiszki), możemy policzyć tangens jako sinus/kosinus.

Powyższe trzy metody dają wyniki z błędem nieprzekraczającym 2% (z wyjątkiem tangensa dla kątów <20° gdzie błąd sięga 10%)

Logarytmy dziesiętne

Aby policzyć przybliżony logarytm dziesiętny z liczby dodatniej x między 0.3 a 3, liczymy:

\({\log(x)} \approx \frac{x-1}{x+1}\)

A co jeżeli x jest mniejsze od 0.3 lub większe od 3?

W takim przypadku dzielimy (lub mnożymy) x przez 10 tyle razy, żeby trafić w przedział 0.3 - 3:

\(x' = x 10^m\)

Następnie wyliczamy log(x') jak wyżej, a do wyniku dodajemy m.

Powyższa metoda, chociaż zadziwiająco "prymitywna", daje wyniki z błędem nie większym niż 2.5%.

Potęgowanie dziesiątki

Jeżeli chcemy szybko podnieść dziesięć do potęgi x między -0.5 a 0.5, stosujemy metodę analogiczną do logarytmu dziesiętnego, tylko na odwrót:

\(10^x \approx \frac{1+x}{1-x}\)

Jeżeli x jest mniejsze od -0.5 lub większe od 0.5, zapisujemy sobie x jako a+b+0.5, gdzie a to część całkowita, a b dobieramy tak, żeby zsumowane z a i 0.5 dawało x, następnie liczymy \(10^x = 10^a 10^b 10^{0.5} \approx 10^a \frac{1+b}{1-b} 10^{0.5}\) i zastępujemy \(10^{0.5}\) wartością 3.16. Przykład:

\(10^{3.8} = 10^3 10^{0.3} 10^{0.5} \approx 1000 \frac{1.3}{0.7} 3.16 \approx 5868.6\)

W rzeczywistości \(10^{3.8} \approx 6309.6\) a więc błąd około 7%. Metoda daje maksymalny błąd w okolicach 8% - nie za dobrze do dokładniejszych obliczeń, ale jeżeli potrzebujemy coś policzyć na szybkiego, ujdzie.

Pi i E

Zarówno Pi jak też e (podstawę logarytmu naturalnego) da się wyliczyć z dokładnością lepszą niż 1% używając prostego dzielenia: \(\pi \approx 22/7\), \( e \approx 19/7\)

Deser #1: Obwód elipsy

W tym rozdziale będziemy maltretować wspomnianego we wstępnie czworonoga Elżbiety, czyli w skrócie Eli psa.

Jak powszechnie wiadomo[citation needed], nie ma prostego wzoru na obwód elipsy. Trzeba całkować, nie ma zmiłuj.

Nieśmiały cybernetyk potężne ekstrema

Poznawał, kiedy grupy unimodularne

Cyberiady całkował w popołudnie parne,

Nie wiedząc, czy jest miłość, czy jeszcze jej nie ma?

-- S. Lem

Ale jest całkiem sprytna metoda pozwalająca wyznaczyć ów obwód w dość dobrym przybliżeniu, za pomocą wyłącznie mnożenia, dzielenia, dodawania, potęgowania i pierwiastkowania. Aha, no i trzeba znać wartość \(\pi\).

Jeżeli znamy długości a i b obydwu "promieni" elipsy, zwanych fachowo półosiami (wielką i małą), możemy policzyć jej przybliżony obwód w następujący sposób:

\(O \approx 2\pi \left( \sqrt[3]{\frac{a^{3/2}+b^{3/2}}{2}} \right)^2\)

Powyższe wyrażenie daje zaskakująco dokładne wyniki: dla mimośrodów mniejszych od 0.8 błąd nie przekracza 0.01%.

Niezorientowanym przypominam, że mimośród mówi nam - w uproszczeniu - jak bardzo elipsa "różni się" od okręgu. Okrąg ma więc mimośród 0, a czym bardziej elipsa się "wydłuża" tym większy mimośród. W momencie kiedy elipsa się "rozrywa" na końcach (dając w efekcie parabolę), mimośród osiąga wartość 1. Mimośrody większe od jedynki oznaczają hiperbolę.

Mimośród orbity Plutona wynosi nieco poniżej 0.25 - jest to najbardziej wydłużona orbita spośród wszystkich lokalnych planet (tak, wiem, Pluton nie jest planetą, ale jak się urodziłem to jeszcze był, więc proszę sie odpiętrolić) - i dla takiego mimośrodu błąd wynikający z zastosowania metody przybliżonej wyniesie około 0.0000001%, czyli tyle co kot napłakał. Czy może raczej pies. Eli pies.

Podobny mimśród ma też Gliese 581 d.

Pomijam tu fakt, że orbita planety nie jest tak naprawdę elipsą, jak zresztą nie jest nią żadna z innych orbit, bo wszystko się wzajemnie trochę przyciąga. Ale w przybliżeniu można uznać orbitę małego cosia wokół dużego cosia za elipsę, a wpis jest przecież o przybliżeniach.

Deser #2: Powierzchnia elipsoidy.

Podobnie jak w przypadku obwodu elipsy, liczenie pola powierzchni elipsoidy jest raczej kłopotliwe i wymaga zastosowania rachunku całkowego. Na szczęście i tutaj w sukurs przychodzi magiczna formuła dająca dobre przybliżenie bez potrzeby sięgania do od dawna zakurzonych podręczników ze studiów techniczych. Jeżeli znamy a, b i c (półosie elipsoidy), wówczas jej przybliżone pole powierzchni liczymy w następujący sposób:

\(P \approx 4\pi \sqrt[1.6]{\frac{(ab)^{1.6}+(bc)^{1.6}+(ac)^{1.6}}{3}}\)

Maksymalny błąd w tym przypadku waha się w okolicach 1.18%. Możemy z tego urwać dodatkowe 0.1% jeżeli zamiast 1.6 w powyższym wyrażeniu użyjemy 1.6075.

Gdyby Saturn (który jest najbardziej spłaszczony ze wszystkich planet Układu Słonecznego) był idealną elipsoidą, jego powierzchnia liczona powyższą metodą wyszłaby o około 0.00004% większa od faktycznej.

Deser #3: Przeciwprostokątna.

Jeżeli w trójkącie prostokątnym (a, b, c) a i b są długościami przyprostokątnych, a c - długością przeciwprostokątnej, oraz jeżeli różnica między a i b nie przekracza 50%, wówczas przeciwprostokątną można policzyć jako \(c \approx \frac{5(a+b)}{7}\).

Maksymalny błąd - przy powyższych założeniach - około 1.02%

https://xpil.eu/bkk

2 komentarze

  1. Fajna sprawa, ale piszesz, że:
    Powyższe trzy metody dają wyniki z błędem nieprzekraczającym 2% 

    Chyba aż tak dobrze nie ma, bo sprawdziłem pierwszego z brzegu sinusa i wyszło mi tak:
    sin(22) = 0,3746
    22/100 * (2 – 22/100) = 0,3916
    (0,3916 – 0,3746) / 0,3746 = 4,5 %

    Czyli już tutaj, Wysoki Sądzie, błąd znacznie przekracza zagwarantowany margines, i dlatego ten budynek się zawalił, i dlatego tylu ludzi zginęło.

    1. Czyli moja ocena błędu była błędna. W wolnej chwili spróbuję sięgnąć do źródełka i wyjaśnić tę rozbieżność.

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.