Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 28. 09. 2010 23:11

pursulus
Příspěvky: 55
Škola: Vysoká škola dopravní Aš–Medzilaborce.
Pozice: DrVěd. Učím lesní zvířata moudrosti matematiky.
Reputace:   
 

Algoritmus vyvození hodnoty funkce (sinus, odmocnina) strojem.

Základy programování naučil jsem se nikoliv používáním některého běžného jazyka, jako je Pascal nebo C, ale způsobem méně obvyklým, totiž programováním v jazyce TeX pro sazbu a v jazyce znakového úpravce Aurora (textový editor běžící pod DOSem s vlastním makro-jazykem obdobně jako je tomu u Emacsu; jazyk ten podobný má býti Pascalu).

Protože Auroru považuji za nejlepšího kdy vytvořeného znakového úpravce (umí i binární a hexa kód and much more), snad kromě vzpomenutého Emacse (který trpí ale nevýhodou značné složitosti a tím nevstřícnosti), používám ji dodnes; makra, co si v ní píšu, mi umožňují dělati s textem hotové zázraky, aniž bych musil sahati po odpudivém Wordu či přívětivějším Writeru a jejich Visual Basicu. TeX či Aurora-jazyk znamenají pro mne jistotu prostředí jednou dotvořeného, které se nebude proměňovati, kteréhož odstrašujícím opakem je mi uvedený V-Basic.

Aurora však, stejně jako TeX, nemá vestavěny téměř žádné matematické funkce, z důvodu úzkého použití těchto prostředí (zápis textu a sazba); Aurora nad to neumí ani pracovati s reálnými čísly -- to se musí obcházeti programátorsky. Zná plus, minus, krát, lomeno a zbytek, to vše pouze v oboru celých čísel.

Za použití maker jiného Auroranadšence jsem si v Auroře naprogramoval počítačku, která umí počítati i v oboru reálných čísel. Naučiti ji navíc umocňovati a faktoriály bylo snadné, to je odvozeno od násobení. Funkci sinus, logaritmickou (a s ní souvisící odmocňování) a podobné jsem však musil vestavěti pouze výběrově přes ruční zadání neproměnných do kódu (log dvou, tří, sinus 5, 10, 15 atd. stupňů). Neznám totiž způsob, jakým bych provedl výpočet těchto fukcí, neboť jak zřejmo ony nejsou do jazyka Aurory implementovány.

Stojím před touto záhadou: Jak vlastně "počítá" nějaký programovací jazyk implementovanou mu funkci, třeba zmíněný sinus či logaritmus (odmocninu)? Kdybych tento algoritmus znal, možná bych jej mohl použíti i v mé oblíbené Auroře a její počítačce; i když spíše, jak tuším, věc nebude tak jednoduchá...

Ještě jinými slovy: Nejde mi do hlavy, jak stroj počítá funkci, když k výpočtu potřebuje tu samou funkci... Takhle to vidím.

Předesílám, že moje znalosti matematiky končí taktak střední školou. Ať tak či tak, zkusíte-li někdo poodhaliti mi tuto záhadu (ač třeba ne zevrubně), budu velice rád.

Offline

  • (téma jako vyřešené označil(a) pursulus)

#2 28. 09. 2010 23:28

FliegenderZirkus
Příspěvky: 544
Škola: RWTH Aachen
Reputace:   25 
 

Re: Algoritmus vyvození hodnoty funkce (sinus, odmocnina) strojem.

Rád si také počkám na fundovanější odpověď, ale myslím, že na to základní už jsi si odpověděl sám - stroj musí výpočet neznámé funkce převést na provádění operací, které zvládá, tj. sčítání (a odvozené násobení). Toho lze docílit např. rozvinutím hledané funkce v nekonečnou řadu (ze které je ovšem sečteno jen konečně mnoho členů, podle požadované přesnosti). Ten rozvoj (návod co sčítat s čím) asi bude uložený v paměti. Takhle snad pracuje kalkulačka (alespoň nám to říkal matikář na střední) a počítač by to jistě zvládl taky. Odborníci jistě doplní :-)

Offline

 

