Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

19. Funkcje trygonometryczne

Treści kształcenia. Funkcje. Pojęcie funkcji (intuicyjnie, nie jako relacji), argumenty, wartości, dziedzina, przeciwdziedzina, zbiór wartości. Funkcje monotoniczne, wypukłe, parzyste, nieparzyste, okresowe. Iniekcje, suriekcje, bijekcje. Przegląd podstawowych funkcji elementarnych (afiniczna, kwadratowa, wykładnicza, logarytmiczna (teoria obliczeń), trygonometryczne), ich wykresów i własności.

Efekty kształcenia. Potrafi badać i określać własności podstawowych funkcji, które napotyka w informatyce.

Wstęp

Celem niniejszych zajęć jest zrozumienie własności funkcji trygonometrycznych, czyli funkcji stowarzyszonych z parametryzacją okręgu. Ich użyteczność w informatyce ujawnia się najbardziej w projektowaniu grafiki komputerowej. Funkcje trygonometryczne są używane również przy generowaniu tzw. transformat, np. transformaty Fouriera (zarówno dyskretnej i ciągłej). Znaczenie tych transformat ujawnia się przy analizowaniu funkcji różnego rodzaju.

Jednym z kluczowych zastosowań dyskretnej transformaty Fouriera (DFT) jest analiza spektralna próbek oraz kompresja. DFT używa się też przy bardzo wydajnych algorytmach mnożenia dużych liczb całkowitych takich jak algorytm Schönhage–Strassena.

Definicja

Okrąg jednostkowy to figura geometryczna zadana równaniem uwikłanym x2+y2=1x^2+y^2=1. Zbiór par liczb rzeczywistych (x,y)(x,y) spełniających to równanie wygląda następująco.

Graphics object consisting of 1 graphics primitive

Definicja funkcji trygonometrycznych

Definicja (funkcje sinus i kosinus dla okręgu)

Punkt (x,y)(x,y) na okręgu jednostkowym możemy opisać jednoznacznie za pomocą promienia wychodzącego z punktu (0,0)(0,0) i półprostej, która przecina ten okrąg. Kąt zadany przez taką półprostą obliczamy względem półdodatniej osi OXOX. Oznaczmy ten kąt przez α\alpha. Definiujemy dwie funkcje

cos⁡:[0,2π)→[−1,1]\cos: [0,2\pi) \rightarrow [-1,1]

oraz

sin⁡:[0,2π)→[−1,1]\sin: [0,2\pi) \rightarrow [-1,1]

zadane relacją

cos⁡α=x,\cos\alpha = x,
sin⁡α=y\sin\alpha = y

gdzie kąt α\alpha (mierzony w radianach) jest nachyleniem półprostej wychodzącej z punktu (0,0)(0,0), która przecina okrąg jednostkowy x2+y2=1x^2+y^2=1 w punkcie (x,y)(x,y).

Gdy mamy do czynienia z kątem spoza zakresu standardowego, wartości funkcji trygonometrycznych definiujemy następująco

sin⁡α=sin⁡α′\sin\alpha = \sin\alpha'

gdzie α=k⋅2π+α′\alpha = k\cdot 2\pi+\alpha' i 0≤α′<2π0\leq \alpha'<2\pi oraz k∈Zk\in\mathbb{Z} jest jednoznacznie ustaloną liczbą całkowitą. Podobnie definiujemy

cos⁡α=cos⁡α′.\cos\alpha = \cos\alpha'.

Przykład

Punkt (1,0)(1,0) odpowiada kątowi α=0\alpha=0. Zatem

cos⁡0=1\cos 0 = 1

oraz

sin⁡0=0.\sin 0 = 0.

Zadanie

Wyznacz wartość funkcji sinus i kosinus dla kątów

  1. α=π/6\alpha = \pi/6 (30 stopni)

  2. α=π/4\alpha = \pi/4 (45 stopni)

  3. α=π/3\alpha = \pi/3 (60 stopni)

Sprawdzenie w SageMath

1/2
1/2*sqrt(3)
1/2*sqrt(2)
1/2*sqrt(2)
1/2*sqrt(3)
1/2

Uzasadnienie matematyczne cos⁡(π/4)=1/2\cos(\pi/4)=1/\sqrt{2}

Prosta y=xy=x wyznacza wraz z okręgiem jednostkowym trójkąt równoramienny o wierzchołkach (0,0)(0,0), (x,0)(x,0) i (x,x)(x,x). Obliczmy wartość xx.

Graphics object consisting of 7 graphics primitives
[x == -1/2*sqrt(2), x == 1/2*sqrt(2)]

Wartość funkcji kosinus oraz sinus dla π/4\pi/4 jest dodatnia, zatem

cos⁡π/4=sin⁡π/4=22\cos \pi/4 = \sin\pi/4 = \frac{\sqrt{2}}{2}

Uzasadnienie matematyczne cos⁡(π/3)=1/2\cos(\pi/3)=1/2

UWAGA! Rozwiązanie podane poniżej wykorzystuje pojęcie prostej, wektora oraz normy wektora.

Określamy trójkąt równoboczny (kąt wewnętrzny π/3\pi/3) o wierzchołkach (0,0)(0,0), (1,0)(1,0) i wierzchołku (x,y)(x,y), który jest określony poprzez przecięcie trzech prostych L1:y=0L_1: y=0, L2:y=axL_2: y=ax i L3:y=bx−bL_3: y=bx-b. Proste L1L_1, L2L_2 przecinają się w punkcie (0,0)(0,0). Proste L1L_1, L3L_3 przecinają się w punkcie (1,0)(1,0), a proste L2L_2, L3L_3 przecinają się w punkcie (x,y)(x,y).

Cele:

  1. Wyznaczenie współrzędnych x,yx,y jako funkcji zmiennych a,ba,b.

  2. Wyznaczenie kwadratów odległości między punktami (0,0)(0,0), (1,0)(1,0) oraz (x,y)(x,y).

  3. Porównanie (kwadratów) odległości: x2+y2x^2+y^2, (x−1)2+y2(x-1)^2+y^2 oraz 1 (trójkąt równoboczny!).

[[x == -b/(a - b), y == -a*b/(a - b)]]
-a - b

Uzyskaliśmy relację a=−ba=-b. Podstawmy to do finalnej relacji x2+y2=1x^2+y^2=1.

b^2 - 3

Współczynnik b=−3b=-\sqrt{3} ze względu na wybór właściwego nachylenia prostej y=bx−by=bx-b. Uzyskaliśmy dane o punkcie (x,y)(x,y).

1/2
1/2*sqrt(3)

Zgodnie z definicją uzyskujemy formuły

cos⁡(π/3)=1/2\cos(\pi/3) = 1/2

oraz

sin⁡(π/3)=3/2.\sin(\pi/3) = \sqrt{3}/2.
Graphics object consisting of 7 graphics primitives

Prawo dodawania na okręgu

Oznaczmy przez [x,y][x,y] wektor z punktu (0,0)(0,0) do punktu (x,y)(x,y) na okręgu jednostkowym. Wektor obrócony o 90 stopni przeciwnie do ruchu wskazówek zegara względem wektora [x,y][x,y] ma współrzędne [−y,x][-y,x] (uzasadnij!). Z tej zależności otrzymujemy relacje

cos⁡(α+π/2)=−sin⁡α\cos(\alpha+\pi/2) = -\sin\alpha

oraz

sin⁡(α+π/2)=cos⁡α.\sin(\alpha+\pi/2) = \cos\alpha.

Obrócony układ współrzędnych

Punkt (u,v)(u,v) na okręgu jednostkowym (a więc u2+v2=1u^2+v^2=1) zadaje kąt α\alpha i wyznacza wektor [u,v][u,v] oraz wektor do niego prostopadły [−v,u][-v,u]. Względem tych dwóch wektorów otrzymujemy ,,obrócony’’ układ współrzędnych. Przyjmując, że nowa oś OXOX pokrywa się z półprostą wyznaczoną przez wektor [u,v][u,v], a oś OYOY pokrywa się z półprostą wyznaczoną przez wektor [−v,u][-v,u]. Oznaczmy drugi punkt na okręgu jednostkowym (x,y)(x,y) o kącie β\beta. Względem nowego układu współrzędnych obrót o kąt β\beta zadaje w układzie współrzędnych [1,0][1,0], [0,1][0,1] punkt o łącznym kącie α+β\alpha+\beta. W efekcie jest to punkt odpowiadający przejściu o xx jednostek względem wektora [u,v][u,v] i yy jednostek względem wektora [−v,u][-v,u]. Łącznie

x[u,v]+y[−v,u]=[xu,xv]+[−vy,yu]=[ux−vy,uy+xv].x[u,v]+y[-v,u] = [xu,xv]+[-vy,yu] = [ux-vy,uy+xv].

Ustaliliśmy w ten sposób ,,prawo dodawania’’ na okręgu jednostkowym. Punkt zadany przez sumę kątów α+β\alpha+\beta ma współrzędne (xu−yv,xv+uy)(xu-yv,xv+uy). W terminach funkcji trygonometrycznych oznacza to

cos⁡(α+β)=cos⁡αcos⁡β−sin⁡αsin⁡β\cos(\alpha+\beta) = \cos\alpha \cos\beta-\sin\alpha \sin\beta

i

sin⁡(α+β)=cos⁡αsin⁡β+cos⁡βsin⁡α.\sin(\alpha+\beta) = \cos\alpha \sin\beta+\cos\beta\sin\alpha.

Wraz ze wzorem (jedynkowym)

sin⁡2α+cos⁡2α=1\sin^2\alpha +\cos^2\alpha = 1

otrzymaliśmy komplet wzorów, które jednoznacznie identyfikują nam funkcje trygonometryczne.

Parzystość

Zgodnie z przyjętymi definicjami funkcja kosinus jest parzysta, tzn.

cos⁡(−x)=cos⁡x\cos(-x) = \cos x

dla dowolnego x∈Rx\in\mathbb{R}.

Funkcja sinus jest z kolei nieparzysta

sin⁡(−x)=−sin⁡x\sin(-x) = -\sin x

dla dowolnego x∈Rx\in\mathbb{R}.

Różnowartościowość, surjektywność i monotoniczność

Ponownie analizując definicję i relację z okręgiem otrzymujemy dwie własności:

  • funkcja sin⁡:[−π/2,π/2]→[−1,1]\sin:[-\pi/2,\pi/2]\rightarrow [-1,1] jest różnowartościowa, surjektywna i ściśle rosnąca.

  • funkcja cos⁡:[0,π]→[−1,1]\cos:[0,\pi]\rightarrow [-1,1] jest różnowartościowa, surjektywna i ściśle malejąca.

UWAGA! Do ścisłego dowodu tych własności wystarczy zauważyć, że dla zadanego kąta α∈[0,2π)\alpha\in[0,2\pi) z wyłączeniem kątów α=π/2\alpha=\pi/2 oraz α=3/2π\alpha=3/2\pi otrzymujemy prostą y=t(α)xy=t(\alpha)x dla pewnego współczynnika nachylenia t(α)t(\alpha). Podstawiając równanie tej prostej do równania okręgu otrzymujemy następujące relacje

cos⁡α=±11+t(α)2\cos\alpha = \pm\frac{1}{\sqrt{1+t(\alpha)^2}}

oraz

sin⁡α=±t(α)1+t(α)2\sin\alpha = \pm\frac{t(\alpha)}{\sqrt{1+t(\alpha)^2}}

gdzie wyznaczenie znaku otrzymujemy bazując na znaku funkcji sin⁡,cos⁡\sin,\cos oraz tt.

Zadanie (podwojenie kąta)

Wyprowadź następujące wzory

sin⁡(2α)=2sin⁡αcos⁡α\sin(2\alpha) = 2\sin\alpha \cos\alpha

oraz

cos⁡(2α)=cos⁡2α−sin⁡2α\cos(2\alpha) = \cos^2\alpha-\sin^2\alpha

Powyższe wzory pozwalają w stosunkowo prosty i wydajny sposób podać formuły dokładne oraz przybliżenia numeryczne dla kosinusa i sinusa dowolnego kąta postaci π/2i\pi/2^i dla i=0,1,2,…i=0,1,2,\ldots.

Załóżmy, że dana jest para liczb (cos⁡α,sin⁡α)(\cos\alpha,\sin\alpha) dla ustalonego kąta α∈[0,π/2]\alpha\in[0,\pi/2]. Otrzymujemy zgodnie z powyższymi wzorami formułę

cos⁡α/2=1+cos⁡α2.\cos\alpha/2 = \sqrt{\frac{1+\cos\alpha}{2}}.

Poprzez podstawienie do ,,wzoru jedynkowego’’ otrzymujemy

sin⁡α/2=1−cos⁡α2.\sin\alpha/2 = \sqrt{\frac{1-\cos\alpha}{2}}.
Loading...
Loading...
Graphics object consisting of 8 graphics primitives

Uzasadnienie matematyczne cos⁡(π/6)=3/2\cos(\pi/6)=\sqrt{3}/2

Do wyznaczenia wartości cos⁡(π/6)\cos(\pi/6) oraz sin⁡(π/6)\sin(\pi/6) wykorzystamy formułę na podwojenie kąta i własność cos⁡(π/6)>0\cos(\pi/6)>0 oraz sin⁡(π/6)>0\sin(\pi/6)>0.

[c == -1/2*sqrt(3), c == 1/2*sqrt(3)]
sqrt(-1/4*sqrt(3) + 1/2)

Zadanie (wartość funkcji kosinus dla kąta π/128\pi/128)

Korzystając z formuły powyżej wyznacz postać dokładną i postać numeryczną liczby cos⁡(π/128)\cos(\pi/128).

Loading...
0.999698818696204
0.999698818696204

Zadanie (wartość funkcji sinus dla kąta 7π/327\pi/32)

Wyznacz formułę dokładną na wartość funkcji sin⁡(x)\sin(x) dla x=7π/32x=7\pi/32.

Wystarczy zauważyć, że 7/32=1/4−1/327/32 = 1/4-1/32. Korzystając z formuły na sinusa kątów π/4\pi/4 oraz π/32\pi/32 oraz z formuły na sinus różnicy kątów, otrzymujemy sin⁡(7π/32)=sin⁡(π/4)cos⁡(π/32)−cos⁡(π/4)sin⁡(π/32)\sin(7\pi/32) = \sin(\pi/4)\cos(\pi/32)-\cos(\pi/4)\sin(\pi/32).

Graphics object consisting of 1 graphics primitive

Sumy trygonometryczne

Korzystając ze wzorów na kosinus i sinus sumy kątów możemy wyprowadzić następujące wzory

cos⁡x+cos⁡y=2cos⁡(x+y2)cos⁡(x−y2)\cos x+\cos y = 2\cos(\frac{x+y}{2})\cos(\frac{x-y}{2})
sin⁡x+sin⁡y=2sin⁡(x+y2)cos⁡(x−y2).\sin x+\sin y = 2\sin(\frac{x+y}{2})\cos(\frac{x-y}{2}).

Zadanie (wzory na sumy)

Wyprowadź powyższe wzory.

Zadanie (suma sinusa i kosinusa)

Uzasadnij, że

sin⁡x+cos⁡x=2sin⁡(x+π/4).\sin x+\cos x = \sqrt{2} \sin(x+\pi/4).
Graphics object consisting of 8 graphics primitives

Tangens i kotangens

Współczynnik nachylenia prostej y=t(α)xy=t(\alpha)x dla zadanego kąta α∈[0,2π)\alpha\in[0,2\pi) z wyłączeniem wartości α=π/2,3/2π\alpha=\pi/2,3/2\pi nazywamy tangensem kąta α\alpha i oznaczamy tan⁡α\tan\alpha. Zgodnie z równaniem okręgu i definicją funkcji sinus i kosinus zachodzi relacja

tan⁡α=sin⁡αcos⁡α.\tan \alpha = \frac{\sin\alpha}{\cos\alpha}.

Kotangensem kąta α\alpha (różnego od 0 i π\pi) nazywamy liczbę oznaczaną cot⁡α\cot\alpha i zdefiniowaną wzorem

cot⁡α=1tan⁡α.\cot\alpha = \frac{1}{\tan\alpha}.

Dla liczby α∈R\alpha\in\mathbb{R} stosujemy definicję, w której funkcje kosinus i sinus są obliczane zgodnie z formułą redukcyjną podaną wcześniej. W szczególności wartości kotangensa i tangensa powtarzają się po przesunięciu argumentu o dowolną wielokrotność liczby π\pi.

Wykres funkcji trygonometrycznych

Możemy teraz naszkicować wykresy funkcji trygonometrycznych zdefiniowanych w tym rozdziale

Graphics object consisting of 1 graphics primitive
Graphics object consisting of 1 graphics primitive
Graphics object consisting of 5 graphics primitives
Graphics object consisting of 7 graphics primitives

Okresowość

Funkcje kosinus i sinus są 2π2\pi-okresowe i jest to ich okres minimalny. Oznacza to, że

cos⁡(x+2π)=cos⁡(x)\cos(x+2\pi) = \cos(x)

oraz

sin⁡(x+2π)=sin⁡(x)\sin(x+2\pi) = \sin(x)

dla dowolnego x∈Rx\in\mathbb{R} i podobna własność nie jest prawdą dla żadnej liczby TT dodatniej, mniejszej od 2π2\pi.

Funkcje kotangens i tangens są π\pi-okresowe i jest to ich okres minimalny.

Podstawienie uniwersalne

Funkcje kosinus, sinus oraz tangens można powiązać za pomocą tzw. podstawienia uniwersalnego. Jego znaczenie omówimy poniżej.

We wszystkich wyprowadzeniach poniżej przyjmujemy, że kąty α\alpha nie są postaci k/2πk/2\pi dla żadnej liczby całkowitej kk.

Zgodnie z jedynką trygonometryczną, otrzymujemy

tan⁡2(α)+1=1cos⁡2α\tan^2(\alpha) +1 = \frac{1}{\cos^2\alpha}

Z formuły na podwojenie funkcji kosinus otrzymujemy

cos⁡(2α)=2cos⁡2(α)−1\cos(2\alpha) = 2\cos^2(\alpha)-1

i po podstawieniu

cos⁡(2α)=1−tan⁡2α1+tan⁡2α.\cos(2\alpha) = \frac{1-\tan^2\alpha}{1+\tan^2\alpha}.

Z formuły na podwojenie funkcji sinus otrzymujemy

sin⁡(2α)=2tan⁡α1+tan⁡2α.\sin(2\alpha) = \frac{2\tan\alpha}{1+\tan^2\alpha}.

Powyższe wzory nazywamy podstawieniem uniwersalnym, ponieważ pozwalają nam wyrazić wartości funkcji trygonometrycznych kosinus (cos⁡α\cos\alpha) i sinus (sin⁡α\sin\alpha) za pomocą formuły (wymiernej) jednej zmiennej (t=tan⁡(α/2)t=\tan(\alpha/2)). W syntetycznej formie

(cos⁡α,sin⁡α)=(1−t21+t2,2t1+t2)(\cos\alpha,\sin\alpha) = (\frac{1-t^2}{1+t^2},\frac{2t}{1+t^2})

gdzie t=tan⁡(α/2)t = \tan(\alpha/2).

Ponadto tan⁡α=2t1−t2\tan\alpha = \frac{2t}{1-t^2}.

UWAGA!

Formuła daje również poprawne wartości, o ile przyjmiemy poprawne konwencje dotyczące granic funkcji tan⁡α\tan\alpha przy zbliżaniu się do wartości nieoznaczonych. Sprawdź!

Parametryzacja wymierna okręgu

Charakteryzację punktów na okręgu jednostkowym x2+y2=1x^2+y^2=1 za pomocą parametru tt oraz dwóch zmiennych (x,y)=(1−t21+t2,2t1+t2)(x,y) = (\frac{1-t^2}{1+t^2},\frac{2t}{1+t^2}) nazywamy parametryzacją wymierną (ze względu na tt) okręgu.

Graphics object consisting of 1 graphics primitive

Znaczenie podstawienia uniwersalnego

Podstawienie uniwersalne pozwala przekształcić dowolną formułę trygonometryczną wykorzystującą pojedynczą zmienną α\alpha oraz całkowite wielokrotności tej zmiennej i operacje dodawania, odejmowania, mnożenia i dzielenia do postaci pewnej funkcji wymiernej (zmiennej t=tan⁡(α/2)t=\tan(\alpha/2)). Uproszczenie takiej formuły do postaci najkrótszej jest wówczas rutynowym zadaniem na wyrażenia podobne dla wielomianów oraz algorytm dzielenia wielomianów z resztą.

Jednym z podstawowych zastosowań jest redukcja całek trygonometrycznych do całek wymiernych. O tym będziemy się uczyć na analizie matematycznej.

Drugim ważnym zastosowaniem jest możliwość szybkiego wyznaczania funkcji trygonometrycznych. Klasycznym algorytmem, który wykorzystuje te idee, jest CORDIC (COordinate Rotation DIgital Computer). Jest to algorytm w klasie shift-and-add wynaleziony w latach 50. XX wieku przez Jacka Voldera. Pozwala on w wydajny sposób obliczać wartości funkcji trygonometrycznych mając do dyspozycji tylko podstawowe operacje arytmetyczne oraz tablicę wartości referencyjnych.

Zadanie (upraszczanie tożsamości)

Uzasadnij za pomocą podstawienia uniwersalnego, że wyrażenie sin⁡4(x)+cos⁡4x−1/2cos⁡2(2x)−1/2\sin^4(x) + \cos^4 x - 1/2\cos^2(2 x) - 1/2 upraszcza się do zera.

Wskazówka: Wykorzystaj dwie zmienne t=tan⁡(x/2)t=\tan(x/2) oraz t2=tan⁡(x)t_2 = \tan(x) i ich związek t2=2t1−t2t_2 = \frac{2t}{1-t^2}.

0

Algorytm CORDIC

W poniższych kilku zadaniach opiszemy sposób na wyznaczanie (jednoczesne) pary dwóch funkcji trygonometrycznych (cos⁡α,sin⁡α)(\cos\alpha,\sin\alpha) dla kątów 0<α<π/20 < \alpha < \pi/2. Jest to jedyny przedział, w którym musimy wyznaczać wartości funkcji trygonometrycznych bezpośrednim rachunkiem. W pozostałych przedziałach liczb rzeczywistych stosujemy parzystość funkcji oraz jej okresowość.

CORDIC - tożsamości

Uzasadnij korzystając z tożsamości podanych wcześniej, że zachodzą dla dowolnego kąta α\alpha oraz kąta 0<β<π/20<\beta<\pi/2 następujące tożsamości

  • 1+tan⁡2βcos⁡(α±β)=cos⁡α∓tan⁡βsin⁡α\sqrt{1+\tan^2\beta}\cos(\alpha\pm \beta) = \cos\alpha \mp \tan\beta \sin\alpha

  • 1+tan⁡2βsin⁡(α±β)=sin⁡α±tan⁡βcos⁡α\sqrt{1+\tan^2\beta}\sin(\alpha\pm \beta) = \sin\alpha \pm \tan\beta \cos\alpha

CORDIC - wartości specjalne

Teraz zaprojektujemy algorytm, który wyznacza (ustalone) przybliżenia numeryczne dla kątów βi\beta_i w przedziale (0,π/2)(0,\pi/2) spełniających relacje

tan⁡βi=12i\tan\beta_i = \frac{1}{2^i}

Dla i=0i=0 wartość kąta β0\beta_0 wynosi π/4\pi/4.

Wartość kąta β1\beta_1, dla którego tan⁡β1=1/2\tan\beta_1 = 1/2, wyznaczymy numerycznie z zadaną dokładnością. Zauważmy, że znamy metodę wyznaczania wartości funkcji tangens dla kątów π/2i\pi/2^i. Korzystając z formuły na sinusa i kosinusa sumy kątów, otrzymamy

tan⁡(α+β)=tan⁡α+tan⁡β1−tan⁡αtan⁡β,\tan(\alpha+\beta) =\frac{\tan\alpha+\tan\beta}{1-\tan\alpha\tan\beta},

Mając więc dany w kroku nn-tym tangens tnt_n kąta π/2n\pi/2^n otrzymujemy formułę na tangens tn+1t_{n+1} kąta π/2n+1\pi/2^{n+1} następująco

tn=2tn+11−tn+12t_n=\frac{2t_{n+1}}{1-t_{n+1}^2}

i korzystając z dodatniości obu wyrażeń wyprowadzamy wzór rekurencyjny

tn+1=−1tn+1+tn2tn.t_{n+1} = -\frac{1}{t_{n}}+\frac{\sqrt{1+t_{n}^2}}{t_n}.
[[1/4*pi, 1.00000000000000], [1/8*pi, 0.414213562373095], [1/16*pi, 0.198912367379658], [1/32*pi, 0.0984914033571647], [1/64*pi, 0.0491268497694666], [1/128*pi, 0.0245486221089237], [1/256*pi, 0.0122724623795705], [1/512*pi, 0.00613600015762472]]

W kolejnym kroku wykorzystamy tablicę wyznaczonych wartości tan⁡π/2n\tan\pi/2^n do obliczenia wartości βi\beta_i, dla których tan⁡βi=1/2i\tan\beta_i = 1/2^i. Startując od wartości tangensa dla π/4\pi/4, która wynosi 1, będziemy korygować tę wartość korzystając z tożsamości

tan⁡(x+y)=tan⁡x+tan⁡y1−tan⁡xtan⁡y.\tan(x+y) = \frac{\tan x+\tan y}{1-\tan x \tan y}.

Mając dane przybliżenie βim\beta_i^{m} w mm-tym kroku spełniające własność tan⁡βim<1/2i\tan\beta_i^{m} < 1/2^i poszukujemy na liście elementów tan⁡π/2j\tan\pi/2^j takiej pozycji jj, aby indeks jj był najmniejszym możliwym, dla którego zachodzi

tan⁡(βim+π/2j)<1/2i.\tan(\beta_{i}^m+\pi/2^j) < 1/2^i.

W ten sposób otrzymujemy wartość βim+1=βim+π/2j\beta_{i}^{m+1} = \beta_{i}^m+\pi/2^j i w kolejnym kroku będziemy przeszukiwać listę od indeksu j+1j+1 wzwyż. Algorytm zatrzymujemy w momencie, gdy osiągnęliśmy pożądaną wartość błędu 1/2i−tan⁡(βim)<ϵ1/2^i - \tan(\beta_i^{m}) < \epsilon dla zadanego z góry ϵ\epsilon.

[(1/4*pi, 1.0000000000000000000000000000), (5070934489/34359738368*pi, 0.49999999990035765720922114811), (2679342517/34359738368*pi, 0.24999999990959789595212387809), (1360076097/34359738368*pi, 0.12499999991952645792755488633), (42667331/2147483648*pi, 0.062499999917698551970573841998), (341671445/34359738368*pi, 0.031249999948421089681982516737), (170877413/34359738368*pi, 0.015624999930512532503403664797), (85443921/34359738368*pi, 0.0078124999895466838245222201309), (10680653/8589934592*pi, 0.0039062499610521905952177749260), (21361387/34359738368*pi, 0.0019531249360535920183539559400), (83443/268435456*pi, 0.00097656249674699430942650687966)]

W ostatnim kroku obliczymy przybliżenie wartości (cos⁡α,sin⁡α)(\cos\alpha,\sin\alpha) dla kąta α\alpha w przedziale (0,π/2)(0,\pi/2) stosując korekty wartości referencyjnych dla kątów βi\beta_i oraz ich tangensów tan⁡βi=1/2i\tan\beta_i = 1/2^i (z dokładnością do ϵ\epsilon błędu)

  • 1+2−2icos⁡(αi±βi)=cos⁡αi∓2−isin⁡αi\sqrt{1+2^{-2i}}\cos(\alpha_i\pm \beta_i) = \cos\alpha_i \mp 2^{-i} \sin\alpha_i

  • 1+2−2isin⁡(αi±βi)=sin⁡αi±2−icos⁡αi\sqrt{1+2^{-2i}}\sin(\alpha_i\pm \beta_i) = \sin\alpha_i \pm 2^{-i} \cos\alpha_i

Za wartość początkową przyjmujemy α0=α\alpha_0=\alpha. W ii-tym kroku, jeśli aktualna wartość jest dodatnia, odejmujemy kąt βi\beta_i, w przeciwnym przypadku dodajemy. Odwzorowujemy też ten efekt na obliczanych funkcjach trygonometrycznych.

(0.54030230586931977050317848782, 0.84147098480713880326914124188, 3.7994145047196532351921549346e-13)

Porównując wartość obliczoną geometrycznie cos⁡(π/4)=1/2\cos(\pi/4)=1/\sqrt{2} z przybliżeniem wyznaczonym w 40 iteracjach algorytmu CORDIC otrzymujemy prawidłową wartość z 16-cyfrową precyzją.

Warto zaznaczyć, że podstawowe kroki iteracji algorytmu CORDIC to dodawanie liczb zmiennoprzecinkowych oraz mnożenie przez potęgi 2, które realizuje się operacją shift, która jest znacząco szybsza niż ogólne mnożenie zmiennoprzecinkowe.

(-5.7700458367192628175046408339313819966904942745512160692812e-16, 5.7700458367192581091027638255049221908773500864782978560239e-16)
Graphics object consisting of 2 graphics primitives

Funkcje cyklometryczne

Funkcje kosinus, sinus, kotangens i tangens są bijekcjami, gdy ograniczymy je do odpowiednich przedziałów. W przypadku funkcji f:A→Bf:A\rightarrow B bijektywnej możemy skonstruować funkcję f−1:B→Af^{-1}:B\rightarrow A spełniającą relacje f(f−1(y))=yf(f^{-1}(y))=y dla dowolnego y∈By\in B oraz f−1(f(x))=xf^{-1}(f(x))=x dla dowolnego x∈Ax\in A.

Funkcja odwrotna do sinusa

Definiujemy funkcję arcsin:[−1,1]→[−π/2,π/2]arcsin:[-1,1]\rightarrow [-\pi/2,\pi/2]. Jest to funkcja odwrotna do funkcji sin:[−π/2,π/2]→[−1,1]sin:[-\pi/2,\pi/2]\rightarrow [-1,1].

Funkcję nazywamy arkus sinusem.

Graphics object consisting of 1 graphics primitive

Funkcja odwrotna do kosinusa

Definiujemy funkcję arccos:[−1,1]→[0,π]arccos:[-1,1]\rightarrow [0,\pi]. Jest to funkcja odwrotna do funkcji cos:[0,π]→[−1,1]cos:[0,\pi]\rightarrow [-1,1].

Funkcję nazywamy arkus kosinusem.

Graphics object consisting of 1 graphics primitive

Funkcja odwrotna do tangensa

Definiujemy funkcję arctan:R→(−π/2,π/2)arctan:\mathbb{R}\rightarrow (-\pi/2,\pi/2). Jest to funkcja odwrotna do funkcji tan:(−π/2,π/2)→Rtan:(-\pi/2,\pi/2)\rightarrow \mathbb{R}.

Funkcję nazywamy arkus tangensem.

Graphics object consisting of 1 graphics primitive

Funkcja odwrotna do kotangensa

Definiujemy funkcję arccot:R→(0,π)arccot:\mathbb{R}\rightarrow (0,\pi). Jest to funkcja odwrotna do funkcji cot:(0,π)→Rcot:(0,\pi)\rightarrow \mathbb{R}.

Funkcję nazywamy arkus kotangensem.

Graphics object consisting of 2 graphics primitives

Zadanie (ciekawostka z arkusem tangensem)

Udowodnij równość

arctan(1)+arctan(2)+arctan(3)=π.arctan(1) + arctan(2) + arctan(3) = \pi.

Wskazówka: wykorzystaj wzór

tan⁡(x+y)=tan⁡x+tan⁡y1−tan⁡x⋅tan⁡y\tan (x+y) = \frac{\tan x+\tan y}{1-\tan x\cdot\tan y}

oraz zauważ, że suma arctan(2)+arctan(3) arctan(2) + arctan(3) daje kąt w przedziale (π/2,π)(\pi/2,\pi).