Miért jelenik meg 0 helyett 10^-13. -on nagyságrendű szám?
C++-ban készítettem egy legkisebb négyzetek elvén működő görbe illesztő programot. A probléma először magasabb fokú polinomok illesztésekor jelentkezett, ugyanis a mátrix eliminációs eljárása során 0 helyett 10^-13.-on nagyságrendű számot ad. Minél magasabb az illeszteni kívánt görbe fokszáma, ez a szám annál inkább tér el 0-tól. A kellemetlenség áthidalására először double helyett long double-t használtam a változóknál, de 4-5.fok környékén már ezek sem voltak elég pontosak.
A használt algoritmus egy teljesen szokványos Gauss-elimináció, maple-ben leellenőriztem a számítás menetét lépésről lépésre, és ott nem jelentkezett ez a hiba.
Remélem érhetően fogalmaztam, a segítségeket előre is köszönöm!
Köszönöm a választ!
Meg is lepődtem, amikor nem jött ki a pontos eredmény...
Az implementáció úgy gondolom jó, az elimináció első lépésénél az első oszlopot (az első elem kivételével) szépen ki is nullázza, azonban a további lépéseknél már megjelenik a hiba, és minél több lépésre van szükség, annál szignifikánsabban jelentkezik. Arra gondoltam, talán több iterációval sikerülne kiküszöbölni ezt a kellemetlenséget, csak remélem van erre egyszerűbb megoldás is.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!