Dopolni primer kotnih funkcij
This commit is contained in:
parent
a97bee079d
commit
369d60b39a
4 changed files with 92 additions and 8 deletions
|
|
@ -2,4 +2,10 @@ using Plots
|
|||
|
||||
plot(x->sin(x)-(x-x^3/6 + x^5/120), -0.1, 0.1)
|
||||
|
||||
savefig("napaka.svg")
|
||||
savefig("napaka.svg")
|
||||
|
||||
include("sincos.jl")
|
||||
|
||||
plot(x->sinus(x)-sin(x)+1e-15, -pi, 2pi)
|
||||
|
||||
savefig("napaka-sinus.svg")
|
||||
|
|
@ -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), "<-")
|
||||
|
||||
}
|
||||
)
|
||||
41
napaka-sinus.svg
Normal file
41
napaka-sinus.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 82 KiB |
18
sincos.jl
18
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
|
||||
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]
|
||||
Loading…
Add table
Add a link
Reference in a new issue