Navigation:  Základní postupy a orientace v programu >

Obecně o přesnosti výpočtů a zaokrouhlování

Previous pageReturn to chapter overviewNext page

Velmi často odpovídáme na dotazy týkající se problematiky přesnosti výpočtů a zaokrouhlování, zvláště v oblasti výpočtů pro katastr nemovitostí. Zkusím zde tedy sepsat pár obecných faktů o práci s reálnými čísly v počítačích.

Změna v zaokrouhlování od verze 18.0.8

Až dosud měl program GEUS nastavené zaokrouhlování na "nejbližší hodnotu" tak, jak je to matematicky správné a od základu obecně řešené překladačem Delphi, což je poměrně široce a celosvětově používaný programovací jazyk. Obecně jsou v počítačích reálná čísla řešená vždy jen přibližně, což popisuje a vysvětluje článek v odkazu níže. Toto "přibližné" řešení v počítačích sice není dokonalé, ale přesto nejdokonalejší použitelné, jaké se zatím podařilo těm nejlepším počítačovým vědcům vymyslet.

Nicméně někteří inspektoři ZKI trvají na formálním přesném dodržení předpisů pro KN, které předepisují zaokrouhlování nahoru, bez ohledu na tato celosvětově používaná řešení pro práci s reálnými čísly v počítačích.

Pomiňme tedy, že souřadnice vznikly zaokrouhlením na centimetry a tedy trvání na tom, aby průměr dvou souřadnic 78,74 a 78,75 vypsaných na cm byl při zaokrouhlení nahoru 78,75 a ne 78,74, je opravdu naprostý a čirý formalismus, protože už tyto souřadnice vznikly zaokrouhlením a tedy nehrozí žádné zavlečení systematické chyby.

GEUS totiž opravdu občas opravdu v takové situaci zaokrouhlil dolů, protože pro něj průměr takových souřadnic vyšel 78,74499999999999, tedy nejbližší hodnota byla 78,74.

Viz také odkazy http://vtm.e15.cz/proc-pocitacum-delaji-problemy-desetinna-cisla a http://cs.wikipedia.org/wiki/Pohybliv%C3%A1_%C5%99%C3%A1dov%C3%A1_%C4%8D%C3%A1rka, kde je popsán způsob, jak počítač zpracovává desetinná čísla. GEUS tedy nyní vypíše hodnotu zaokrouhlenou "nahoru" a ne na "nejbližší hodnotu", což není z hlediska "počítačové matematiky" správně, nicméně se to formálně přesně drží předpisů pro KN.

Obecně o reálných číslech v počítači

Následující popis platí obecně pro všechny typy počítačů, programovacích jazyků, operačních systémů atd.

Reálná čísla jsou v počítači ukládaná vždy přibližně. To znamená, že pokud zadáte textově například číslo 731656,54, uloží se ve skutečnosti "binární" hodnota, ta může mít hodnotu třeba 731656,539999999. Pokud takovou hodnotu pak zpět rovnou převedete na text, zobrazí se zase správně ..,54. To znamená, že již při pouhém uložení reálného čísla dochází k chybě ze zaokrouhlení. Tato chyba se pak samozřejmě přenáší dál do výpočtů, které z ní vycházejí.

Z praktického hlediska by s tím neměl být problém, ve skutečnosti záleží na tzv. "platných cifrách", tedy skutečné přesnosti výpočtu. V zeměměřické praxi záleží maximálně na setinách milimetru. Například v programu GEUS většina výpočtů probíhá s přesností 15 až 16 platných cifer. To je u souřadnice X v S-JTSK přesnost na miliontiny milimetrů, což je daleko za hranicí platných cifer samotného výpočtu (u souřadnice X zadané na cm je to 9 platných cifer)., tyto čísla "na konci" jsou tedy ve skutečnosti již úplně náhodná. Pokud se stejný výpočet provede v jiném systému s jinou přesností reálných čísel (např. GEUS pod DOS měl přesnost 11-12 cifer nebo jiný geodetický program může používat i přesnost 19-20 cifer), budou náhodná čísla na konci jiná.

Tedy požadovaná přesnost je pokaždé dodržena, ale z hlediska náhodných čísel na konci čísla, může dojít k rozdílu při jejich zaokrouhlení. Pokud je totiž mezi dvěma čísla rozdíl byť třeba jen dvě miliontiny mm, může dojít k tomu, že právě takový rozdíl způsobí, že se jedno číslo zaokrouhlí nahoru a druhé dolů.

To je důvod proč není možné zajistit, aby stejný výpočet vycházející ze stejných vstupních hodnot, dal na každém výpočetním systému stejné výsledky, ty se vždy mohou lišit na posledním místě, na které se zaokrouhluje. Pokud se tedy výpočet výměry zaokrouhluje na celé metry čtvereční, může se výměra vypočtená v různých systémech lišit právě o 1 m2. To samé platí i o souřadnicích zaokrouhlovaných na cm - mohou se z různých programů lišit právě o ten jeden cm, což z hlediska požadované přesnosti souřadnic v KN nemá žádný praktický význam.

Problém to může činit pouze v případě přehnaně formálního přístupu ke KN, například když někteří úředníci KÚ považují takový rozdíl v souřadnicích nebo výměrách za chybu a důvod k vrácení GP.

Z výše uvedeného tedy vyplývá, že se nejedná o chybu, ale základní vlastnost zpracování reálných čísel na počítači. Viz také:

http://vtm.e15.cz/proc-pocitacum-delaji-problemy-desetinna-cisla

http://cs.wikipedia.org/wiki/Pohybliv%C3%A1_%C5%99%C3%A1dov%C3%A1_%C4%8D%C3%A1rka

Problém dvojího zaokrouhlení

Velmi často se setkáváme s tím, že problém dvojího zaokrouhlení je programu GEUS vyčítán jako chyba. O co jde?

Počítač spočte výměru jako reálné číslo na tolik cifer, kolik je dáno použitým způsobem uložení reálného čísla v binárním tvaru (viz výše). Toto číslo je zapotřebí zobrazit převedením na text. Již při tomto zobrazení tedy dojde k zaokrouhlení bez ohledu na to, na kolik desetinných míst je hodnota výměry vypsána. Například hodnota 751.4987897892387999 je vypsána jako 751.4988.

Tato hodnota bývá přepsána do výpočtu výměr na jedno desetinné místo, tedy jako 751.5.

Pokud je však tato hodnota znovu zaokrouhlena na sudou, je výsledná zapsaná výměra 752, tedy hodnota podle přísně aplikovaných pravidel vyrovnávacího počtu méně pravděpodobná, než hodnota 751. Podrobně je problém rozebrán v záznamu z naší technické podpory FAQ: Dotaz na způsob zaokrouhlování výměr.

Nejedná se tedy o chybu nebo nedokonalost programu GEUS, ale obecný problém, který vzniká příliš formálním pojetím KN ze strany některých úředníků.

Přestože zvýšení počtu zobrazených desetinných míst tento problém neřeší, zavedli jsem do programu možnost si nastavit počet desetinných míst u výpisu výměry nastavit dle uvážení uživatele, viz Výpočty. Pro jistotu je duplicitně zobrazena i výsledná výměra zaokrouhlená rovnou na celé metry čtvereční.