#3 29. 09. 2010 16:28 — Editoval hradecek (29. 09. 2010 16:28)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: Algoritmus vyvození hodnoty funkce (sinus, odmocnina) strojem.

↑ pursulus:
Možno ti pomôže ak si prečítaš toto en.wikipedia.org alebo aj tu je niečo(nečítal som to celé) homeschoolmath.net


Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

#4 29. 09. 2010 23:10 — Editoval pursulus (02. 10. 2010 19:09)

pursulus
Příspěvky: 55
Škola: Vysoká škola dopravní Aš–Medzilaborce.
Pozice: DrVěd. Učím lesní zvířata moudrosti matematiky.
Reputace:   
 

Re: Algoritmus vyvození hodnoty funkce (sinus, odmocnina) strojem.

: [FliegenderZirkus] K nám dnes přijel Berousek. Ten se vyslovuje mnohem líp než Flí... no, to vzdávám! A děkuju za názor! Je to taky možná cesta... (Oba se můžeme více poučiti na místech, které uvádí uživatel hradecek.)

: [hradecek] Z uvedených odkazů je mi už jasné, jak dělá stroj sinus a je to i návodné pro jiné podobné případy (odmocňování a podobně). Děkuju, a zdar!

Dodatek: Vlastní pílí nalezl jsem další algoritmus. Když to shrnu, tak dosud se lze dobře poučiti o jednotlivých algoritmech zde:

How does calculator find sine of an angle?. (Odkaz od uživatele hradecek; jeho druhý odkaz, na Wikipedii, je méně podstatný.)

Methods of computing square roots. Aneb Wikipedia se svými klady a zápory.

nth root algorithm. Opět Wikipedia.

The rational mean. (Square, cube, ... root. Popisuje nový způsob, pracuje i s komplexními čísly.)

Offline

 

#5 01. 10. 2010 21:10

xxsawer
Příspěvky: 196
Reputace:   
 

Re: Algoritmus vyvození hodnoty funkce (sinus, odmocnina) strojem.

↑ pursulus:
Po delší době sem zase zavítal sem na forum :)

K tomu co si psal... Taky sem se vzdycky divil jak ta kalkulacka vlastne pocita ty odmocniny a veškerý další funkce a jak to vlastně dělali v době kdy kalkulačka ještě nebyla? Kdo sestavil ty matematický tabulky atd atd...

Obecně se dá libovolná funkce aproximovat Lagrangeovym polynomem nebo tuším i Taylorovým polynomem. Ty pak počítáš hodnotu toho polynomu v nějakym bodě a výsledek se postupně zpřesňuje.
Na goniometrický funkce tuším existuje i jiný algoritmus (možná to je jeden z těch odkazů, který si uvedl). Kdysi sem programoval sinus v asembleru nějakýho mikrokontroléru, tekže vím, že to neni něco nezvladatelnýho.

Jinak si ještě narazil na to jak to je implementovaný v jiných jazykách... Je to dost jednoduše protože goniometrický funkce a některý další jako odmocnina atd jsou přímo instrukce v assembleru, takže pro ně nemusí tvůrci knihoven vytvářet žádný další funkce. Na úrovni hardwaru je to implementovaný zase pomocí nějakýho algoritmu, ale konkrétně jak už netuším...

Offline

 

#6 02. 10. 2010 19:24

pursulus
Příspěvky: 55
Škola: Vysoká škola dopravní Aš–Medzilaborce.
Pozice: DrVěd. Učím lesní zvířata moudrosti matematiky.
Reputace:   
 

Re: Algoritmus vyvození hodnoty funkce (sinus, odmocnina) strojem.

: [xxsaver] Děkuju ti za poznámku k námětu, který teď uzavírám, neboť podstata věci je zřejmá.

Pouze pro další čtenáře-neználky mi podobné poznamenávám, že odvětví matematiky zabývající se vytvářením těchto aolgoritmů se nazývá "výpočetní, nebo numerické metody". E-odkazy k námětu jsou shrnuty v mém předchozím příspěvku zde.

Kdyby měl někdo znalý někdy k tomu ještě co říci, nechť toto diskusní vlákno znovu otevře, aby bylo pokud možno všechno pohromadě. -- pursulus.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson