You are on page 1of 11

Sanja Singer

Matematika IX
Vježbe

Zagreb, 2020.
1. Greške
Najjednostavaniji primjeri grešaka u računu u aritmetici računala dolaze od jedne
jedine operacije oduzimanja kod koje zbog oduzimanja relativno velikih bro-
jeva (prema rezultatu) dolazi do katastrofalnog kraćenja.
Zadatak 1.1. U aritmetici računala treba izračunati vrijednost funkcije
√ √
f (x) = 361 + x2 − 361 − x2 .

Hoće li vrijednost te funkcije za −1  x < 0 biti točno izračunata? Objasnite!


Posebno, ako vrijednost neće biti točno izračnata, predložite bolji način računanja
u aritmetici računala.
Rješenje. Prvo treba ustanoviti hoće li doći do katastrofalnog kraćenja, tj. je li
rezultat relativno malen prema brojevima koji se javljaju u računu.
Za −1  x < 0 vrijednost funkcije se neće izračunati točno jer za takve x vrijedi
√ √ √ √
361 + x2 ≈ 361, 361 − x2 ≈ 361,

pa će rezultat biti približno jednak


√ √ √ √
361 + x2 − 361 − x2 ≈ 361 − 361 ≈ 0.

Finalni rezultat je mali broj i do njega se došlo oduzimanjem bliskih brojeva u


odnosu na brojeve koje smo oduzimali pa će doći do katastrofalnog kraćenja.
Želimo li točniji rezultat, treba transformirati oblik funkcije na pogodniji. To se
postiže deracionalizacijom izraza
√ √
√ √ √ √  361 + x2 + 361 − x2
2
361 + x − 361 − x = 2 361 + x − 361 − x · √
2 2 √
361 + x2 + 361 − x2
2x2
=√ √ .
361 + x2 + 361 − x2
Primijetite
√ da kod posljednjeg izraza neće doći do katastrofalnog √
kraćenja, jer odu-
2
zimanje 361 − x nije katastrofalno (finalni rezultat je veličine 361).
Zadatak 1.2. U aritmetici računala treba izračunati nultočke kvadratne funkcije

f (x) = x2 + 987.654x + 1.

Koja od nultočaka x1 ili x2 će se točnije izračunati u aritmetici računala, ako je


√ √
−b + b2 − 4ac −b − b2 − 4ac
x1 = , x2 = ?
2a 2a
Predložite bolju formulu za računanje netočnije izračunate nultočke?
2 1. Greške

Rješenje. Uvrštavanjem konkretnih koeficijenata u prvu formulu dobivamo



−987.654 + 987.6542 − 4
x1 = .
2

Kod oduzimanja pod korijenom, 987.6542 − 4 neće doći do katastrofalnog kraće-
nja, jer je 987.6542 = 975460.423716, a rezultat nakon oduzimanja je

987.6542 − 4 = 975456.423716.

Dakle, oduzimanjem relativno malog broja, 4, od velikog broja 987.4562 nismo na-
pravili nikakvu štetu jer je rezultat veliki broj. Međutim,

987.6542 − 4 ≈ 987.651975

što je vrlo blisko broju 987.654 koji moramo oduzeti, pa će doći do katastrofalnog
kraćenja, jer je rezultat oduzimanja

−987.654 + 987.651975 ≈ −0.002025

što je malo prema brojevima od kojih je nastao.


Što se druge formule za x2 tiče, umjesto oduzimanja, u brojniku ćemo imati
“zbrajanje”
−987.654 − 987.651975 ≈ −1975.305975
pa neće doći do nikakvig kraćenja. Zaključujemo da je druga formula pogodnija za
računanje.
Nalaženje pogodnije forme za računanje x1 je malo teži zadatak. Naime treba
upotrijebiti Vièteove formule (ne treba ih pamtiti, lako se izvedu). Svaki polinom
stupnja 2,
f (x) = a2 x2 + a1 x + a0
može se zapisati korištenjem svojih nultočaka x1 i x2 kao

