Napake numeričnih metod

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

Napake numeričnih metod nastanejo zato, ker reševanje temelji na približnih podatkih. Tako se pojavi tudi napaka pri rezultatu.

Vsebina

Viri napak

  • matematični model
ni popoln opis fizikalnega modela
ne vemo vseh podrobnosti
  • človeški faktor
napake pri računanju
napake pri programiranju
  • napaka v računalniku
napaka v aritmetični enoti cpu
  • nenatančni podatki
napaka pri meritvi
  • računanje z omejeno natančnostjo
zaokroževalne napake

Izvori napak

  • Napake numeričnih metod
ko hočemo neskončni proces rešiti v končnem času (npr. računanje limite, integrala)


absolutna napaka = približna vrednost - točna vrednost


relativna napaka = | (absolutna) napaka | / točna vrednost


Primer

točna vrednost

približna vrednost

absolutna napaka

An = 3.142857142857143 − π = 0.001264489267349761


relativna napaka



σ = predznak števila (1 bit)

= mantisa (23 bitov)

e = eksponent - število množenj z 2 (8 bitov)


3.14 : 2

1.57 : 2



> help eps
eps is a built-in constant

-- Built-in Variable: eps
   The machine precision. More precisely, `eps' is the largest relative spacing between
   any two adjacent numbers in the machine's floating point system. This number is obviously
   system-dependent. On machines that support 64 bit IEEE floating point arithmetic,
   `eps' is approximately  2.2204e-16.
> eps
eps =  2.2204e-16


(1 + ε) − 1 = ε

> (1+eps)-1
ans =  2.2204e-16

> (1+eps/2)-1
ans = 0

Ker pri deljenju eps z 2 zadnji bit odleti ven iz mantise (se odreže) izgubimo na natančnosti.


Relativna napaka je vedno manjša od strojnega ε-a



Računamo produkt


Zaradi približnosti poznamo ki je število x z neko napako δx

zato računamo


| δx | < < 1

| δy | < < 1


δxy = δx + δy


Deljenje



 

δx / y = δx − δy



Seštevanje/odštevanje

= x(1 + δx) + y(1 + δy) = = x + y + xδx + yδy =

(x + y)(1 + δx + y)



x2 − 73x + 1 = 0


x1 = 72.886

x2 = 0.0137




Ik > 0,Ik (padajoče) 0 ?!? .. kaj je kdo hotu tuki napisat?

xk = u

exdx = dv

ex = v



for k=1:20
  
end

v tem primeru se napake z odštevanjem rekurzivno množijo


Računanje vrednosti polinoma



p = b(a);
t=1;
for i = 1:n
  t = t*x;
  p = p+t*b(i+1);
end

število operacij:


lahko ga izboljšamo:

p = a(n+1)
for i = n:-1:1
  p = p.*x + a(i);
end

število operacij:

Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja