Prijavi se z GoogleID

» »

Hrošč v Mathematici spominja na leto 1994

Hrošč v Mathematici spominja na leto 1994

Slo-Tech - Španski matematiki so našli hrošča v zadnjih verzijah programskega paketa Mathematica, ki povzroči napačne rezultate nekaterih izračunov in celo različne rezultate ob več zagonih z istimi vhodnimi parametri. Hrošč se vleče že vsaj štiri leta, Wolfram pa ga kljub poročilu pred letom dni še vedno ni popravil.

Na napako so naleteli, ko so računali Casoratijeve determinante in želeli dokazati nekaj izrekov. Pri izračunih v Mathematici so odkrili nekaj protiprimerov, medtem ko so isti izračuni v Maplu kazali, da protiprimerov ni. Podrobna analiza je pokazala, da sta možna le dva scenarija - bodisi napak računa Mathematica bodisi Maple.

Iskanje hrošča je pokazalo, da je krivec Mathematica. Ne le da nekatere vrednosti determinant izračuna narobe, pri nekaterih primerih vrne vsakokrat drugačen rezultat, četudi so vhodni parametri identični. Casoratijeve determinante so pustili ob strani in umetno konstruirali nekaj preprostih matrik dimenzij 14 x 14, ki so vsebovale zelo velika števila. Mathematica je determinante teh matrik izračunala narobe in vsakokrat različno. Napaka je prisotna v verziji 8, ki je izšla leta 2010, in v vseh naslednjih inačicah. Čeprav so proizvajalca že lani opozorili na hrošča in prejeli potrditev, da bodo hrošča pregledali, ima tudi najnovejša verzija 10 še vedno isto napako.

Preden Mathematico nepovratno izbrišete, seveda velja poudariti, da se napaka pojavi le v zelo specifičnih okoliščinah. Napačno izračunane determinante so bile reda velikosti 109762 (res pa je, da je Mathematica zgrešila tako red velikosti s svojim 109768 kakor tudi predznak), s katerimi najverjetneje nikoli ne boste imeli opraviti. To tudi ni edini primer hrošča v Mathematici, navajajo raziskovalci, saj lahko nepravilno obnašanje opazimo že pri računanju nekaterih integralov.

Programska in strojna oprema sta obremenjeni s hrošči, ker ju snujejo ljudje, ki smo zmotljivi. Najbolj znan primer je gotovo Pentiumov hrošč iz leta 1994, a še zdaleč ni edini. Procesorji imajo precej napak (errata), ki so znane in se jim programska oprema uspešno izogiba. Tudi programska oprema ima svoje hrošče.

To odpira zanimivo vprašanje, kaj storiti z matematičnimi dokazi, ki se pomembno opirajo na računalniško moč. Nedavno smo bili priče dokazu, ki vsebuje 13 GB veliko datoteko. Odprl je pomembno vprašanje - ali so takšni dokazi dovolj rigorozni. Moramo preveriti kodo visokonivojsko kodo programa, prevod v strojno kodo, instrukcije procesorja, vse generirane podatke? Matematiki so se pač že od nekdaj mrščili nad dokazi s pregledom vseh možnih primerov.

19 komentarjev

terryww ::

pri takih zgodbah zasijejo odprtokodni projekti e.g. sagemath.
It is the night. My body's weak.
I'm on the run. No time to sleep.

Mesar ::

In kako lahko vrže različen rezultat za iste vhodne podatke? >:D Razen če vmes uporablja kak rand() :))

On the second thought... če so zahebali kak overflow pa začne pobirat podatke iz napačnih registrov, sam glede na wiki piše da je implementacija v Java/C++ bi blo vseeno čudno...
Your turn to burn!

Zgodovina sprememb…

  • spremenil: Mesar ()

mihaelf3 ::

Mesar je izjavil:

In kako lahko vrže različen rezultat za iste vhodne podatke? >:D Razen če vmes uporablja kak rand() :))

