Keresés

Új hozzászólás Aktív témák

  • Sir Ny

    senior tag

    válasz Abu85 #17 üzenetére

    eredetileg ezt írtad: ,,Olyan nincs, hogy egy matematikai műveletnek több lehetséges eredménye van."

    abban az értelmezésben hogy a több eredmény is egy eredmény (WTF?) lehet hogy igaz, de akkor ez nem matematika hanem világfüggő. Sőt, el sem lehet képzelni más világot mint hogy ugyanabból az állapotból elvégezve ugyanazt a műveletet ne ugyanazt kapjuk (vagy legalábbis néhány ugyanaz közül valamelyiket. Schrödinger macskás kísérleténél maradva: akárhányszor elvégezzük, mindig azt kapjuk, hogy vagy ilyen pozícióban van egy macskahullánk, vagy ilyen pozícióban egy élő macskánk)

  • flugi

    tag

    válasz Abu85 #17 üzenetére

    Ez a hozzáállás alapvetően sérül a gyakorlatban, és ez nem a kerekítési probléma miatt van, hanem mert véges az ábrázolható kettedesjegyek száma. Egy IEEE float-ban 23, egy IEEE double-ben 52 kettedesjegy van. Ha van néhány ezer számod, amik nagyságrendben is eltérnek egymástól, akkor az összegük értéke attól fog függni, hogy milyen sorrendbe adod őket össze, mert ha a nagyobbakkal kezded, akkor a részösszeg nagyságrendje annyira különbözhet az összeadás kisebb operandusaitól, hogy azok konkrétan nem okoznak változást a bitekben, mert a 23-id (vagy akár 52-ik) kettedesjegy utániak.

    Az tehát eleve lehetetlen feladat, hogy egzakt, lebonyolításfüggetlen eredményt várjunk el. A kerekítési, illetve pontossági elvárások, amiket az IEEE float és double leír, azért érdekesek, mert amennyire lehet, maximalizálni tudják az egyes aritmetikai lépések pontosságát. Egy klasszikus közelítő GPU implementáció egy-két bitben akár el is térhet ettől, cserébe a hatékonysága akár 10-szeres is lehet. Tipikus, hogy a szögfüggvényeket float-ban GPU-n néhány FMA lépéssel lehet hardveresen megoldani, de ennek az eredménye nem egyezik pontosan az IEEE float pontosságával, ami grafikában általában tökmindegy, de egy GPGPU alkalmazásban fontos lehet, mert a sok részeredmény sok pontatlansága gyorsabban nő, mint az IEEE kevesebb pontatlansággal járó részeredményei.

    Érdekességképpen megjegyzendő, hogy különösen GPGPU alapokon domborodik ki a különböző ütemezések miatti eltérő részeredmény-csoportosítás miatti "újra számolom és más jön ki" jelenség, mivel a GPU atomikus művelete (amivel a párhuzamosan számolt részeredményeket összedolgozni érdemes) ütemezőfüggő sorrendben hajtódik végre, CPU programokban ez általában determinisztikus, hacsaknem több szálú, trükkös kódot csinál az ember.

  • Sir Ny

    senior tag

    válasz Abu85 #15 üzenetére

    ,, vagyis az egyik oldal egyenlő a másikkal. "

    vagy az egyik oldal nagyobb mint a másik, vagy az egyik oldal eleme a másiknak. Léteznek intervallumok és halmazok is.

  • Sir Ny

    senior tag

    válasz Abu85 #11 üzenetére

    ,,Olyan nincs, hogy egy matematikai műveletnek több lehetséges eredménye van."

    lásd még másodfokú egyenletek.
    Vagy kör és egyenes meszése (nem csak az algebra).

    Alapvetően a matematikai műveletek sok potenciális értéken hajtódnak végre (például az x^2 függvény minden valós számon) és sok potenciális értéket adnak ki eredményként, amin el lehet végezni egy újabb műveletet..

  • menpee

    aktív tag

    válasz Abu85 #11 üzenetére

    Ha emlékeim nem csalnak, akkor például az exponenciális egyenleteknek is több megoldásuk lehet ugyanazon művelet esetén is. Az integrálásnál pedig konkrétan akármi, ahogy azt a +C jelöli. És akkor még nem is osztottunk végtelent végtelennel :D
    Természetesen csak kötekedés, a cikk és a hsz.-ed mondanivalója érthető és elfogadható ;)

Új hozzászólás Aktív témák

Hirdetés