From a97bee079d05935dc4678ceb5dbe11e684b25b11 Mon Sep 17 00:00:00 2001 From: Martin Vuk Date: Sun, 4 Jan 2026 01:36:13 +0100 Subject: [PATCH] Dodaj tabelo napak --- graf_napake.jl | 5 +++++ kotne-funkcije.typ | 33 ++++++++++++++++++++++++++++++++- napaka.svg | 41 +++++++++++++++++++++++++++++++++++++++++ sincos.jl | 15 +++++++++++++-- 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 graf_napake.jl create mode 100644 napaka.svg diff --git a/graf_napake.jl b/graf_napake.jl new file mode 100644 index 0000000..fe47ded --- /dev/null +++ b/graf_napake.jl @@ -0,0 +1,5 @@ +using Plots + +plot(x->sin(x)-(x-x^3/6 + x^5/120), -0.1, 0.1) + +savefig("napaka.svg") \ No newline at end of file diff --git a/kotne-funkcije.typ b/kotne-funkcije.typ index 7148e87..5f53337 100644 --- a/kotne-funkcije.typ +++ b/kotne-funkcije.typ @@ -1,3 +1,6 @@ +#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. @@ -7,7 +10,35 @@ Da bo funkcija uporabna, zahtevamo naslednje lastnosti: - 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 dvema členoma v razvoju okrog 0. +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) diff --git a/napaka.svg b/napaka.svg new file mode 100644 index 0000000..b9cc51d --- /dev/null +++ b/napaka.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sincos.jl b/sincos.jl index 0794d66..f56cb9a 100644 --- a/sincos.jl +++ b/sincos.jl @@ -1,3 +1,14 @@ -using Plots +""" + s, c = sincos(x) -plot(x->sin(x)-(x-x^3/3)) \ No newline at end of file +Izračunaj vrednost funkcij `sin` in `cos` za dano vrednost `x`. +""" +function sincos(x) + if (abs(x)< 0.05) + x2 = x^2 + return x*(1 + x2*(-1/6 + x2/120)), 1 + x2*(-0.5 + x2/24) + end + x = mod(x, 2pi) + s, c = sincos(x/2) + return 2*s*c, c^2 - s^2 +end \ No newline at end of file