On the second thought... če so zahebali kak overflow pa začne pobirat podatke iz napačnih registrov, sam glede na wiki piše da je implementacija v Java/C++ bi blo vseeno čudno...


Pa sej niti rand() ne bi bil čuden. Za take velike probleme se dostikrat uporablja neke stohastične z-nekaj-sigma-imam-prav algoritme. To ni tisto računanje determinante, ki ga poznaš iz šole.
torch it

mtosev ::

se vidi, da je proizvajalec zelo resen, če buga ne uspe popraviti v enem letu in da še naprej prodaja software kateri ima tega hrošča
i like:) [Dell Inspiron 13 7000 - i7 6500U, 8gb ddr3l, 256gb samsung, ips fhd]
moj oče darko 1960-2016
moj labradorec max 2002-2013

terryww ::

Mesar je izjavil:

In kako lahko vrže različen rezultat za iste vhodne podatke?

a new kind of science
It is the night. My body's weak.
I'm on the run. No time to sleep.

sisemen ::

terryww je izjavil:

pri takih zgodbah zasijejo odprtokodni projekti e.g. sagemath.


Zakaj ze? Bos ti popravil bug? Aja, drugi ga bojo, ko jim bo v interesu, ne? No, nobene razlike od closed sourca. Razen, da lahko njim kot stranka tezis, open source "communityu" pa ne mores, lahko pa jih na kolenih moledujes po forumih (lahko pa jim morda nakazes kaj denarja ampak tega v duhu freeloaderskega open source movementa seveda ne bos naredil, buh ne daj da bi developerji imeli kaj od svojega dela razen še več dela). Kaj pa naredi zanasanje na open source je pa tako bleedheart nazorno pokazal. In tudi koliko casa prezivijo taki bugi v tej "vsem na vpogled, samo nihce ne pogleda" odprti kodi.

Zgodovina sprememb…

  • spremenilo: sisemen ()

Isotropic ::

sam popraviš napako pa je, če je OSS.
potem si pa še eno popoldne vzameš in spišeš upload in strong ai, če se ga še nihče ni lotil (thomasov upload mislim).

v realnosti je pa bolj tko kot LO/ OO, ki zgolj caplja daleč za ms office.

Zgodovina sprememb…

sisemen ::

Isotropic je izjavil:

sam popraviš napako pa je, če je OSS.
potem si pa še eno popoldne vzameš in spišeš upload in strong ai, če se ga še nihče ni lotil (thomasov upload mislim).

v realnosti je pa bolj tko kot LO/ OO, ki zgolj caplja daleč za ms office.

Tudi tole sam popravis napako je bolj teorija kot realnost. Uporabnikov in raznih kvazi administratorjev je veliko vec kot developerjev in te ne bodo popravljali nicesar (oz. bodo k temu pripomogli toliko kot v closed source svetu ljudje popravljajo strojno kodo - se tudi zgodi sem in tja, predvsem okrog DRMja redno :D). Imajo pa polna usta "kako lahko potem sam popravis bug", dejansko se jim pa gre samo za software, ki ga ni treba plačati.

Zgodovina sprememb…

  • spremenilo: sisemen ()

LightBit ::

sisemen je izjavil:

Imajo pa polna usta "kako lahko potem sam popravis bug", dejansko se jim pa gre samo za software, ki ga ni treba plačati.

Morda pa se jim/nam gre za oboje?

Nekateri pa izgleda raje plačajo nekomu, čeprav traja več let, da popravijo napako.

SimplyMiha ::

... ki povzroči napačne rezultate nekaterih izračunov in celo različne rezultate ob več zagonih z istimi vhodnimi parametri.


Hej, true random generator!

marjans ::

Mesar je izjavil:

In kako lahko vrže različen rezultat za iste vhodne podatke?

Temu se reče da so vgradili "človeško inteligenco". Če bi ti računal determinante reda takšnih velikosti (10^9000), bi tudi za iste vhodne podatke dobil pri vsakem izračunu različen rezultat ;-)