f (x) = a2 (x − x1 )(x − x2 ).

Ako pomnožimo sve članove u prethodnoj formuli, dobivamo

f (x) = a2 x2 − a2 (x1 + x2 )x + a2 x1 x2 .

Usporedbom članova uz svaku potenciju sa standardnim zapisom polinoma izlazi

a1 = −a2 (x1 + x2 ), a0 = a2 x1 x2 ,

odnosno
a1 a0
x1 + x2 = − , x1 x2 = .
a2 a2
Odatle izlazi da x1 možemo izračunati na dva načina korištenjem točno izračunatog
x2
a1 a0
x1 = − − x2 , x1 = .
a2 a2 · x 2
3

Očito je da bi u prvoj formuli moglo doći do katastrofalnog kraćenja (ovisi o pred-


zanicama a1 , a2 i x2 ), ali u drugoj formuli nema nikakvog oduzimanja, nego dolazi
samo do benignih množenja i dijeljenja. Dakle, kod bolje formule za račun x1 prvo
se izračuna x2 , a zatim
a0
x1 = .
a2 · x 2
Zadatak 1.3. U aritmetici računala računamo vrijednost izraza
1 − cos x
sin x
za x ≈ 0. Hoće li dobiveni rezultat biti približno točan ili ne? Ako dobiveni
rezultat neće biti približno točan, transformirajte dani izraz kako biste povećali
njegovu točnost prilikom računanja u aritmetici računala. Sve svoje tvrdnje detaljno
obrazložite.
Rješenje. Za x ≈ 0 je cos x ≈ 1 i 1 − cos x ≈ 0, što znači da će doći do oduzimanja
bliskih brojeva, (što znači da je rezultat malen broj obzirom na brojeve koje smo
oduzimali). Stoga dobiveni rezultat neće biti približno točan. Kako bismo pove-
ćali točnost prilikom računanja provest ćemo transformaciju izraza proširivanjem
razlomka i korištenjem poznatih trigonometrijskih identiteta
 
1 − cos x 1 − cos x 1 + cos x
= ·
sin x sin x 1 + cos x
2
1 − cos x sin2 x sin x
= = = .
sin x(1 + cos x) sin x(1 + cos x) 1 + cos x
I računanje vrijednosti funkcije korištenjem redova može biti problematično u
aritmetici računala.
Prisjetimo se s prve godine da tangenta (ako je funkcija ima) u okolini točke x0
dobro aproksimira ponašanje funkcije u okolini točke x0 .
Želimo li bolje aproksimacije, umjesto tangente (pravca), funkciju možemo apro-
ksimirati i polinomima višeg stupnja. Podizanjem stupnja polinoma sve do u bes-
konačno, dobit ćemo “beskonačne polinome” tj. Taylorove redove za funkciju f oko
točke x0 :

X f (k) (x0 )
f (x) = (x − x0 )k
k=0
k!

f 0 (x0 ) f (n) (x0 )


= f (x0 ) + (x − x0 ) + · · · + (x − x0 )n + · · · .
1! n!

Za funkcije koje imaju beskonačno mnogo derivacija, postoji interval oko x0 u kojem
se funkcijska vrijednost f (x) može dobiti zbrajanjem članova na desnoj strani. Očito
je da mora postojati bar jedna takva točka, jer ako uvrstimo x0 , dobivamo f (x0 ) =
f (x0 ) (svi osim prvog člana na desnoj strani su jednaki nula!).
Uz pretpostavku da red konvergira, tj. da je zbroj desne strane jednak funkcijskoj
vrijednosti, možemo kao aproksimaciju za funkcijsku vrijednost umjesto beskonačno
4 1. Greške

