diff --git a/graf_napake.jl b/graf_napake.jl index fe47ded..567bc39 100644 --- a/graf_napake.jl +++ b/graf_napake.jl @@ -2,4 +2,10 @@ 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 +savefig("napaka.svg") + +include("sincos.jl") + +plot(x->sinus(x)-sin(x)+1e-15, -pi, 2pi) + +savefig("napaka-sinus.svg") \ No newline at end of file diff --git a/kotne-funkcije.typ b/kotne-funkcije.typ index 5f53337..720514a 100644 --- a/kotne-funkcije.typ +++ b/kotne-funkcije.typ @@ -21,18 +21,19 @@ $ 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) +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 +Ekvivalent formule /*vstavi referenco!*/ za dvojni kot za $cos$ je $ - cos(2alpha) = cos^2(alpha)-sin^2(alpha) + cos(2alpha) = cos^2(alpha)-sin^2(alpha)\ + cos(x) = cos^2(x/2)-sin^2(x/2) $ // vstavi tabelo napak -#let x_tab = (0.01, 0.05, 0.1, 0.5) +/*#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)) @@ -42,3 +43,27 @@ $ (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) +*/ + +//vstavi izpis programa +#raw(read("sincos.jl"), lang: "jl") + +//končni graf razlike +#image("napaka-sinus.svg") + +//diagram + +#import "@preview/fletcher:0.5.8" +#import fletcher: diagram, node, edge +#import fletcher.shapes: pill, hexagon + +#diagram(node-stroke: 1pt, + { + node((0, 0), shape: pill)[$sin(x)$] + node((1, -1), shape: hexagon)[$cos(x/2)$] + node((1, 1), shape: hexagon)[$sin(x/2)$] + edge((0, 0), (1, -1), "<-", label-angle: auto)[zmnoži] + edge((0, 0), (1, 1), "<-") + + } +) \ No newline at end of file diff --git a/napaka-sinus.svg b/napaka-sinus.svg new file mode 100644 index 0000000..ac2d879 --- /dev/null +++ b/napaka-sinus.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sincos.jl b/sincos.jl index f56cb9a..b70ac06 100644 --- a/sincos.jl +++ b/sincos.jl @@ -4,11 +4,23 @@ Izračunaj vrednost funkcij `sin` in `cos` za dano vrednost `x`. """ function sincos(x) - if (abs(x)< 0.05) + if (abs(x)< 0.01) x2 = x^2 return x*(1 + x2*(-1/6 + x2/120)), 1 + x2*(-0.5 + x2/24) end - x = mod(x, 2pi) + x = mod(x + pi, 2pi) - pi s, c = sincos(x/2) return 2*s*c, c^2 - s^2 -end \ No newline at end of file +end +""" + y = sinus(x) + +Izračunaj vrednost funkcije `sin(x)` v točki `x`. +""" +sinus(x) = sincos(x)[1] +""" + y = cosinus(x) + +Izračunaj vrednost funkcije `cos(x)` v točki `x`. +""" +cosinus(x) = sincos(x)[2] \ No newline at end of file