Matematický výpočet

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Matematický výpočet

Příspěvek od gilhad » 03 úno 2021, 11:59

Ovsem pozor, funkce map nefunguje tak uplne "spravne" jak by o dni clovek cekal, autori to kdysi zvorali a ted uz to opravovat nebudou, protoze by se to pak chovalo spravne a skripty, ktere spolehaji na spatne chovani (jsou vubec nejake, kde by na tom zalezelo ) by se najednou chovaly jinak - to je oficialni vyjadreni autoru.

Stejne jako ta nesmyslna dira na UNO pinech vznikla omylem, kdyz byli ve chvatu a museli vymyslet nazev Arduino - opet to nasledne menit nebudou, protoze uz to tak jednou je a navic to Arduinu dodava lidsky rozmer, protoze ma chybu - opet oficialni vyjadreni autoru

Detailni rozbor map treba tady:

http://robodoupe.cz/2020/arduino-potouc ... unkce-map/

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Matematický výpočet

Příspěvek od pavel1tu » 03 úno 2021, 19:34

díky za ten opravený map
to mi vytrhlo trn z paty
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

zajicjarda
Příspěvky: 39
Registrován: 31 srp 2017, 22:29
Reputation: 0

Re: Matematický výpočet

Příspěvek od zajicjarda » 03 úno 2021, 22:04

Já bych úplně nesouhlasil s tvrzením, že funkce MAP nefunguje tak úplně správně. Z matematického hlediska funguje naprosto správně.
příklad "vystup = map( vstup, 1, 10, 1, 5);"

1--- 1
2--- 1,090909091
3--- 1,636363636
4--- 2,181818182
5--- 2,727272727
6--- 3,272727273
7--- 3,818181818
8--- 4,363636364
9--- 4,909090909
10-- 5

Toto jsou zhruba výsledky této funkce (ne 100% přesné, na to bych potřeboval lepší vzdělání), program je však vypisuje bez desetinných míst.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Matematický výpočet

Příspěvek od KamilV » 03 úno 2021, 22:36

No jo, jenže vrací long, takže k uvedeným výsledkům se člověk nikdy nedostane. A to je to, co je matoucí. Ačkoliv to v dokumentaci zmiňují, já jsem si toho také nikdy nevšiml, dokud na to gilhad neupozornil.
Ale je pravda, že jsem snad nikdy nepoužil variantu "z většího na menší".

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Matematický výpočet

Příspěvek od gilhad » 04 úno 2021, 13:50

Zajicjarda: map se chova podle zadani, dokonce to pocita dle uvedeneho vzorecku. Akorat to neni to, co by clovek ocekaval.
Samozrejme doslovne to sedi - mapuje krajni bodu na krajni body a body mezi tim "nejak" mezi to.

Problem je v tom, ze normalne by clovek ocekaval, ze to mapovani bude v ramci moznosti linearni a rovnomerne, co tady rozhodne neni. A dokumentace to ani neslibuje.

Kdyby mapovala karjni body na krajni body a hodnoty mezi tim na hodnoty mezitim (coz slibuje dokumentace), ale naprosto nahodne a napreskacku, tak by - z hlediska dokumentace - to bylo v poradku, ale z hlediska bezneho pouziti naprosta kravina.

Takovehle veci, ktere formalne splnuji zadani, ale zaroven fakticky delaji neco zcela jineho, nez pro co by je clovek normalne potrebovat pouzit jsou proste chybne na jine urovni, nez ciste formalisticke. Funkce, ktera dle dokumentace "precte radek vstupu a vrati retezec" a fakticky precte radek vstupu, zahodi ho a vrati vzdy stejny retezes "houby s octem" je sice formalne spravna, ale fakticky je spatne a k nicemu.

Funkce, ktera mapuje vstupni rozsah na vystupni a vstupni rozsah 0..100 namapuje na vystupni rozsah 0-1 tak, ze 100->1 a 0..99 -> 0 je dejme tomu "formalne spravna" ale jinak nepouzitelna - protoze pricetna funkce by to namapovala 0..50->0 a 51..100->1 a tohle je to, co by od toho clovek cekal, ze bude delat, aby mu usnadnila praci. Zvlaste, pokud mluvime v kontextu Arduina, ktere miri na zacatecniky, kteri maji problem vubec precist dokumentaci, natoz se vyznat v tom, jak jsou jednotlive funkce interne implementovany a jak se to odrazi na tom, co davaji za vysledky. Pak se vozit na slovickach, kdyz to intuitivne dava naproste kraviny je proste podraz na uzivatele. (zvlaste kdyz spravna implementace neni o moc slozitejsi nez oficialni a dela to, co by clovek od funkce jmenem map ocekaval - ze to namapuje nejak v ramci moznosti pricetne a rovnomerne.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů