Pátek 21. února 2020, svátek má Lenka
  • schránka
  • Přihlásit Můj účet
  • Pátek 21. února 2020 Lenka

Diskuse k článku

Přednáška: Můžeme počítačům věřit? Zaokrouhlováním kazí rovnice

Vypočítat soustavu lineárních rovnic není žádná věda. Přesto se v nich počítače dopouštějí chyb. Zaokrouhlováním vznikají nepřesnosti, které mohou mít na výsledek fatální vliv. Jak si počítače poradí s klasickou Gaussovou eliminací? A jak po nich kontrolujeme výsledky? Zjistit jste to mohli v přímém přenosu z přednášky doktora Tichého od 11:00, jejíž záznam připravujeme.

Upozornění

Litujeme, ale tato diskuse byla uzavřena a již do ní nelze vkládat nové příspěvky.
Děkujeme za pochopení.

Zobrazit příspěvky: Všechny podle vláken Všechny podle času

J66a18n 38S18t12i65f79t98e50r 5607439288473

Je to velmi zajimave. Jen kdyby pani doktorka Hanikova nedelala porad eeee. Jestli chce prednaset, at se nauci mluvit. Dr. Tichy je vynikajici.

0/0
21.11.2013 17:55

A21l98e54x98a85n41d55r 21K83o39s80t58k12a 5519186789686

Vše je pouze věcí programátora. Pokud definuje proměnnou, že má 20 desetinných míst, tak je má. Pokud jí definuje, jako že má mít za desetinnou čárkou 1000 čísel, tak je mít bude. Nedělejte z nedostatečné představivosti programátora chybu počítače.

+1/−5
13.11.2013 8:18

P12a37v78e74l 79K29r49e46j54č67í19ř 2882441603256

O jakém programovacím jazyce to mluvíte?

+2/0
13.11.2013 10:43

J48a80n 51M50a93j30e16r 9923229188811

Většina programovacích jazyků má typy s plouvoucí čárkou pevně dané. Programování této aritmetiky se zrovna moc nenosí, vynalézáte totiž znova kolo. :-)

0/0
13.11.2013 13:14

V78l57a58d98i23s71l30a80v 58A16d48a71m40e79c 2155628411728

Tady asi podle většiny lidí se programuje, vše jen na základních pár typů proměných, které jsou vhodné tak pro skladové hospodářství. Ale oni počítače vznikly pro to, aby se tím řešili právě obrovská čísla.

+1/−3
13.11.2013 15:43

P45a31v49e77l 64K20r31e10j67č83í47ř 2952431653666

Nejste vy nějaký manager? Ta moudra, co z vás padají, by tomu odpovídala :-)

+2/0
13.11.2013 16:32

V97l50a91d87i55s54l47a68v 63A12d19a10m19e20c 2695878671738

A co padá z Vás?

0/−1
13.11.2013 18:47

P29a76v85e42l 11K91r47e77j22č14í45ř 2422611723816

Nevím, co padá ze mě, ale jste to vy, kdo tady okázale ignoruje výsledky jednoho vědeckého oboru nazývaného "numerická matematika".

+1/0
14.11.2013 23:44

V14l42a39d23i74s84l28a97v 62A84d75a54m19e21c 2895968951798

Nevím jaký problém řešíte vy, ale já řeším jediné. A to že na počítači spočítám například toto: 12345678901345678901345678901234567890*11111222233333444445555566666777778888899999/134567890=na 100číslic.

0/0
16.11.2013 12:44

P31a23v88e80l 65K48r98e49j77č41í42ř 2322301493466

Článek byl ale o řešení soustav lineárních rovnic. Takže řešíme soustavy lineárních rovnic. Co tady řešíte vy, je celkem podružné.

0/0
17.11.2013 0:07

V27l14a77d40i74s91l87a11v 78A32d56a35m46e37c 2655328171498

No a? Běžné lineární rovnice se počítají tužkou na papíře.

0/0
17.11.2013 0:49

P61a40v58e92l 33K76r89e24j35č17í85ř 2642391643356

Jinak ještě k jedné vaší poznámce dole. Nevím, kde se jak zarytě držím integeru. Asi si mě s někým pletete. Naopak, co se tady v celé této diskusi snažím říct je to, že všechny úlohy související s maticemi se dají řešit v doublech, bez potřeby definovat vlastní datové typy a aritmetické operace nad nima. Jen je potřeba zvolit jiný algoritmus než je Gaussova eliminace. Tak asi tak ...

+1/0
14.11.2013 23:56

R18u91d17o21l65f 31D86o42v22i19č57í19n 1239616215212

«Arithmetic without limitations»

http://GMPlib.org/

0/0
14.11.2013 4:45

P19a34v82e67l 19K86r34e80j11č50í59ř 2662801243236

Dobře, vy jste mi to díval jako odkaz i dole. Já jsem nepochyboval o tom, že něco takového existuje, já chtěl vědět, jestli to zná pan Adamec, a druhá věc je, jak je to výkonné. Samozřejmě, pokud chcete počítat číslo pí na 10000 míst, tak si pár minut počkáte a máte to. O nic nejde. Ale pokud musíte řešit rychle velké matice, tak tohle opravdu není cesta, nezlobte se na mě.

0/0
14.11.2013 23:29

R92u90d98o38l45f 58D20o51v27i73č96í46n 1829746665752

Keď chcete vedieť, ako je to výkonné, nič Vám nebráni to vyskúšať...

0/0
14.11.2013 23:43

P61a24v94e76l 39K56r95e26j30č66í35ř 2202241703306

Proč bych to dělal? Řešení soustavy lineárních rovnic jsem programoval kdysi dávno. Taky jsem zjistil, že Gaussova metoda se na to nehodí, ale naštěstí v té době už existovaly metody, které řešily soustavy lineárních rovnic beze ztrát. Jednu z nich jsem naprogramoval a výsledek byl více než uspokojivý. Žádné knihovny na neomezenou přesnost jsem nepotřeboval.

Dnes už bych se na programování této úlohy vykašlal úplně, neb existuje program R, který to řeší nejen s uspokojivou přesností, ale taky s rychlostí pro běžného programátora zcela nedosažitelnou. Takže nebudu s prominutím vynalézat kolo.

0/0
14.11.2013 23:48

K61a96r95e64l 27P24o32d74h62o97r82s64k93y 3215503502165

Pokud mate vypocet ktery je nachylny na rostouci chybu pak je uplne jedno na kolik desetinnych mist to mate pokud to zvolite pevne. I kdyz zvolite 1000 tak to jednou pretece, to by bylo jen odlozeni problemu na pozdeji.

Na druhou stranu, pokud mate promenny pocet des. mist, tak vam zas nebude za chvili stacit pamet. Opravdovym resenim je zmenit zpusob vypoctu aby k tomu proste nedochazelo, pak uz si vetsinou vystacite s beznymi typy.

+2/0
14.11.2013 10:24

H43y73n96e52k 84T47r82o46j94a81n 1171771323989

aaaaaa já to věděl, že to je ten pan Tichý, u kterého jsem dělal numerickou analýzu... :-) bohužel jsem nestihl přímý přenos, tak jsem celý zbytek dne čekal na záznam ;-D

0/0
12.11.2013 22:15

J56a53k45u49b 86K19r49e61j39č48í42k 8773564902124

Nazdárek lidičky :-)

Idálně při postupu a počitání, dílči výsledky nezaokouhlovat vůbec! Každé zaokouhlení dílčího výsledku, mění celkový výsledek příkladu a čím více se zaokouhluje tím, více se může konečný výsledek lišit! Bohužel počítače neumožňují počítání na nekonečno desetiných míst, což by bylo ideálně, ale pouze do určitého počtu desetiných míst. S každým zakrouhlemín a dalším vzniká větší a větší chyba. Je si nutné uvědomit, že když nikdo vymyslí počitání na dejme tomu 1000 desetiných míst, tak při násobení jich samotných mezi sebou potřebuje už 2000 a poté zakourhlit na 1000, představa hezká z výpočetního hlediska nereálná. Bohužel se musíme smířit s tím, že nikdy nebudeme schopni naprosto přesně některé jevi spočítat.

S pozdravem!

+1/0
12.11.2013 19:47

M15a79r26t29i76n 50S72l76e76z59á22č28e32k 6419253958395

Když už, tak se počítají "jevy". A za druhé, když násobím 2 desetinná čísla, z nichž první má n desetinných míst a druhé má m desetinných míst, dostanu ve výsledku číslo s n * m des. místy, nikoliv s n+m... :-)

+1/0
12.11.2013 21:10

M98a56r17t49i75n 11B63a95l93á22ž 3670130515682

Veľmi rád by som videl dôkaz toho posledného tvrdenia... :-)

+2/0
12.11.2013 22:06

J36a54k92u76b 37K61r13e32j84č83í75k 8673884732904

Vážený pane Martine Slezáček,