mnogo članova reda f uzeti samo konačno mnogo njih. Tada ćemo umjesto Taylo-
rovog reda f dobiti Taylorov polinom p. Odmah je jasno da smo uzimanjem
samo konačno mnogo članova, (točnije, ako smo uzeli Taylorov polinom stupnja n)
napravili neku grešku Rn+1 . Prema tome, vrijedi
f (n+1) (ξ)
f (x) = p(x) + Rn+1 (x), Rn+1 (x) = (n+1)!
(x − x0 )n+1 ,

gdje je
n
X f (k) (x0 )
p(x) = (x − x0 )k
k=0
k!

f 0 (x0 ) f 00 (x0 ) f (n) (x0 )


= f (x0 ) + (x − x0 ) + (x − x0 )2 + · · · + (x − x0 )n ,
1! 2! n!

a Rn+1 greška odbacivanja, pri čemu je ξ neki broj između x i x0 .


Na primjer, funkcija
1
f (x) =
1−x
može se razviti u Taylorov red oko x0 = 0 (tzv. Mac Laurinov red). Derivi-
ranjem dobivamo:
1
f (x) = = (1 − x)−1 = 0!(1 − x)−1 , f (0) = 1,
1−x
f 0 (x) = (−1) · (−1)(1 − x)−2 = (1 − x)−2 = 1!(1 − x)−2 , f 0 (0) = 1!,
f 00 (x) = (−2) · (−1)(1 − x)−3 = 2 · 1(1 − x)−3 = 2!(1 − x)−3 , f 00 (0) = 2!,
f 000 (x) = (−3) · (−1) · 2!(1 − x)−4 = 3!(1 − x)−4 , f 000 (0) = 3!,
.. .. .. .
. = . . = ..
f (n) (x) = (−n)(−1)(n − 1)!(1 − x)−(n+1) = n!(1 − x)−(n+1) , f (n) (0) = n!.
Uvrštavanjem, dobivamo Mac Laurinov red:
1
= 1 + x + x2 + x3 + · · · + xn + · · · .
1−x
Ovaj razvoj neće vrijediti za svaki x. Očito je da ne vrijedi za, na primjer: x = 1, −1.
Međutim, ovaj razvoj ne vrijedi i za mnoge druge x-ove. Recimo, ako je x > 1, svaki
novi dodani član je veći od prethodnog, pa suma ne može težiti u negativan broj!
Uz malo znanja o redovima, nije teško odrediti radijus konvergencije dobivenog
reda. Radijus konvergencije je nenegativan broj r takav da u intervalu hx0 −r, x0 +ri
funkcija f i njezin red daju jednake vrijednosti.
Za prethodni primjer, nije teško pokazati da mora biti |x| < 1, tj. da je radijus
konvergencije prethodnog reda jednak 1.
Zamijenimo sad red
1
= 1 + x + x2 + x3 + · · · + xn + · · · , |x| < 1
1−x
5

Taylorovim polinomom. Zanima nas kolika je greška ako smo uzeli samo članove s
potencijama do uključivo n. Greška je:

f (n+1) (ξ) n+1


Rn+1 (x) = x .
(n + 1)!

U našem slučaju je

(n + 1)!
f (n+1) (x) = (n + 1)!(1 − x)−(n+2) = ,
(1 − x)n+2

pa je
1
Rn+1 (x) = n+2
xn+1 ,
(1 − ξ)
a ξ između 0 i x.
Zadatak 1.4. Ako znamo red za
1
f (x) = ,
1−x
možemo li lako napisati redove za
1 1 1
(a) , (b) , (c) ln(1 + x), (d) − ?
1+x 1 + x2 (1 + x)2

Rješenje. (a) Zamjenom x → −x dobivamo


1
= 1 − x + x2 − x3 + · · · + (−1)n xn + · · · , |x| < 1.
1+x
(b) Zamjenom x → x2 u redu (a) dobivamo
1
= 1 − x2 + x4 − x6 + · · · + (−1)n x2n + · · · , |x| < 1.
1 + x2
(c) Integriranjem reda (a) član po član, dobivamo

