1.1. Primjeri katastrofalnih grešaka iz prakse#
Moderna tehnologija omogućila je izvođenje simulacija složenosti koja je bila nezamisliva do prije 50-ak godina. Međutim, oslanjanje na numeričke algoritme koji su u laboratorijskim uvjetima radili savršeno i njihovo puštanje „u stvarni svijet” može imati nepredviđene posljedice.
U sljedeća tri primjera greška je redovito bila posljedica ljudskog faktora: bilo zbog pogreške u matematičkom modeliranju problema, bilo zbog previda netrivijalnih efekata koje ima konačna aritmetika računala.
U prvom Zaljevskom ratu, 25. veljače 1991. godine, američke rakete Patriot nisu uspjele oboriti iračku raketu Scud iznad Dhahrana u Saudijskoj Arabiji. Raketa Scud je pukim slučajem pala na američku vojnu bazu - usmrtivši 28 i ranivši stotinjak ljudi.

Istraga otkriva sljedeće:
Računalo koje je upravljalo Patriot raketama, vrijeme je brojilo u desetinkama sekunde proteklim od trenutka paljenja (uključivanja) sustava.
Desetinka sekunde binarno: \((0.1)_{10} = (0.0\overline{0011})_2\).
To računalo prikazivalo je realne brojeve korištenjem nenormalizirane mantise duljine 23 bita.
Spremanjem broja \(0.1\) u registar takvog računala radi se (apsolutna) greška \(\approx 9.5 \cdot 10^{-8}\) (sekundi). Ne izgleda puno…
Detalji:
Računalo je bilo u pogonu 100 sati, pa je ukupna greška zaokruživanja bila (stalno se zbraja, svakih 0.1 sekundi) \(100 \cdot 60 \cdot 60 \cdot 10 \cdot 9.5 \cdot 10^{-8} = 0.34\) s.
Raketa Scud putuje brzinom \(\approx 1.6\) km/s, pa greška od \(0.34\)s u mjerenju vremena ima za posljedicu da je njezin položaj izračunat s greškom od više od pola kilometra od stvarnog položaja.
Greška je uočena dva tjedna ranije, nakon 8 sati rada jednog drugog sustava. Modifikacija programa stigla je dan nakon nesreće.
Posade sustava mogle su i dva tjedna ranije dobiti uputu „isključi/uključi računalo” svakih nekoliko sati - ali je nisu dobile.
Vidimo da je katastrofa nastala zbog aritmetike računala: početna vrlo malena greška se nakon mnogo aritmetičkih operacija nagomilala i prestala biti zanemarivo malena.
Raketa Ariane 5 lansirana 4. lipnja 1995. godine iz Kouroua (Francuska Gvajana).
Nosila je u putanju oko Zemlje komunikacijske satelite vrijedne 500 milijuna USD.
37 sekundi nakon lansiranja izvršila je samouništenje.

Objašnjenje:
U programu za vođenje rakete postojala je varijabla koja je pamtila horizontalnu brzinu rakete (no zapravo nije služila ničemu!).
Greška je nastupila kad je program pokušao pretvoriti preveliki 64-bitni realni broj u 16-bitni cijeli broj.
Računalo je javilo grešku, što je izazvalo samouništenje.
Isti program bio je korišten u prijašnjoj sporijoj verziji Ariane 4, pa do katastrofe nije došlo.
Vidimo da je do katastrofe ponovno došlo zbog specifičnosti aritmetike računala: raspon brojeva koji se mogu pohraniti u varijablu realnog tipa dvostruke preciznosti je puno veći od onog koji stane u 16-bitni cjelobrojni tip.
Naftna platforma Sleipner A potonula je prilikom prvog sidrenja, 23. kolovoza 1991. godine u blizini Stavangera.
Baza platforme su 24 betonske ćelije, od kojih su 4 produljene u šuplje stupove na kojima leži paluba.
Prilikom uronjavanja baze došlo je do pucanja veza među ćelijama (v. desnu sliku).
Rušenje na dno mora je izazvalo potres jačine 3.0 stupnja po Richterovoj ljestvici i štetu od 700 milijuna USD.
Razlozi nesreće:
Greška je nastala u projektiranju, primjenom standardnog paketa programa, kad je upotrijebljena metoda konačnih elemenata s nedovoljnom točnošću.
Proračun je dao naprezanja 47% manja od stvarnih.
Točnijim proračunom utvrđeno je da su ćelije morale popustiti na dubini od 62 metra, a popustile su na 65 metara!
Ovdje je do katastrofe došlo zbog oslanjanja na matematički model koji nije ima dovoljnu točnost.