pletete si násobení s řády!! Ano máte n * m, z niž má každé číslo n a m desetiných míst, ale počet desetiných míst je jejich součet tedy n + m :-). Zde můžeme aplikovat jednoduchou věc, násobíme-li dvě stejná čísla, exponenty se nám sčítají. Tedy mi násobíme dvě desetiná čísla, ale počet desetiných míst se nám chová stejně jako exponenty. Abyste se mnou nehádal tak 0,002 * 002 je 0,000 004 a ne 0,000 000 004 jak vi tvrdíte!!

S pozdravem!

0/0
12.11.2013 23:20

P27a29v23e52l 12K78r98e82j61č39í78ř 2612321823376

Máte sice pravdu, ale ta gramatika je fakt příšerná :-)

+1/0
13.11.2013 10:47

M14a73r34t89i84n 72S39l63e87z43á35č75e70k 6339733178215

Ano, máte pravdu, napsal jsem blbost.

0/0
13.11.2013 20:21
Foto

K88a14r75e91l 53T60o49m88á37š71e40k 7474579107799

Přesnost výpočtu je dána použitým programem. Špatný program dává špatný výsledek. Za vše mohou programátoři, kteří si usnadňují práci

+3/−9
12.11.2013 13:08

M49a57r79t12i43n 98S88l27e87z65á35č18e75k 6129373588875

Je vidět, že tomu opravdu nerozumíte.

+12/−2
12.11.2013 13:24

J31a66r72o28s16l45a59v 22T84a10c57h11o97v25s39k43y 2552360234530

Tak ho nechte. Kazdy nemusi vedet o cem je rec.

+1/−1
12.11.2013 13:26

I71g72o22r 10F85o87s 9362273514721

Taky nevím o čem je řeč, ale vím, že je na programátorovi jak nakládá se zaokrouhlováním a že si může sám vybrat zda zaokrouhlovat nahoru nebo dolu a na kolik desetinných míst se to má počítat než cifru zaokrouhlí k danému limitu v desetinách, setinách či tisícinách atd ....

Takže spíše má Karel pravdu.

+2/−4
12.11.2013 14:10

D85a98v22i52d 25Š90a37f61r42á22n29e88k 5587974407263

Způsob zaokrouhlování je dán platformou, programátor ho už většinou nemění.

Ohledně přesnosti je to tak, že máte tři základní typy - float, double a long double, přičemž ten poslední se téměř nepoužívá. Víc si zvolit nemůžete.

Pokud používáte finanční počty, tak některé procesory nabízí vámi popisované vlastnosti, ale jen u určitých typů operací (sčítání, odčítání), navíc relativně pomalu.

0/−4
12.11.2013 14:50

V88l49a95d74i30s75l23a15v 26A58d54a71m41e27c 2185418701218

Základní zaokrouhlování je dáno platformou a je používáno v běžných programech. Ale pořád si programátor může napsat program, kde bude zaokrouhlovat třeba 1000 míst. Je to jenom on naťukání toho kódu.

+2/0
12.11.2013 15:11

M23a57r87t55i10n 48S16l92e92z11á33č81e24k 6249683698985

To ale není pravda, záleží na použitém datovém typu pro uložení desetinných čísel.

0/−1
12.11.2013 17:07

P86a31v76e51l 20K84r17e35j66č45í64ř 2302251133866

No on asi myslí definovat si vlastní datový typ pro uložení čísla s libovolnou přesností. Něco jako má Matematika od Wolframa. Akorát že pro běžné účely to není zrovna moc praktické.

+1/0
12.11.2013 17:16

G28a46b83r81i37e43l 48H57o67r37t81e22n 9801439433404

A jste si jistý, že myslí?:-/

Tvrdit, že "programátor jen naťuká kód" je asi stejně hloupé, jako že "chirurg jen tak šmidlá skalpelem".

+1/−1
12.11.2013 19:51

V12l70a28d31i20s92l69a13v 71A80d29a42m12e50c 2715778971468

Takže základy výpočetní techniky:

Napřiklad 16-ti bitový počítač ja schopen v registrech pracovat jen s čísly 0-65535. Nic jiného nedokáže sečíst ani odečíst. Aby mohl pracovat s většími čísly, tak se musí používat dílčí výpočty s odkládáním do paměti. Protože toto je docela složité tak překladače jazyků mají definované typy a sami pak řeší jak třeba sečíst 10+10 milionů. Obecně není problém naprogramovat program kde např. 22/7 vyleze výsledek s nekonečným počtem desených míst. Toto se dělalo už v dobách kdy počítače byli ještě s tranzistorama. A protože občas někdo potřebuje takové výpočty tak se dají do překladačů programátorských jazyků koupi matematické knihovny, které v sobě mají možnost definovat jakékoliv číslo.

