Primjeri katastrofalnih grešaka iz prakse

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.

Primjer 1.2

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.

Patriot

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.

Primjer 1.3

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.

Ariane

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.

Primjer 1.4

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.

Ariane
Ariane

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.