darkkk ::

marjans je izjavil:

Mesar je izjavil:

In kako lahko vrže različen rezultat za iste vhodne podatke?

Temu se reče da so vgradili "človeško inteligenco". Če bi ti računal determinante reda takšnih velikosti (10^9000), bi tudi za iste vhodne podatke dobil pri vsakem izračunu različen rezultat ;-)


Ne ravno. Numerično računanje determinant gre ponavadi prek iterativnih algoritmov in če se ciklajo oz. ne konvergirajo dovolj, potem se matriko malo perturbira in zadeva lepo skonvergira. Kako točno perturbiraš - verjetno mal naključno:P

Zgodovina sprememb…

  • spremenil: darkkk ()

erunno ::

Mesar je izjavil:

In kako lahko vrže različen rezultat za iste vhodne podatke? >:D Razen če vmes uporablja kak rand() :))

On the second thought... če so zahebali kak overflow pa začne pobirat podatke iz napačnih registrov, sam glede na wiki piše da je implementacija v Java/C++ bi blo vseeno čudno...


Za Mathematico nevem, lahko ti pa povem kako je pri bistveno bolj razširjenem MS Excel. Microsoft Excel ima stack za računanje z številkami omejen za prvih 15 znakov - če probaš računat številke z več kot 15 mesti, ki so iz različnih velikostnih razredov, bo zaradi težav z registi pobral nakjučne podatke iz delovnega spomina in jih prikazal kot desetiško število - in bodo zato "naključne" ter vsakič drugačne. Prav tako ima pa težave pri premikanju registrov in se pri ničli dogajajo čudni rezultati, kadar imaš številke različnih velikostnih razredov (ne v okolici 0 ampak pri številki 0) - (sprobaj v MS Excel sešteti -1,23 1,11 in 0,12).

Mesar ::

Jaz mam sicer OOo 8-), ki mi vrže lepo nulo, ampak sem za foro probal še office 2010:

;((



Sicer sem že slišal šale na račun M$ja, da ima probleme pri nekih hudo velikih številih... tole je pa novo za mene 8-O
Your turn to burn!

Mesar ::

Edit: Če že ima probleme pri tako malih decimalkah potem more biti to zanimivo pri poročili, ki jih marsikateri še dan danes vedno generirajo z Excelom, ker se ta lahko priročno poveže na M$SQL in potem grafe ven printa...

Lepa igra :))
Your turn to burn!

BaToCarx ::

hehe



Zgleda da je openoffice bolj n00b friendly.

Zgodovina sprememb…

  • zavaroval slike: Gandalfar ()

McMallar ::

Number format pac zaokrozuje na izbrano st. mest (default 2), zato tudi rezultat 0.
Why can't a programmer tell the difference between Halloween and Christmas?
Because OCT31 = DEC25

BaToCarx ::

Točno tako, in ko podatke iz take celice uporabljaš nekje drugje in to parkrat v kompleksnih tablecah in pseudo funkcijah ??? enron. :D

HeMan ::

Misliš da OO pa ne zaokrožuje? Dvomim da pri OO dobiš čisto 0 :)

Primer:

Zgodovina sprememb…

  • spremenil: HeMan ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Hrošč v Mathematici spominja na leto 1994

Oddelek: Novice / Znanost in tehnologija
195098 (2914) HeMan
»

Raspberry Pi z Mathematico kot kalkulator za 25 dolarjev

Oddelek: Novice / Znanost in tehnologija
105901 (3090) M.B.
»

AMD potrdil obskurnega strojnega hrošča v svojih procesorjih

Oddelek: Novice / Procesorji
337245 (4898) Tody
»

Microsoft zakrpal 22 lukenj

Oddelek: Novice / Operacijski sistemi
255448 (4443) s1m0n
»

Izšla Mathematica 8

Oddelek: Novice / Ostala programska oprema
73263 (2358) Mavrik

Več podobnih tem