+2/0
12.11.2013 20:39

G63a77b39r85i41e64l 47H72o18r24t38e72n 9351919323144

A proč mi to píšete? Tohle jsem věděl před třiceti a učil před dvaceti lety... Ohradil jsem se jen proti vaší hloupé formulaci.

0/0
12.11.2013 20:54

V61l58a95d81i76s34l76a79v 19A56d23a15m55e26c 2645138241448

Celková reakce na několik předchozích příspěvků. Ono opravdu platí, že občas narvete z klávesnice nějaký kód a pryč s tím.

0/0
12.11.2013 21:07

G78a65b10r25i39e62l 82H46o83r54t73e98n 9541369203964

Chápete vůbec, o čem píšete? Vy nemůžete vzít program a kvůli jeho zpřesnění mu "pod nohy" vrazil matematickou knihovnu - v lepším případě vám to v takovém případě jen přestane fungoval...

0/−1
12.11.2013 22:01

V88l23a81d25i68s38l10a59v 76A83d50a41m27e91c 2585348571908

Na rozdíl od Vás jo. Obvykle se dělá nejdříve analýza, dat jaká se budou při výpočtu používat, promyslí se jaké datové typoy se použijí, jaké jsou dostupné a pod. A pak se teprve tvoří program. Jsem asi tak o několik kroků vpředu. To ví snad každý programátorský začátečník, že do hotového programu se nějak moc nedá zasahovat.

+1/0
12.11.2013 23:46

P22a65v14e45l 29K43r97e39j50č31í16ř 2202111863946

Vy jste možná o několik kroků vpředu, ale jinak plácáte naprosté nesmysly. Pokud se pletu, tak mi to prosím dokažte třeba tím, že mi napište, jakou matematickou knihovnu nalinkujete k programu psaném v C++ a jakým typem budete reprezentovat číslo s přesností na 120 platných číslic. Předem děkuji za odpověď.

0/0
13.11.2013 11:49

V57l37a51d31i97s74l50a65v 50A48d54a21m51e29c 2915948481508

Pokud si nevíte rady jak programovat na libovolný počet platných číslic, tak si nevíte rady. Ně je to úplně jedno, já vás to učit nebudu.

+2/0
13.11.2013 14:01

P62a24v54e92l 52K92r47e27j38č87í78ř 2522651813636

Takže víte velký kulový a jenom plkáte. Aby bylo mezi námi jasno Rv

0/−1
13.11.2013 15:23

V46l68a63d17i13s59l25a71v 10A62d96a73m31e55c 2205588351668

Zato vy tady říkáte samé vědecké perly. To jenom aby bylo opravdu jasno..

+1/0
13.11.2013 15:37

P68a48v72e50l 64K84r57e82j80č46í62ř 2852961823716

Jaké například?

0/0
13.11.2013 15:38

V57l15a59d37i87s45l90a47v 51A53d39a55m29e26c 2705288381528

To jak se nebetyčně držíte integeru a tečka. Uvědomte že ten integer někdo před Vámi naprogramoval, aby takový jako Vy mohli bez přemýšlení sázet proměnné do programu. Ten integer je jen program pro převod desítkové soustavy např. pro 4 šesnáctibitové registry. A je součástí překladače. Víte co je to Asembler?

0/0
13.11.2013 18:46

J85o96s43e90f 94N14o78v58á29k 2782782195234

S odpuštěním, nechcete už nechat těch blbostí?

Integer nikdo nenaprogramoval, integer je jedním z nativních datových typů (alespoň na 99.99999% existujících počítačů), se kterým pracuje přímo hardware.

Rozhodně to není žádný program a už vůbec nic nemá společného s desítkovou soustavou a ani s 4 16bitovými registry ani s překladačem.

Navíc, to, že chcete cpát integer do 4 šestnáctibitových registrů, což  se v žádné architektuře (majoritní x86, x86-64 a Arm nevyjímaje - žádná z nich čtyři 16bitové registry se kterými by šlo pracovat jako s jedním číslem nemá) co znám nikdy nedělá, jen dokazuje, že Assembler (btw. píše se se dvěma ss) jste viděl tak max z rychlíku, tak se s ním prosím neohánějte.

A Vaše myšlenka, že jenom zvolím jinou knihovnu a zbavím se zaokrouhlovacích chyb je s odpuštěním totální blbina. Existují samozřejmě knihovny s neomezenou přesností matematiky, ale 1) umí vyjádřit pouze racionální čísla, což je ve vědeckých výpočtech nepoužitelné, 2) jsou pomalé, takže jsou ve vědeckých výpočtech nepoužitelné.

0/0
13.11.2013 20:45

V65l24a11d73i50s59l31a47v 30A77d10a30m95e34c 2395388661198

To že jsem assembler napsal s jedním s jedním s, znamení že jsem ho viděl z rychlíku? Co mi ješte povíte?  To že vymýšlíte blbosti, které jsem neřekl Vám nepomůže  viz "žádná z nich čtyři 16bitové registry se kterými by šlo pracovat jako s jedním číslem nemá!"  Já vím jak fungují registry a předpokládám, že když někdo se do té dizkuze zapojí tak nenapíše takovou blbost jako vy.

Končím na toto téma, když jsem programoval co není žádný program, tak on to asi bude kus železa. A pak stejně na internetových dizkuzích není vítězů.

0/0
13.11.2013 21:19

J27o33s43e21f 85N37o65v19á54k 2572382255224

To, že jste tvrdil, že integer se ukládá do čtyř šestnáctibitových registrů (když všechny dnes užívané počítače užívané k výpočtům rovnic ho ukládají do jednoho 32 či 64bitového) sice můžete popírat, ale to je tak všechno, co s tím můžete dělat. Každý si to o příspěvek výš přečíst může. Má interpretace vašeho výroku se jen snažila skloubit to, co je ve skutečnosti integer

http://en.wikipedia.org/wiki/Integer

s tím, že ho chcete ukládat do čtyř šestnáctibitových registrů.

Když se však chcete dál držet takových blbostí, jako že integer je program pro převod desítkové soustavy, tak je opravdu další diskuse zbytečná.

0/0
13.11.2013 22:10

M67a42r40t73i40n 27N52e30r68m17u14t 9647287428709

ha, vy se hádáte o formality a konkrétní detaily, ale pan Adamec má v principu pravdu.  Pokud mi nestačí long nebo double rozsahem či přesností, (a nikdo to za mě neudělal) musím si pomoct sám na nižší úrovni. Potom si můžete násobit třeba ty 120 místná čísla mezi sebou

0/0
14.11.2013 18:14

P98a79v49e30l 62K68r61e84j78č54í38ř 2732171403146

Ale za jakou cenu? Ano, můžete to udělat, pokud máte dost času ...

0/0
14.11.2013 23:24

M72a18r15t64i42n 86N65e60r97m20u23t 9887587268389

ano, to jistě

0/0
15.11.2013 9:01

Premium

Trend u rozvodů: čím dál více dětí končí ve střídavé péči

Neustálé pendlování mezi dvěma domácnostmi dětem škodí, varují odborníci. Ve střídavé péči je v Česku stále více dětí....

Premium

Jak se falšuje maso. Šunku bez „éček“ by nikdo nekoupil, říká odborník

Podvody s potravinami jsou staré jako lidstvo samo. Jen se postupně změnily metody. „Za záměnu hovězího masa za koňské...

Premium

Karlův most je jen most, stěžují si turisté. Kritika nešetří ani další památky

Do Česka loni přijel rekordní počet turistů. Památky si u nich leckdy vysloužily i bizarní recenze na internetu,...

Prodáváte rasistické zákusky, tvrdí zákazníci. Tradiční, brání se výrobce

Čokoládová pusinka, zákusek populární hlavně během německých únorových karnevalů, narazila na odpor kvůli svému...

Sex máme se ženou několikrát denně, mobil do ložnice nesmí, říká Bieber

Justin Bieber (25) prozradil svůj recept na úspěšné manželství. Důležité prý je, najít k sobě toho pravého člověka....

Všichni jste krásní, říká modelka. Předávání cen moderovala zcela nahá

Modelka Ibi Støvingová (45), která moderuje dánskou verzi americké show Naked Attraction, vyvolala pozdvižení...

Výrobce největšího mobilního propadáku definitivně zavírá krám

Po třech letech od uvedení prvního neúspěšného pokusu prorazit na smartphonový trh značka Essential od spoluzakladatele...

Nenáviděla jsem se za svá prsa, říká Fialová. Poprsí si nechala zmenšit

Herečka Kateřina Marie Fialová (22), známá ze seriálu Ordinace v růžové zahradě či show Tvoje tvář má známý hlas, šla...