x2 x3 x4 xn+1
ln(1 + x) = x − + − + · · · + (−1)n + ···, |x| < 1.
2 3 4 n+1
(d) Deriviranjem reda (a) član po član, dobivamo
1
− = −1 + 2x − 3x2 + 4x3 + · · · + (−1)n nxn−1 + · · · , |x| < 1.
(1 + x)2

Zadatak 1.5. Vrijednost ln 1.5 aproksimiramo početnim komadom Taylorovog reda


funkcije ln(x + 1) oko točke 0. Tn (x) je početni komad tog reda, kojemu je najveća
potencija od x jednaka n, a Rn+1 (x) odgovarajuća greška odbacivanja.
(a) Napišite Tn (x) i ocijenite |Rn+1 (x)| za 0 ≤ x ≤ 0.5.
6 1. Greške

(b) Ako Tn (0.5) zbrajamo računalom (recimo u dvostrukoj točnosti), tako da je


greška odbacivanja po apsolutnoj vrijednosti manja ili jednaka ε, (0 < ε  1),
da li će izračunati rezultat dobro aproksimirati vrijednost ln 1.5, tj. hoće li greške
aritmetike računala biti velike? Objasnite.
Rješenje. (a) Mac Laurinov red za funkciju f (x) = ln(x + 1) smo već izveli u
prethodnom zadatku. Taj red smo mogli dobiti i direktnom upotrebom formula
za Taylorov red, što je u ovom slučaju korisno, jer nam treba ocjena greške.
Dakle, imamo:

f (x) = ln(1 + x), f (0) = 0,


f 0 (x) = 0!(1 + x)−1 , f 0 (0) = 1,
f 00 (x) = −(1 + x)−2 = −1!(1 + x)−2 , f 00 (0) = −1!,
f 000 (x) = 2!(1 + x)−3 , f 000 (0) = 2!,
.. .. .. .
. = . . = ..
f (n) (x) = (−1)n−1 (n − 1)!(1 + x)−n , f (n) (0) = (−1)n−1 (n − 1)!.

Za ocjenu greške Taylorovog polinoma treba nam

f (n+1) (x) = (−1)n n!(1 + x)−(n+1) ,

pa Taylorov polinom do uključenog člana s potencijom n glasi:

x2 x3 x4 xn
Tn (x) = x − + − + · · · + (−1)(n−1) ,
2 3 4 n
a pritom je napravljena greška

f (n+1) (ξ) n+1 (−1)n n! n+1 (−1)n


Rn+1 (x) = x = x = xn+1 ,
(n + 1)! (n + 1)!(1 + ξ)n+1 (n + 1)(1 + ξ)n+1

pri čemu je ξ između 0 i x. Ocijenimo sad grešku za 0 ≤ x ≤ 0.5:

(−1)n |x|n+1


n+1
|Rn+1 (x)| =
x =
(n + 1)(1 + ξ)n+1 (n + 1)|1 + ξ|n+1
= (smanjivanjem nazivnika povećavamo razlomak)
= (zbog x > 0 nazivnik najmanji za ξ = 0)
|x|n+1 xn+1
≤ = (zbog x > 0 je |x| = x) ≤ .
n+1 n+1
Prethodna ocjena vrijedi za svaki 0 < x < 1. Posebno, ako je x < 0.5, dobivamo

0.5n+1
|Rn+1 (0.5)| ≤ .
n+1
Primijetimo da porastom n ta greška vrlo brzo opada.
7

(b) U zadacima tog tipa prvo treba vidjeti kako dobivamo rezultat. Ako ga dobiva-
mo zbrajanjem (može i negativnih brojeva), opasnost nastupa isključivo ako
oduzimanjem od velikih brojeva (relativno obzirom na rezultat), dobijemo male.
Najprije pogledajmo veličinu ln(1.5). Lako je ocijeniti da je 0 < ln(1.5) < 1
(preciznije ln(1.5) ≈ 0.4). Sad još treba vidjeti kakvi se brojevi javljaju u Mac
Laurinovom redu:
0.52 0.53 0.54 0.5n
Tn (0.5) = 0.5 − + − + · · · + (−1)(n−1) .
2 3 4 n
Pozitivne potencije od 0.5 su brojevi koji su manji od 0.5, tako da članovi reda
po apsolutnoj vrijednosti brzo opadaju. Uzimamo toliko članova dok ne bude
zadovoljeno
|Rn+1 (0.5)| ≤ ε,
tj. greška odbacivanja će biti malena, pa će odgovarajući polinom dobro aprok-
simirati funkciju.
Iako se u redu javlja oduzimanje, oduzimaju se samo (relativno) mali brojevi
(obzirom na rezultat), pa će rezultat dobiven zbrajanjem Mac Laurinovog reda
biti točan.

Zadatak 1.6. Broj


(a) e−10 , (b) sh(−10), (c) arctg 0.7
računamo putem početnog komada MacLaurinovog reda za odgovarajuću funkciju,
koristeći aritmetiku računala, (recimo, dvostruku točnost) sve dok posljednji član u
zbroju ne padne ispod zadane točnosti ε (0 < ε  1). Hoće li će takva aproksimacija
dati približno točan rezultat ili ne? Objasnite!

Rješenje. (a) Prisjetimo se reda za

x x2 x3 xn
ex = 1 + + + + ··· + + ···,
1! 2! 3! n!
(koji konvergira za svaki x ∈ R). Odmah je vidljivo da je broj e−10 dosta malen
broj koji se nalazi između 2−10 i 3−10 .
Uvrštavanjem −10 u red, dobivamo

10 102 103 10n


e−10 = 1 − + − + · · · + (−1)n + ···.
1! 2! 3! n!
Ako zbrojimo konačno mnogo članova tog reda, pogledajmo kolika će biti greška
odbacivanja:
f (n+1) (ξ) n+1 eξ
Rn+1 (x) = x = xn+1 ,
(n + 1)! (n + 1)!
pri čemu je ξ između −10 i 0. Grešku odbacivanja sad lako ocijenimo:

eξ |x|n+1
|Rn+1 (x)| = |x|n+1 ≤ (eξ < 1 jer ξ negativan) ≤ .
(n + 1)! (n + 1)!
8 1. Greške

Dakle,
10n+1
|Rn+1 (10)| ≤ .
(n + 1)!
Ako je posljednji član koji smo zbrojili (po apsolutnoj vrijednosti) ispod ε, tj.
ako je
10n
≤ ε,
n!
onda je
10n+1 |10|n 10 10ε
|Rn+1 (10)| ≤ = · ≤ ,
(n + 1)! n! n + 1 n+1
očito |Rn+1 (10)| mali broj. Drugim riječima, odbacivanjem članova reda napra-
vili smo relativno malu pogrešku.
Sad se pitamo možemo li zbrajanjem članova Taylorovog polinoma dobiti točan
rezultat. To ovisi samo o aritmetici računala. Vratimo se članovima Taylorovog
polinoma ako uvrstimo −10. Primjećujemo da su članovi različitih predznaka,
da prvo rastu (recimo 107 /7! je poprilično velik broj), a onda padaju (po apso-
lutnoj vrijednosti), a rezultat je malen broj. Taj malen broj mogli smo dobiti
samo tako da se članovi oduzimanjem skrate. Dakle, iako je greška odbacivanja
mala, rezultat je pogrešan, jer smo koristili aritmetiku računala.
(b) Funkcije sh, ch definiraju se kao

ex − e−x ex + e−x
sh x = , ch x = .
2 2
Nadalje,
sh x ch x
th x = , cth x = .
ch x sh x
Pitanje je kolika je veličina broja sh(−10). Uvrštavanjem u definiciju za sh
dobivamo:
e10
sh(−10) ≈ − ,
2
−10 10
jer je e zanemarive veličine obzirom na e . Drugim riječima, | sh(−10)| je
vrlo velik broj. Pogledajmo kako ćemo dobiti Mac Laurinov red za sh (i ch)
znajući red za

x x2 x3 xn
ex = 1 + + + + ··· + + ···, x ∈ R.
1! 2! 3! n!
Red za e−x onda je

x x2 x3 xn
e−x = 1 − + − + · · · + (−1)n + · · · , x ∈ R.
1! 2! 3! n!
Oduzimanjem ta dva reda (član po član) i dijeljenjem s 2 dobivamo

x x3 x2n+1
sh x = + + ··· + + ···, x ∈ R.
1! 3! (2n + 1)!
9

(Red se lako pamti jer su mu članovi isti kao i u redu za sinus, samo svi imaju
pozitivne predznake članova.) Na sličan način, ali zbrajanjem imamo

x2 x2n
ch x = 1 + + ··· + + ···, x ∈ R.
2! (2n)!

Budući da red konvergira za svaki x ∈ R, a odbacivanjem smo napravili malu


pogrešku, (jer zbrajamo članove sve dok posljednji nije manji od ε) pitanje je
samo koliku smo pogrešku napravili korištenjem aritmetike računala.
Budući da je rezultat po apsolutnoj vrijednosti velik broj, a dobili smo ga zbra-
janjem negativnih brojeva (svi članovi u redu su negativni ako uvrstimo −10),
rezultat mora biti točan.
(c) Prisjetimo se prvog zadatka. Tamo smo izveli red za

1
= 1 − x2 + x4 − x6 + · · · + (−1)n x2n + · · · , |x| < 1.
1 + x2
Integriranjem tog reda član po član, dobivamo

x3 x5 x7 (−1)n x2n+1
arctg x = x − + − + ··· + + · · · , |x| < 1.
3 5 7 2n + 1

Provjerimo koliki je arctg 0.7. Približno je 3/3 < 0.7 < 1, pa je π/6 <
arctg 0.7 < π/4, tj. broj je reda veličine 1.
Red ima i pozitivne i negativne članove, međutim članovi brzo opadaju, pa
ne dolazi do kraćenja velikih brojeva koji bi rezultirali pogrešnim rezultatom.
Dakle, aproksimacija daje približno točan rezultat.
75π
Zadatak 1.7. Broj ctg računamo putem početnih komada MacLaurinovih re-
4
dova za funkcije cos x i sin x koristeći aritmetiku računala, (recimo, dvostruku toč-
nost) sve dok posljednji član u svakom od zbrojeva ne padne ispod zadane točnosti
ε (0 < ε  1). Hoće li će takva aproksimacija dati približno točan rezultat ili ne?
Objasnite! Ako ne, može li se to nekako poboljšati?

Rješenje. Rezultat je relativno mali broj i to −1.


Na predavanju ste vidjeli da red za sinus neće biti dobar ako je |x| velik broj
(članovi rada su suprotnih predznaka i zbrajanjem se skrate). Slično vrijedi i za red
za kosinus. Prema tome, ovako kao je red napisan, iz dva loša rezultata, dijeljenjem
nećemo dobiti ništa bolje.
Popravak:  
75π 3π 3π
ctg = ctg 18π + = ctg .
4 4 4
Rezultat će biti bitno bolji, ali 3π/4 je još uvijek veće od 1.
Može i još bolje:
3π π 3π π
sin = sin , cos = − cos ,
4 4 4 4
10 1. Greške

pa je
75π π
ctg = − ctg .
4 4
Sada smo sigurni da će redovi za sinus i kosinus biti dobri i u aritmetici računala,
jer je π/4 < 1, pa članovi u Taylorovom redu brzo opadaju.

You might also like