Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 1. 5. 2018 08:05:11

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 91

Calc počítá chybně

Zdravím,
při výpočtu X z rovnice:

-X^4+2*X^3+R^2*X^2-X^2-2*R^2*X+R^2 = V^2*X^2

mi Maxima poskytla výsledek, který jsem zkopíroval do Calcu. Bohužel Calc poskytoval diametrálně odlišné výsledky. Po jednom odpoledni hledání (porovnávání části kódu) jsem zjistil že Calc interpretuje tuto sekvenci jinak (příklad):

= X-(-X^4+X)

CAS program Maxima upřednostňuje umocnění před mínusem, Calc upřednostňuje mínus. Lze to ověřit pokud dosadíme za X buď zápornou hodnotu, nebo kladnou.
Pro porovnání Wolfram Alpha výraz spočítá správně, stejně jako Maxima.
Teď, když už vím kde je chyba, dá se výpočet vhodně uzávorkovat (případně upravit). Zajímalo by mě zda i Excel počítá takto, pak je to z důvodu kompatibility, nebo jestli je to pouze chyba Calcu.

Offline

#2 1. 5. 2018 14:53:27

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,697

Re: Calc počítá chybně

Asi byste měl upřesnit jak jste úlohu do calcu a do maximy zadal.
     Je mi to dost povědomé. Výstup z Maximy a WolframuAlpha mají vyloučené "v". Zadání může být důležité z pohledu zadaných operací. Calc udělal generalizaci pro první řádek linerární rovnice[matice 2x2]. To se dá chápat také jako dva anulativní tvary respektive vytvořené separované proměnné "Z" a vytvořit matici o třech rovnicích upravených například derivací.
     Na problém je možné nahlížet i z pohledu kvadratických rovnic. V každém případě výraz s jednou neznámou by měl jít dosadit a otestovat obě strany rovnice z Calcu. Nevím jestli uvádíte konkrétní data, ale vůbec bych se nedivil když by kontrola dopadla pozitivně a oba výsledky jsou správné, jen určené k jiným účelům - dosazení do původní rovnice a určení "v" v obou případech.


     Proto je otázkou jak jste do calku zadával a jak jste zadával do Maximy. Výraz může sloužit pro vyjádření hodnoty matice stejně jako kořenů kvadratických rovnic.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 1. 5. 2018 15:22:49

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 91

Re: Calc počítá chybně

No prostě a jednoduše pokud do Maximy zadám -X^2 tak mi vyjde -X^2, Pokud zadám do Calcu -X^2 tak mi vyjde +X^2 a to je špatně (podle priority aritmetických operátorů se nejprve umocňuje).

Jinak Maximu jsem použil pouze pro symbolický výpočet čemu konkrétně se rovná X. Do Calcu jsem zadal pouze tento výsledek (obecný vzorec - ten je dobře), který po dosazení proměnných Maxima spočítá správně, ale Calc už ne, protože výraz obsahuje sudou mocninu, kde změní znaménko mínus na plus.

Offline

#4 1. 5. 2018 15:35:22

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 91

Re: Calc počítá chybně

No a aby Calc počítal správně musel jsem například místo -X^2 ručně změnit na -(X^2). Jinak samozřejmě vzorec jsem do Calcu nepřepisoval, ale použil jsem známé Ctrl+C a Ctrl+V, případně oblíbenou variantu s prostředním tlačítkem myši.

Offline

#5 1. 5. 2018 15:54:24

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 91

Re: Calc počítá chybně

Aha už vím na co narážíte. Protože je to rovnice 4 stupně má také 4 kořeny. První dva reálné a další komplexní. První nelze použít protože dává záporný výsledek, takže zbývá druhý. Ten jsem použil pouze pro kontrolu následujícího výpočtu, protože pro praktické použití je velmi složitý (dlouhý výraz plný odmocnin).

Proto do Calcu jsem postupoval jinak.
Vlastní výpočet jsem rozdělil do dvou částí. Nejprve jsem si vypočítal odhad pomocí taylora 2 stupně, tím dosáhnu přesnosti na 5 platných míst.
A v druhé části Newtonovou metodou zvýším přesnost na plný počet míst.
Výpočet je mnohem jednodušší, přehlednější a bez odmocnin.

Offline

#6 2. 5. 2018 08:25:57

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,697

Re: Calc počítá chybně

No hlavně jde o to, že Maxima nebo třeba SageMath a podobné programy jsou většinou určené pro počítačovou algebru - což Calc není. On něco málo umí ale jde spíš jen o elementární a lineární záležitosti.
     Něco by se našlo v matematických funkcích, maticích (spíš statistika) a něco v doplňcích. Ale Calc je spíš aritmetická záležitost. Takže já se celkem nedivím tomu, že zadání -x^2 = -x * -x tedy +x^2. Operace pro typickou lineární algebru je skalárem a celý člen je vždy mínus nikoliv tedy reprezentace aritmeticky. Tam se hodnoty nastavují operacemi při úpravách a jde tedy o lichý nebo sudý počet.
     Dokonce bych ani netvrdil že jde o případ řešení 4. stupně rovnic - obor čísel C. jenomže já vím, že Vaše zadání se výrazně liší od ostatních dotazů tak si netroufám podat návrh řešení. Já osobně se zabývám trošku něčím jiným ale doporučil bych toto OEIS - pokud to tedy náhodou neznáte - omlouvám se.


     Zase rád ze dozvím něco nového, takže když uvedete postup, nebo i námět algoritmu budu rád a může to zajímat i mnoho jiných lidí.
     Právě proto jsem se ptal jak to bylo zadáno


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 2. 5. 2018 08:27:17

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 791

Re: Calc počítá chybně

Pro jistotu jsem kontroloval ještě excel. Calc to už opravit nemůže (a Excel už také ne). Unární minus má z aritmetických operátorů nejvyšší prioritu (nad nimi jsou jen operátory pro odkazy (rozsah, průnik, sjednocení). Podobně zrádná je kombinace 3^2% znamená 3^(2%), procento má vyšší prioritu než mocnina. (Naštěstí jen málo lidí ví, že % je operátor a podobnou kombinaci nepoužijí.) Pokud nevíme, je dobré používat závorky. Raději víc.

ps. Calc počítá "správně", tj. podle specifikace. Správně ovšem není specifikace. Proč, to lze jen odhadovat, možná chybu udělali předchůdci (možná Lotus, ...), možná to bylo vynuceno možnostmi (složitostí a dobou zpracování) u prvních tabulkových výpočtů - intel 8080 a pár kilo paměti opravdu nedávalo moc prostoru a následníci chtěli zachovat kompatibilitu výpočtů se staršími verzemi.

Editoval lp. (2. 5. 2018 08:34:17)

Offline

#8 2. 5. 2018 20:20:06

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 91

Re: Calc počítá chybně

Algoritmus výpočtu jsem uvedl v pátém příspěvku.

Pro upřesnění v druhém kroku jsem použil Newtonovu metodu, která sama o sobě stačí pro výpočet jakkoli složité funkce. Já jsem však nechtěl použít několik cyklů, proto jsem se soustředil na co nejpřesnější prvopočáteční odhad.

Pro odhad jsem použil v prvém kroku Taylorův rozvoj druhého řádu, kde hledaná proměnná je v druhé mocnině, takže se dá řešit kvadratickou rovnicí (zde je použita jediná odmocnina v celém výpočtu). No a počátek Taylora jsem nezvolil v nule, ale použil jsem hodnotu R/(R+V), tím jsem dosáhl uvedené minimální přesnosti 5 platných míst. Tato počáteční hodnota samozřejmě platí pro mou uvedenou rovnici, pro jinou, bude jiná.

No a to je celé.

Offline

#9 2. 5. 2018 22:27:24

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,697

Re: Calc počítá chybně

Ten dotaz byl myšlen jinak :

#6 na konci napsal(a)

Zase rád ze dozvím něco nového, takže když uvedete postup, nebo i námět algoritmu budu rád a může to zajímat i mnoho jiných lidí.

     Nedomnívám se, že by šlo jen o jednorázový případ příkladu bez budoucí aplikace. Je to test nějaké konstrukce - SW. Není to akademická debata na téma matematických postupů. Spíš mne zajímalo k čemu to opravdu potřebujete. Je to Vaše věc. Ale uvedl jsem i zdroj kam chodím když si nevím rady, nebo hledám vývoj řešení problému.


     Celkem podivný se mi zdál Váš první příspěvek na konci Zajímalo by mě zda i Excel počítá takto, pak je to z důvodu kompatibility, nebo jestli je to pouze chyba Calcu.. Já jsem si jen dovolil vyjádřit, že v Calcu chyba není a že mi zadání připadá povědomé. To potvrzuje i "lp." pro Excel. Jsou to SW které prostě algebru nedávají - ale nemůžete je pokládat za rovnocenné se softy postavené k věděckým výpočtům a které tedy zvládají zejména algebru - ale nikdo je nepoužije doma ani v korporátním prostředí jako vylepšenou kalkulačku a tím se zabýváme zde na fóru.
     Samozřejmě hledá se řešení pro konkrétní účel a z nalezenáho konstruktoru se dá udělat efektivní funkce. Co je komu do toho - tak jsem dostal odpověď Jinak samozřejmě vzorec jsem do Calcu nepřepisoval, ale použil jsem známé Ctrl+C a Ctrl+V, případně oblíbenou variantu s prostředním tlačítkem myši. - a už jsem šel do kolen.
     Jen tak výrazy do buňky s alfabetickým znakem? To nemůže dopadnout. Takže bylo zřejmé, jen tak Ctrl+V to bylo vloženo do nějakého vzorce ale nevím který by to spolknul a nevyhodil chybu. Do Basicu by to šlo, když by ty proměnné byly deklarované (Basic také algebru imlicitně nezvládá) explicitně - alfabetické znaky jako proměnné spolkne ale nevyjádří neznámou. Musí se iterovat - nejspíš inkrementací, nebo dekrementací nějaké hodnoty.


     Ovšem že mi mohlo něco důležitého uniknout přestože Vy to pokládáte za samozřejmost. Pochopil jsem jen tolik, že jste uvažoval o "závorkování" abyste eliminoval algebraickou chybu Calcu. Vím z Vašeho prvního tématu že jste řešil nějaká pole pomocí vestavěných iterací - vzorcem. Potom zesa nějaké psané funkce. Ale s algebrou jsem se tady jako s dotazem ještě nepotkal. Proto jsem byl zvědavý - nic víc.

Editoval neutr (2. 5. 2018 22:27:49)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí