#import "@preview/zero:0.5.0": num, set-round #import "@preview/oxifmt:1.0.0": strfmt = Numerično računanje kotnih funkcij *Naloga*: Izračunati želimo vrednosti kotnih funkcij na *10 decimalnih mest* natančno. Da bo funkcija uporabna, zahtevamo naslednje lastnosti: - časovna zahtevnost je omejena enakomerno po celem definicijskem območju - relativna mapaka je enakomerno omejena - uporabnik funkciji poda zgolj argument, izbiro algoritma in število potrebnih korakov opravi funkcija sama. Graf prikazuje razliko med sinusno funkcijo in prvimi tremi členi Taylorjeve vrste v točki 0. //Vstavi sliko! #image("napaka.svg") Uporabimo adicijske izreke za kotne funkcije. Ker želimo izračunati za velike vrednosti, uporabimo formulo za dvojni kot $ sin(2alpha) = 2sin(alpha)cos(alpha). $ Težava je, da formula vsebuje tudi vrednost funkcije $cos(alpha)$. Problem rešimo tako, da hkrati računamo obe funkciji $sin(x)$ in $cos(x)$. Napisali bomo funkcijo sincos(x) // vstavi signaturo Ekvivalent formule /*vstavi referenco!*/ za dvojni kot za $sin$ je $ cos(2alpha) = cos^2(alpha)-sin^2(alpha) $ // vstavi tabelo napak #let x_tab = (0.01, 0.05, 0.1, 0.5) #let sin_t3(x) = x*(1+x*x*(-(1/6) + x*x/120)) #let cos_t3(x) = 1 + x*x*(-1/2 + x*x/24) #let fmt(x) = num(strfmt("{:.2e}", x)) #let sin_x = x_tab.map( (x)=>fmt(calc.sin(x) - sin_t3(x))) #let cos_x = x_tab.map( (x)=>fmt(calc.cos(x)-cos_t3(x))) #set-round(mode: "figures", precision: 3) #table(columns: x_tab.len() + 1, $x$, ..x_tab.map((x)=>str(x)), $sin(x)-T_(sin)(x)$, ..sin_x, $cos(x)-T_(cos)(x)$, ..cos_x)