Professional Documents
Culture Documents
Pràctica 3 Microbiologia Molecular Biotec UAB3
Pràctica 3 Microbiologia Molecular Biotec UAB3
Pràctica 3
1 Errors
1.1 Objectiu
Els càlculs numèrics en general no són exactes. Els errors en el resultat calculat provenen
principalment dels errors en les dades, dels errors d’arrodoniment i dels errors de truncament
del mètode. En aquesta pràctica veurem alguns dels efectes provocats pels errors en les dades i
els d’arrodoniment i com evitar-los en la mesura que sigui possible.
1
Llavors, el màxim error relatiu en representar un número x en punt flotant és
f l(x) − x m
≤
x 2
Per altra banda no es poden representar a la màquina nombres amb un valor absolut ar-
bitràriament gran ni arbitràriament petit ja que per guardar l’exponent k (veure (1)) l’ordinador
també disposa d’un espai finit.
El nombre més gran i el més petit (aproximadament) representables en Octave els podem
obtenir fent
>> realmax
>> realmin
Si es sobrepassa el valor de realmax es produeix un overflow i octave retorna Inf. Els valors
que quedin per sota del mı́nim es prenen iguals a 0. A part de la variable Inf, octave disposa
d’una altra variable especial NaN (’Not a Number’) per indicar una indeterminació (0/0, ∞ − ∞,
...).
Exemple
e−x
Considerem la funció g(x) = 6 . Noteu que g(x) 6= 0 per a tot x 6= 0. A continuació avaluem aquesta
x
funció en alguns punts.
>> g=@(x)exp(-x)/xˆ6;
>> x1=g(-500), x2=g(-1000)
x1 = 8.9830e+200
x2 = Inf % veiem que el valor calculat de g(-1000) és més gran que realmax
>> y1=g(500), y2=g(1000)
y1 = 4.5597e-234
y2 = 0 % ara el valor calculat de g(1000) és menor que el mı́nim nombre
representable.
Exercici 2.2
1. Definiu les següents funcions
x4 − 1 1
g1 (x) = , g2 (x) = .
x4 + x3 − 6x2 − x + 5 1 − ex−1
Com interpreteu la resposta d’octave a les instruccions següents ?
>> g1(1)
>> g2(1)
2. Quina resposta dona octave a la instrucció tan(3 pi/2) ? Com interpreteu aquest
resultat ?
2
1.3 Aritmètica de punt flotant
A part dels errors deguts a la representació finita dels nombres reals també s’introdueixen errors
quan es realitzen operacions aritmètiques (errors d’arrodoniment). Noteu que en general, el pro-
ducte de dos nombres de t dı́gits tindrà 2t dı́gits. Amb octave si 2t > 16 el resultat s’arrodonirà
a 16 dı́gits (aproximadament) i per tant tindrem un error en el producte. És a dir, en general
f l(xy) 6= xy encara que x, y siguin exactes.
Exemple
Calculem el producte de dos nombres a=456.789, b=6.54321.
>> a=456.789; b=6.54321;
>> r=a*b
r = 2988.86635269000 % noteu que a i b tenen 6 dı́gits i el producte r, té 12 dı́gits
En una màquina que treballi amb 6 dı́gits (decimals), el resultat seria 2988.87.
Anomenem errors d’arrodoniment aquest tipus d’errors, és a dir, a la diferència entre el resultat
obtingut i el que es tindria si tots els càlculs es fessin de manera exacta.
Com que les operacions usant aritmètica de punt flotant en general no donen el mateix resultat
que si es fessin de manera exacta, no tenen perque complir les mateixes propietats que les
operacions matemàtiques. Expressions matemàticament equivalents poden no ser-ho quan es
treballa en punt flotant. A continuació en veurem alguns exemples.
Exemple
D’acord amb la propietat associativa de la suma, donats tres nombres reals qualsevols a, b, c es compleix
que (a + b) + c = a + (b + c). Usant aritmètica de punt flotant això no sempre es compleix.
>> a=0.876456e-10; b=412345; c=-412345;
>> r1 = (a+b)+c, r2 = a+(b+c)
r1 = 1.16415321826935e-10
r2 = 8.76456000000000e-11
Noteu que només r2 dona el resultat correcte !
Exercici 3.1
Definiu les funcions f (x) = exp(x2 ), i g(x) = x10 .
Si a = f (25), b = g(14000), c = −b + 1000 , calculeu a(b + c) i ab + ac . Comenteu els
resultats.
1.4 Cancel·lació
Els errors d’arrodoniment durant els càlculs són inevitables i encara que acostumen a donar
errors petits en alguns casos no és aixı́. Una d’aquestes situacions es produeix quan es resten
dues quantitats de magnituds similars donant lloc a una pèrdua important de dı́gits significatius.
Aquest fenòmen es coneix com cancel·lació.
Exercici 4.1
6 11
Per a la matriu A =
1 2
3
3. Calculeu el determinant de les matrius anteriors directament usant que
a b
det = ad − bc
c d
Exemple
Considerem la funció p
g(x) = 10( x8 + 200 − x4 )
Volem representar gràficament g i estudiar l’error comés en la seva avaluació.
Obriu un fitxer amb nom EG.m amb les següents instruccions
% EG.m
clear;
g=@(x) 10.*(sqrt(x.ˆ8.+200).-x.ˆ4);
t=linspace(100,130,300); % genera 300 punts equiespaiats entre 100 i 130
yg=g(t);
plot(t,yg,’r’) % fa la gràfica de g a l’interval [100, 130]
Exercici 4.2
Utilitzeu el programa anterior per representar gràficament la funció g a l’interval [100, 150].
Noteu que la funció g és contı́nua a R. La gràfica obtinguda és la que podem esperar d’una
funció contı́nua ? Com expliqueu la gràfica obtinguda ?
Exercici 4.3
4
1.5 Problemes mal condicionats
Alguns problemes són molt sensibles a variacions en les dades inicials en el sentit que petits canvis
relatius en les dades poden donar lloc canvis relatius grans en la solució (“efecte papallona”).
Diem que aquests problemes estan mal condicionats.